webapp-testing

webapp-testing is a skill for Claude Code, Codex from floomhq/moto. It costs 35 tokens per session (830 once invoked), scanned A, original, MIT.

A Playwright-based toolkit for testing local web applications in a real browser. Playwright is software that automates browser actions, screenshots, and checks of the rendered page.

In plain words
What is it for?
Use it to start a local app, inspect its page, find reliable selectors, automate interactions, test behavior, capture screenshots, and review browser logs.
Why use it?
It helps verify what users actually see and do, especially when a page changes after loading. It also supports investigating interface problems through screenshots and browser logs.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to start a local app, inspect its page, find reliable selectors, automate interactions, test behavior, capture screenshots, and review browser logs.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/floomhq/moto/webapp-testing
View source ↗ floomhq/moto
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add floomhq/moto --skill webapp-testing
Clone the repo
git clone --depth 1 https://github.com/floomhq/moto

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for webapp-testing

README.md
[![agentmods](https://agentmods.dev/badge/skills/floomhq/moto/webapp-testing/github.svg)](https://agentmods.dev/skills/floomhq/moto/webapp-testing)
Your own site
<a href="https://agentmods.dev/skills/floomhq/moto/webapp-testing"><img src="https://agentmods.dev/badge/skills/floomhq/moto/webapp-testing/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for webapp-testing

Your own site · 80×15
<a href="https://agentmods.dev/skills/floomhq/moto/webapp-testing"><img src="https://agentmods.dev/badge/skills/floomhq/moto/webapp-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 35 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 830 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00035 $0.00830
Opus 5.5 $0.00014 $0.00332
Sonnet 5.5 $0.00007 $0.00166
Haiku 4.5 $0.00003 $0.00083

Measured 1mo ago against content hash 140d1bbf0780, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

webapp-testing scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

server = subprocess.Popen(["npm", "run", "dev"])
claude/skills/webapp-testing/SKILL.md · 132 lines

How it starts

The opening of the file, as written. The whole thing — 132 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Web Application Testing

To test local web applications, write native Python Playwright scripts.

Decision Tree: Choosing Your Approach

User task → Is it static HTML?
    ├─ Yes → Read HTML file directly to identify selectors
    │         ├─ Success → Write Playwright script using selectors
    │         └─ Fails/Incomplete → Treat as dynamic (below)
    │
    └─ No (dynamic webapp) → Is the server already running?
        ├─ No → Start the server first, then write Playwright script
        └─ Yes → Reconnaissance-then-action:
            1. Navigate and wait for networkidle
            2. Take screenshot or inspect DOM
            3. Identify selectors from rendered state
            4. Execute actions with discovered selectors

Starting a Server for Testing

# Start server in background, wait for it to be ready, then run automation
npm run dev &
sleep 3
python automation.py

Or manage the server lifecycle in the script itself:

import subprocess
import time

server = subprocess.Popen(["npm", "run", "dev"])
time.sleep(3)  # Wait for server to start

try:
    # Run automation
    pass
finally:
    server.terminate()

Basic Playwright Script

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto('http://localhost:5173')
    page.wait_for_load_state('networkidle')  # CRITICAL: Wait for JS to execute

    # Take screenshot for inspection
    page.screenshot(path='/tmp/inspect.png', full_page=True)

    # Inspect DOM
    content = page.content()

    # Execute actions
    page.click('button:has-text("Submit")')
    page.fill('input[name="email"]', '[email protected]')

    # Assert results
    assert page.locator('.success-message').is_visible()

    browser.close()

Reconnaissance-Then-Action Pattern

  1. Inspect rendered DOM:
    page.screenshot(path='/tmp/inspect.png', full_page=True)
    content = page.content()
    buttons = page.locator('button').all()
    

Read the full file on GitHub · 132 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 132 lines · 35 tokens per session scan A 140d1bbf0780

Subscribe to this mod's changes

webapp-testing is a skill published in the GitHub repository floomhq/moto (32 stars, last pushed 4mo ago), licensed MIT. It adds 35 tokens to every session and 830 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

webapp-testing

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.

codeclawd/fable-mode · 35 tokens

memstack-development-webapp-testing

Use when the user says 'write browser tests', 'test this page', 'playwright test', 'e2e test', 'end to end test', 'browser test', 'test the UI', or needs Playwright-based browser testing for a web application. Do NOT use for unit tests, API tests, or non-browser testing.

cwinvestments/memstack · 75 tokens

playwright

Playwright end-to-end testing best practices for web applications, covering test design, locator strategies, and assertion patterns.

Mindrally/skills · 26 tokens

playwright-cursor-rules

Expert guidance for Playwright end-to-end testing with TypeScript and JavaScript best practices.

Mindrally/skills · 24 tokens

browser-qa

A live browser quality-checking workflow that replays user journeys with Playwright-compatible scripts, screenshots, and reports. It stores test cases and run evidence under `.agents/qa/`.

VKirill/claude-lane-stack · 92 tokens

agent-e2e-test-specialist

Specialist subagent: Playwright, Cypress, and visual regression testing specialist. Use only when the user explicitly asks for E2E tests, browser test automation, or visual regression testing. Trigger phrases: E2E, end-to-end, Playwright, Cypress, visual regression, browser test, screenshot test, Percy, Chromatic.

travisjneuman/.claude · 76 tokens