Loading...
Loading...
Automated web QA skill: analyzes a website or project, generates end-user use cases, derives a structured test plan, executes tests via Playwright browser automation, and produces a full HTML/Markdown QA report with screenshots and pass/fail results. TRIGGER this skill whenever the user asks to: test a website, run QA on a web app, check if a site works, find bugs on a site, validate a web project, create a test plan for a website, run functional tests, check a landing page, audit a web app for issues, test user flows — or any variation of "проверить сайт", "протестировать сайт", "QA сайта", "тест веб-приложения", "найти баги на сайте". Even if the user just says "посмотри работает ли всё нормально на сайте" — use this skill.
npx skill4agent add biggora/claude-plugins-registry test-web-uiPhase 1 → DISCOVERY : Explore the site, understand its purpose and features
Phase 2 → USE CASES : Generate end-user use case list
Phase 3 → TEST PLAN : Convert use cases into concrete, executable test cases
Phase 4 → EXECUTION : Run tests with Playwright, capture screenshots
Phase 5 → REPORT : Compile HTML + Markdown report with all resultsmcp__plugin_playwright_playwright__*browser_navigate → navigate to URL
browser_snapshot → get page state and element refs
browser_take_screenshot → capture screenshots
browser_click → click elements
browser_type → type into inputs
browser_evaluate → run JS assertions
browser_resize → test mobile viewports
browser_console_messages → check for JS errors@playwright/clinpm install -g @playwright/cli@latest# Open a page
playwright-cli open https://example.com
# Take a snapshot (returns element refs for interaction)
playwright-cli snapshot
# Screenshot the page
playwright-cli screenshot
# Click, fill forms, type
playwright-cli click <ref>
playwright-cli fill <ref> "text value"
playwright-cli type "search query"
playwright-cli press Enter
# Mobile viewport testing — use a named session with mobile config
playwright-cli -s=mobile open https://example.com
# (configure viewport in .playwright/cli.config.json)
# Check console errors via snapshot output
playwright-cli snapshot
# Close when done
playwright-cli close--headedplaywright-cli showscripts/# Install if needed
pip install playwright && playwright install chromium
# Run discovery
python scripts/discover.py --url <URL> --output discovery.json
# Run tests
python scripts/run_tests.py --url <URL> --test-plan test_plan.json --output test_results/
# Generate report
python scripts/generate_report.py --results test_results/results.json --output qa_report.htmlcurlfetch1. browser_navigate to the URL
2. browser_snapshot to get the page structure
3. browser_take_screenshot for visual reference
4. Examine links, forms, headings, navigation from the snapshot
5. Navigate to discovered subpages and repeatplaywright-cli open <URL>
playwright-cli screenshot --name discovery_home
playwright-cli snapshot
# Examine snapshot output for links, forms, navigation, headings
# Follow important links to discover subpages
playwright-cli goto <subpage-url>
playwright-cli screenshot --name discovery_subpagepython scripts/discover.py --url <URL> --max-pages 10 --output discovery.jsonpython -m http.server 8080 --directory <project-path>npx serve <project-path>http://localhost:8080file://UC-01: [Actor] can [action] so that [goal]
UC-02: [Actor] can [action] so that [goal]
...TC-01 [UC-01]: Homepage Navigation
Given: User opens the site root URL
When: Page finishes loading
Then: - Page title is not empty
- Navigation menu is visible
- Logo/brand element is present
- No 404/500 status code
Checks: title, nav links count > 0, hero text present| Type | Examples |
|---|---|
| Presence checks | Element exists, text is visible, image loads |
| Functional checks | Button clickable, form submits, menu expands |
| Data validation | Price format, phone format, required fields |
| Navigation checks | Links don't 404, routing works |
| Form validation | Empty submit shows errors, valid submit succeeds |
| Responsiveness | Mobile viewport renders without overflow |
| Console errors | No JS errors on page load |
| Accessibility basics | Images have alt text, headings hierarchy, landmarks |
test_plan.jsonreferences/test_case_schema.mdbrowser_navigate to target URL
browser_take_screenshot for "before" capture
browser_snapshot to check element presence
browser_evaluate to run JS assertions:
- document.title !== ''
- document.querySelectorAll('nav').length > 0
- document.querySelectorAll('img').filter(i => i.naturalWidth === 0).length
browser_click / browser_type for interactions
browser_take_screenshot for "after" capture
browser_console_messages to check for JS errors
browser_resize for mobile viewport testing# Navigate and screenshot
playwright-cli goto <URL>
playwright-cli screenshot --name tc01_before
# Get page state for assertions
playwright-cli snapshot
# Parse snapshot output to verify elements exist, text content matches, etc.
# Interact
playwright-cli click <ref>
playwright-cli fill <ref> "test@example.com"
playwright-cli press Enter
# After screenshot
playwright-cli screenshot --name tc01_afterplaywright-clipython scripts/run_tests.py \
--url <URL> \
--test-plan test_plan.json \
--output test_results/browser_console_messagesbrowser_evaluateplaywright-cliArray.from(document.images)
.filter(img => img.naturalWidth === 0 && img.src && !img.src.startsWith('data:'))
.map(img => img.src)// Images missing alt text
document.querySelectorAll('img:not([alt]), img[alt=""]').length
// Heading hierarchy (should have h1, not skip levels)
[...document.querySelectorAll('h1,h2,h3,h4,h5,h6')].map(h => h.tagName)
// Landmark elements
document.querySelectorAll('main, nav, header, footer, [role]').lengthpython scripts/generate_report.py \
--results test_results/results.json \
--screenshots test_results/screenshots/ \
--output qa_report.html1. Receive URL or project files from user
2. Pick your execution tool (MCP > Playwright CLI > Python > Manual)
3. Run discovery → understand pages, structure, features
4. Generate use case list (10–25 use cases)
5. Generate test plan → structured test cases
6. Run tests → collect results + screenshots
7. Generate HTML report
8. Show the report path to the userpython -m http.server 8080npx serve .http://localhost:8080file://fetch()document.body.scrollWidth > window.innerWidthreferences/test_case_schema.mdscripts/discover.pyscripts/run_tests.pyscripts/generate_report.py