zartin790

webapp-testing

1
0
# Install this skill:
npx skills add zartin790/llm_system_template_agents_skills_patterns_tools_prompts --skill "webapp-testing"

Install specific skill from multi-skill repository

# Description

Toolkit for interacting with and testing local web applications using

# SKILL.md


name: webapp-testing
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.
license: Complete terms in LICENSE.txt


Web Application Testing

To test local web applications, write native Python Playwright scripts. Start required servers yourself (frontend/backend) before running automation.

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 (backend/frontend) in a separate shell
        │
        └─ 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: Starting a server and running Playwright

Start your app servers in separate shell(s), then run automation:

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:
    python 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

  • Keep automation focused - Prefer small, task-focused Playwright scripts and start/stop servers explicitly as needed.
  • 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

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.