diff --git a/documentation/docs/tutorials/playwright-mcp.md b/documentation/docs/tutorials/playwright-mcp.md new file mode 100644 index 00000000..cca901f9 --- /dev/null +++ b/documentation/docs/tutorials/playwright-mcp.md @@ -0,0 +1,324 @@ +--- +title: Playwright Extension +description: Add Playwright MCP Server as a Goose Extension for Modern Web Testing +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import YouTubeShortEmbed from '@site/src/components/YouTubeShortEmbed'; + +This tutorial covers how to add the Playwright MCP Server as a Goose extension, to enable cross-browser testing and web automation across Chromium and Webkit. + +:::tip TLDR + + + [Launch the installer](goose://extension?cmd=npx&arg=-y&arg=@playwright/mcp@latest&id=playwright&name=Playwright&description=Modern%20web%20testing%20and%20automation) + + + **Command** + ```sh + npx -y @playwright/mcp@latest + ``` + + +::: + +## Configuration + +:::info +Note that you'll need [Node.js](https://nodejs.org/) installed on your system to run this command, as it uses `npx`. +::: + + + + 1. [Launch the installer](goose://extension?cmd=npx&arg=-y&arg=@playwright/mcp@latest&id=playwright&name=Playwright&description=Modern%20web%20testing%20and%20automation) + 2. Press `Yes` to confirm the installation + 3. Scroll to the top and click `Exit` from the upper left corner + + + 1. Run the `configure` command: + ```sh + goose configure + ``` + + 2. Choose to add a `Command-line Extension` + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Add Extension (Connect to a new extension) + │ + ◆ What type of extension would you like to add? + │ ○ Built-in Extension + │ ● Command-line Extension (Run a local command or script) + │ ○ Remote Extension + └ + ``` + + 3. Give your extension a name + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Add Extension (Connect to a new extension) + │ + ◇ What type of extension would you like to add? + │ Command-line Extension + │ + ◆ What would you like to call this extension? + │ Playwright + └ + ``` + + 4. Enter the command + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Add Extension (Connect to a new extension) + │ + ◇ What type of extension would you like to add? + │ Command-line Extension + │ + ◇ What would you like to call this extension? + │ Playwright + │ + ◆ What command should be run? + │ npx -y @playwright/mcp@latest + └ + ``` + + 5. Enter the number of seconds Goose should wait for actions to complete before timing out. Default is 300s + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Add Extension (Connect to a new extension) + │ + ◇ What type of extension would you like to add? + │ Command-line Extension + │ + ◇ What would you like to call this extension? + │ Playwright + │ + ◇ What command should be run? + │ npx -y @playwright/mcp@latest + │ + ◆ Please set the timeout for this tool (in secs): + │ 300 + └ + ``` + + 6. Choose to add a description. If you select "Yes" here, you will be prompted to enter a description for the extension. + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Add Extension (Connect to a new extension) + │ + ◇ What type of extension would you like to add? + │ Command-line Extension + │ + ◇ What would you like to call this extension? + │ Playwright + │ + ◇ What command should be run? + │ npx -y @playwright/mcp@latest + │ + ◇ Please set the timeout for this tool (in secs): + │ 300 + │ + ◆ Would you like to add a description? + │ No + └ + ``` + + 7. Choose No when asked to add environment variables + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Add Extension (Connect to a new extension) + │ + ◇ What type of extension would you like to add? + │ Command-line Extension + │ + ◇ What would you like to call this extension? + │ Playwright + │ + ◇ What command should be run? + │ npx -y @playwright/mcp@latest + │ + ◇ Please set the timeout for this tool (in secs): + │ 300 + │ + ◇ Would you like to add a description? + │ No + │ + ◆ Would you like to add environment variables? + │ No + │ + └ Added Playwright extension + ``` + + + +## Example Usage + +Let's use Goose with the Playwright extension to create a cross-browser testing suite. In this example, we'll demonstrate how Goose can help you: + +1. Test a web application across multiple browsers +2. Generate maintainable test code +3. Capture screenshots for visual comparison + +:::info LLM +Anthropic's Claude 3.5 Sonnet was used for this task. +::: + +### Goose Prompt +``` +Test the random redesign generator app (https://blackgirlbytes.github.io/random-redesign-picker/) +in Chromium and WebKit. For each browser: +1. Navigate to the page +2. Click the "Pick My Combo" button +3. Verify the text changes +4. Take a screenshot +Then generate a Playwright test that works across all browsers. +``` + +### Goose Output +``` +Let's start with Chromium: + +─── browser_navigate | playwright ────────────────────────── +url: https://blackgirlbytes.github.... + +Now let's wait for and click the button: + +─── browser_click | playwright ────────────────────────── +element: button with text "Pick My Combo" +ref: