qa-web
Skill274 starsChanged 8 months agoMITView on GitHub
QA test skill for web applications using agent-browser. Tests forms, navigation, responsive layouts, state persistence via cookies/localStorage, and visual regression. The web counterpart to agent-device — together they cover native + web testing. Invoke when user says "test the web app", "test localhost", "QA the website", "test the form", "verify responsive layout", "run web tests", "test browser", or any task requiring automated web application testing.
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- solo-ist/prosetheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- solo-ist/prose★ 8same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agent-browserSkill
- autoresearchSkill
- building-native-uiSkill
- expo-api-routesSkill
- expo-cicd-workflowsSkill
- expo-deploymentSkill
- expo-dev-clientSkill
- expo-tailwind-setupSkill
- expo-ui-jetpack-composeSkill
- expo-ui-swift-uiSkill
- just-bashSkill
- nano-bananaSkill
- native-data-fetchingSkill
- qa-device-managementSkill
- qa-scrollSkill
- qa-setupSkill
- qa-state-persistenceSkill
- qa-test-flowsSkill
- slack-webSkill
- upgrading-expoSkill
- use-domSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 29
Every web test follows the same pattern as native tests:
- Distinctive: line 33
Interact: Use refs to click, fill, select
- Distinctive: line 34
Re-snapshot: After navigation/DOM changes, get fresh refs
- Distinctive: line 35
Assert: Verify URL, text, element state
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
qa-web
Web application QA testing using agent-browser. The web counterpart to agent-device — together they provide full coverage for apps with both native and web versions.
When to Use
| Scenario | Tool |
| Test native iOS/Android app | agent-device + CDP |
| Test web app / localhost | agent-browser (this skill) |
| Test React Native Web | agent-browser (this skill) |
| Test responsive layouts | agent-browser (this skill) |
| Test forms and navigation | agent-browser (this skill) |
Core Workflow
Every web test follows the same pattern as native tests:
- Navigate:
agent-browser open <url> - Snapshot:
agent-browser snapshot -i(get element refs) - Interact: Use refs to click, fill, select
- Re-snapshot: After navigation/DOM changes, get fresh refs
- Assert: Verify URL, text, element state
agent-browser open http://localhost:3000/login
agent-browser snapshot -i
# Output: @e1 [input type="email"], @e2 [input type="password"], @e3 [button] "Sign In"
agent-browser fill @e1 "user@example.com"
agent-browser fill @e2 "password123"
agent-browser click @e3
agent-browser wait --load networkidle
agent-browser snapshot -i # Check resultConfiguration
Set web-specific values in qa.config.sh:
export WEB_BASE_URL="http://localhost:3000" # Your web app URL
export WEB_SESSION="qa" # Browser session name
export WEB_VIEWPORT_WIDTH=1280 # Default viewport
export WEB_VIEWPORT_HEIGHT=720Usage
Run example web test
bash .pi/skills/qa-automation/qa-web/run.shRun with headed browser (see what's happening)
export WEB_HEADED=true
bash .pi/skills/qa-automation/qa-web/flows/example-web-test.shHelper Library — web-helpers.sh
Source this in your web test scripts for consistent patterns:
source .pi/skills/qa-automation/qa-web/lib/web-helpers.shAvailable Functions
| Function | Purpose |
web_open "url" | Navigate to URL |
web_snapshot | Get interactive element refs |
web_click "ref_or_selector" | Click element |
web_fill "ref" "text" | Fill input field |
web_select "ref" "value" | Select dropdown option |
web_wait "selector_or_ms" | Wait for element/time |
web_screenshot "name" | Screenshot with naming convention |
web_get_text "ref" | Get element text |
web_get_url | Get current URL |
web_get_title | Get page title |
web_is_visible "ref" | Check element visibility |
web_assert_url "pattern" | Assert URL matches pattern |
web_assert_title "text" | Assert page title |
web_assert_text "text" | Assert text visible on page |
web_scroll "direction" [px] | Scroll page |
web_save_state "file" | Save cookies/storage |
web_load_state "file" | Restore saved state |
Test Patterns
Form Testing
source web-helpers.sh
web_open "$WEB_BASE_URL/signup"
web_snapshot
web_fill @e1 "Jane Doe"
web_fill @e2 "jane@example.com"
web_fill @e3 "password123"
web_select @e4 "California"
web_click @e5 # Submit
web_wait --load networkidle
web_assert_url "**/dashboard"
web_assert_text "Welcome, Jane"
web_screenshot "signup-success"Navigation Testing
web_open "$WEB_BASE_URL"
web_snapshot
# Click nav links
web_click @e3 # "About" link
web_assert_url "**/about"
web_screenshot "about-page"
# Go back
agent-browser back
web_assert_url "**/"Responsive Testing
# Desktop
agent-browser set viewport 1440 900
web_open "$WEB_BASE_URL"
web_screenshot "desktop-home"
# Tablet
agent-browser set viewport 768 1024
web_screenshot "tablet-home"
# Mobile
agent-browser set viewport 375 812
web_screenshot "mobile-home"State Persistence (Cookies/Storage)
# Login and save state
web_open "$WEB_BASE_URL/login"
web_fill @e1 "user@example.com"
web_fill @e2 "password"
web_click @e3
web_wait --load networkidle
web_save_state "/tmp/qa-auth-state.json"
# Reuse in future tests
web_load_state "/tmp/qa-auth-state.json"
web_open "$WEB_BASE_URL/dashboard"
web_assert_text "Welcome" # Still logged inAccessibility Testing
web_open "$WEB_BASE_URL"
agent-browser snapshot # Full a11y tree
agent-browser screenshot --full /tmp/qa-full-page.pngFile Structure
qa-web/
├── SKILL.md # This file
├── lib/
│ └── web-helpers.sh # Web test helper functions
├── flows/
│ └── example-web-test.sh # Example test
└── run.sh # RunnerIntegration with Native Tests
For apps with both native and web versions, use both tools in the same test run:
# Test native app
bash .pi/skills/qa-automation/qa-scroll/run.sh
# Test web app
bash .pi/skills/qa-automation/qa-web/run.sh
# Both results in /tmp/qa-tests/Troubleshooting
| Problem | Solution |
| "agent-browser: command not found" | Install: npm install -g agent-browser |
| Browser launches but page is blank | Check URL and dev server: curl $WEB_BASE_URL |
| Refs invalidated after click | Always re-snapshot after navigation/DOM changes |
| Can't access localhost | agent-browser runs locally — it CAN access localhost (unlike web_remote) |
| Headed mode not showing | Set export WEB_HEADED=true before running |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

