Skip to content
cccskills
FreePublished on GitHubEnglish overview

webapp-testing

Test local web applications with Playwright, a browser automation tool. Check frontend functionality, investigate interface behavior, capture screenshots, and inspect browser logs, with a helper script that manages one or more application servers during testing.

OriginalShow the original description

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.

Works withPlaywright
AI rating90/ 100See how to install

Good for

  • Checking buttons and forms in a local web app
  • Investigating interface problems with screenshots and logs
  • Testing with both frontend and backend servers running
  • Automating interactions with a local HTML file

Overview

What it does

webapp-testing operates locally running web applications through a browser to check interface features and behavior. It creates Python scripts using Playwright, a browser automation tool, to interact with buttons and input fields, capture screenshots, and inspect browser logs. The included scripts/with_server.py manages starting and stopping one or more servers needed for testing.

When it helps

Use it to check whether an interface under development behaves as expected, or to investigate display and interaction problems. It supports both static HTML and dynamic web applications. For dynamic pages, it waits for loading to finish and examines the rendered content before identifying the elements to interact with.

Example requests

  • “Check that the buttons and input fields in this local web application work correctly.”
  • “Capture screenshots and console logs to investigate the bug.”
  • “Start the frontend and backend, then test the interface.”

Notes

You need an environment that can run Python and Playwright. The examples use Chromium in headless mode, without displaying a browser window. See LICENSE.txt for full license details.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Objective evaluation

AI rated this skill on four points using only the contents of its SKILL.md. Stars and popularity are not taken into account.

Clear instructionsIs it clear when to use it and what it does?
AGoodIt explicitly covers local web application checks, interface investigation, screenshots, and browser logs.
Concrete stepsAre steps, inputs, outputs, and examples spelled out?
AGoodIt provides static and dynamic page branches, multi-server startup examples, and code for waiting and interacting.
SafetyAre sending data, deleting files, and running commands disclosed?
AGoodIt limits the target to local applications and explicitly covers server lifecycle management and browser closure.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingExamples use Python, Playwright, and Chromium, but installation instructions are not provided.

The total counts each point as A = 25, B = 15, C = 5. Rated by AI (OpenAI Codex) as of Oct 20, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (6)

  • SKILL.md3.8 KB
  • examples/console_logging.py1.0 KB
  • examples/element_discovery.py1.4 KB
  • examples/static_html_automation.py953 B
  • LICENSE.txt11.1 KB
  • scripts/with_server.py3.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Web Application Testing

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

Helper Scripts Available:

  • scripts/with_server.py - Manages server lifecycle (supports multiple servers)

Always run scripts with --help first to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.

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 → Run: python scripts/with_server.py --help
        │        Then use the helper + write simplified 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

Example: Using with_server.py

To start a server, run --help first, then use the helper:

Single server:

python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py

Multiple servers (e.g., backend + frontend):

python scripts/with_server.py \
  --server "cd backend && python server.py" --port 3000 \
  --server "cd frontend && npm run dev" --port 5173 \
  -- python your_automation.py

To create an automation script, include only Playwright logic (servers are managed automatically):

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True) # Always launch chromium in headless mode
    page = browser.new_page()
    page.goto('http://localhost:5173') # Server already running and ready
    page.wait_for_load_state('networkidle') # CRITICAL: Wait for JS to execute
    # ... your automation logic
    browser.close()

Reconnaissance-Then-Action Pattern

  1. Inspect rendered DOM:

    page.screenshot(path='/tmp/inspect.png', full_page=True)
    content = page.content()
    page.locator('button').all()
    
  2. Identify selectors from inspection results

  3. Execute actions using discovered selectors

Common Pitfall

❌ Don't inspect the DOM before waiting for networkidle on dynamic apps ✅ Do wait for page.wait_for_load_state('networkidle') before inspection

Best Practices

  • Use bundled scripts as black boxes - To accomplish a task, consider whether one of the scripts available in scripts/ can help. These scripts handle common, complex workflows reliably without cluttering the context window. Use --help to see usage, then invoke directly.
  • Use sync_playwright() for synchronous scripts
  • Always close the browser when done
  • Use descriptive selectors: text=, role=, CSS selectors, or IDs
  • Add appropriate waits: page.wait_for_selector() or page.wait_for_timeout()

Reference Files

  • examples/ - Examples showing common patterns:
    • element_discovery.py - Discovering buttons, links, and inputs on a page
    • static_html_automation.py - Using file:// URLs for local HTML
    • console_logging.py - Capturing console logs during automation

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

academy-guide

FreeSummaryAI rating 100

Find Claude Academy learning resources that closely match questions about using Claude, its features, or team adoption. It supplements direct answers with a small selection of relevant courses, tutorials, worked examples, or product learning hubs.

  • Find resources for getting started with Claude
  • Learn how to use a specific Claude feature
  • Choose learning materials for team adoption
anthropics/skills182.2KUpdated Oct 10, 2026

algorithmic-art

FreeSummaryAI rating 90

Create original generative art with p5.js, using particles, mathematical rules, and controlled randomness. Explore variations through interactive controls, reproduce results with a seed value, and save the artwork as a PNG.

  • Creating original art with code
  • Exploring particle motion and flow fields
  • Comparing variations by changing seeds and parameters
anthropics/skills182.2KUpdated Oct 10, 2026

brand-guidelines

FreeSummaryAI rating 90

Apply Anthropic's brand colors and typography to visual materials. The skill specifies heading and body fonts, background-aware text colors, and accents for shapes, with fallback fonts when Poppins and Lora are unavailable.

  • Styling materials with Anthropic's brand colors
  • Unifying heading and body fonts
  • Adjusting text colors for light and dark backgrounds
anthropics/skills182.2KUpdated Oct 10, 2026

canvas-design

FreeSummaryAI rating 90

Create original posters and static artwork by first defining a visual direction, then expressing it through color, shapes, spacing, and restrained text. Deliverables include PNG or PDF artwork and a Markdown document explaining the design philosophy.

  • Creating an original poster around a theme
  • Making abstract artwork with minimal text
  • Documenting a visual direction alongside finished artwork
anthropics/skills182.2KUpdated Oct 10, 2026

claude-api

FreeSummaryAI rating 70

Guides implementation and maintenance of Claude applications using language-specific references and official SDKs, the libraries used to call the API. Covers tool integration, streaming responses, model migration, cost reviews, prompt audits, and evaluation workflows.

  • Adding Claude API calls to an application
  • Building an agent that uses custom tools
  • Migrating existing Claude integrations to another model
anthropics/skills182.2KUpdated Oct 10, 2026

discernment-nudge

FreeSummaryAI rating 100

Add two or three specific follow-up questions after actionable advice, plans, estimates, or analysis. The questions help users examine facts, reasoning, and missing context before acting, with clear exclusions and a limit of once per conversation.

  • Examining assumptions behind cost or timeline estimates
  • Checking reasoning behind a recommended plan
  • Spotting missing context in proposals or email drafts
anthropics/skills182.2KUpdated Oct 10, 2026

See all skills by anthropics

Report a problem with this skill