Testagent Browser Testing

Functional testing of web products using Playwright MCP, browser-use CLI, and the openclaw built-in browser, following a full testing SOP — planning, executi...

wangyin717

@wangyin717

What This Skill Does

Automated functional testing agent for web products that follows a full SOP — planning, executing tests, logging bugs with screenshots, and generating reports. Uses Playwright MCP, browser-use CLI, and the openclaw built-in browser.

Replaces manual QA workflows by autonomously executing a structured testing process from exploration to bug reporting.

When to Use It

  • Run a full test cycle on a new web feature before release
  • Verify form validation and error handling on a signup or checkout page
  • Test cross-browser or viewport responsiveness of a web application
  • Log bugs with screenshots and generate a structured test report
  • Automate regression testing for a web product after a code change

Install

$ openclaw skills install @wangyin717/testagent-browser-testing

Browser Testing

⚠️ Ground rules (must be confirmed before every test — do not skip)

1. Screenshots must use Playwright MCP — never the built-in browser's screenshot The built-in browser's browser screenshot only returns AI analysis text; MEDIA: can't render it, so the user won't see the image. The only correct way to take a screenshot: playwright__browser_take_screenshot → save to a file → MEDIA:<path>

2. Before using the built-in browser, check the ssrfPolicy allowlist first The target domain and the login domain (Auth0, etc.) must be in allowedHostnames in ~/.openclaw/openclaw.json, or navigation will fail with blocked by policy. After changing the config, you must run the full restart sequence: browser stopgateway restart → wait 15 seconds → browser start

3. For font/environment issues, first check whether browser-setup has been run — don't troubleshoot manually For environment issues like mojibake in Chinese text or browser startup timeouts, first run bash testagent-browser-setup/scripts/setup.sh rather than manually installing fonts or debugging step by step.


Testing SOP

Phase 1: Gather startup info

After receiving a testing request, only ask for information that can't be obtained on your own before logging in:

  1. Target URL (if not provided by the user)
  2. Test account and password (for login)
  3. Test goal description (e.g. "test the create-team feature")

Don't ask about product details (field formats, required fields, secondary accounts, etc.) before you've seen the product — those you can check yourself after logging in.

Phase 2: Explore the product and draft a test plan (requires user confirmation)

  1. Pick the primary tool per REFERENCE.md tool selection
  2. If using the built-in browser, before navigating, confirm that browser.ssrfPolicy.allowedHostnames in ~/.openclaw/openclaw.json already includes the target domain and login domain; if not, add them and run the full restart sequence first (see REFERENCE.md pitfalls), then navigate
  3. Navigate to the target URL and log in automatically
  4. Viewport check (mandatory, use your own judgment): take a screenshot with Playwright MCP and judge for yourself whether the page is suitable for testing:
    • If content looks cramped, elements overlap, buttons are obscured, or the sidebar is crowding the main content area → run playwright__browser_resize → width=1440, height=900, then screenshot again to confirm
    • If the page looks fine → proceed directly
    • No need to ask the user — decide on your own whether to adjust
  5. Browse the target feature area to understand the actual page structure and interactions
  6. Based on the real page, produce 3-5 test points, and wait for the user to confirm or revise them before starting execution
(after logging in and viewing the product) I plan to test the following scenarios — let me know if this works:
1. Create team — fill in the name and required fields, verify creation succeeds
2. Form validation — check whether empty required fields show a prompt
3. Send a message within the team — verify the message displays correctly
4. Boundary input — behavior when the team name is excessively long

Only ask the user for additional info at this stage if exploration reveals it's genuinely needed (e.g. a test scenario requires a second account, or specific test data).

Phase 3: Execute the tests (fully autonomous, don't interrupt the user)

  • Execute each test point one by one
  • Screenshot a bug the moment it's found — don't save it for the end (page state can change at any time)
  • Screenshot naming: /root/.openclaw/workspace/bug_<number>_<short description>.png
  • If the same action fails 2-3 times, switch tools or strategy immediately (see REFERENCE.md pitfalls)

Phase 4: Produce the test report

Once all test points are complete, output the full report in chat (format in REFERENCE.md report format).

Phase 5: Confirm filing into Coding (requires user confirmation)

After the report, ask:

Should these N bugs be filed into Coding?
You can adjust the suggested priority, assignee, or timeline, then reply "file it", or specify a change to a particular one.

Once the user confirms, call the coding-net skill's create_issue to bulk-file the bugs:

  • issue_type="DEFECT"
  • priority: per the priority rules (see REFERENCE.md)
  • due_date: today's date + the suggested fix timeline (in days)
  • assignee_id: look up the member ID per the assignment rules in AGENTS.md (using get_team_members_id_and_name or extract_members_from_issue_list)

Once filed, output the Coding issue number for each bug.


For detailed tool comparisons, screenshot workflow, and report templates, see REFERENCE.md

Top skills in this category

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

12941k

Scrapling Official Skill

@d4vinci

Scrape web pages using Scrapling with anti-bot bypass (like Cloudflare Turnstile), stealth headless browsing, spiders framework, adaptive scraping, and JavaScript rendering. Use when asked to scrape, crawl, or extract data from websites; web_fetch fails; the site has anti-bot protections; write Pyth

2814k

Agent Browser Core

@codedao12

OpenClaw skill for the agent-browser CLI (Rust-based with Node.js fallback) enabling AI-friendly web automation with snapshots, refs, and structured commands.

2214k

Polymarket

@mvanhorn

Query and trade on Polymarket prediction markets — check odds, trending markets, search events, view order books, place trades, and manage positions. Now ava...

249.7k

Last30days Skill

@mvanhorn

Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, G...

208.6k