CommunityCodierung & Entwicklunggithub.com

Web-App-Testing

Toolkit für die Interaktion mit und das Testen lokaler Webanwendungen mit Playwright. Unterstützt die Überprüfung der Frontend-Funktionalität, das Debuggen des UI-Verhaltens, das Erfassen von Browser-Screenshots und das Anzeigen von Browser-Logs.

Was ist Web-App-Testing?

Dieses Skill bietet ein umfassendes Toolkit zum Testen lokaler Webanwendungen unter Verwendung von Playwright und Python. Es vereinfacht die Verwaltung von Serverlebenszyklen durch ein Hilfsskript (`with_server.py`), das einen oder mehrere Server starten und stoppen kann, während die Testautomatisierung ausgeführt wird. Der Skill fördert einen zweistufigen Ansatz: Zuerst wird der gerenderte DOM analysiert (z.B. durch Screenshots und Inhaltsabfragen), um die korrekten Selektoren zu identifizieren, bevor Aktionen ausgeführt werden. Dies verhindert typische Fehler bei dynamischen Webseiten, die JavaScript nachladen. Der Skill enthält außerdem eine Entscheidungsmatrix, die je nach Art der Anwendung (statisch vs. dynamisch) den optimalen Weg vorgibt. Besonders nützlich ist die direkte Integration mit Entwickler-Workflows – die Hilfsskripte werden als Blackboxen verwendet, um den Kontext nicht zu überladen. Der Skill ist für Entwickler gedacht, die in CI/CD-Pipelines oder lokalen Entwicklungsumgebungen automatisierte UI-Tests durchführen möchten, und unterstützt gängige Plattformen wie Claude Code und Cursor.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-claude-skills/tree/master/webapp-testing

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Testen von Webanwendungen

Zum Testen lokaler Webanwendungen schreiben Sie native Python-Playwright-Skripte.

Verfügbare Hilfsskripte:

  • scripts/with_server.py – Verwaltet den Serverlebenszyklus (unterstützt mehrere Server)

Führen Sie Skripte immer zuerst mit --help aus, um die Verwendung zu sehen. Lesen Sie den Quellcode erst, wenn Sie das Skript zuerst ausgeführt haben und feststellen, dass eine angepasste Lösung absolut notwendig ist. Diese Skripte können sehr groß sein und somit Ihren Kontextfenster verschmutzen. Sie existieren, um direkt als Blackbox-Skripte aufgerufen zu werden, anstatt in Ihren Kontext aufgenommen zu werden.

Entscheidungsbaum: Wahl Ihres Ansatzes

Benutzeraufgabe → Ist es statisches HTML?
    ├─ Ja → HTML-Datei direkt lesen, um Selektoren zu identifizieren
    │         ├─ Erfolg → Playwright-Skript mit Selektoren schreiben
    │         └─ Fehlschlag/Unvollständig → Als dynamisch behandeln (siehe unten)
    │
    └─ Nein (dynamische Web-App) → Läuft der Server bereits?
        ├─ Nein → Ausführen: python scripts/with_server.py --help
        │        Dann den Helfer verwenden + vereinfachtes Playwright-Skript schreiben
        │
        └─ Ja → Erkundung-dann-Aktion:
            1. Navigieren und auf networkidle warten
            2. Screenshot machen oder DOM inspizieren
            3. Selektoren aus dem gerenderten Zustand identifizieren
            4. Aktionen mit den entdeckten Selektoren ausführen

Beispiel: Verwendung von with_server.py

Um einen Server zu starten, führen Sie zuerst --help aus, dann verwenden Sie den Helfer:

Einzelner Server:

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

Mehrere Server (z. B. Backend + Frontend):

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

Um ein Automatisierungsskript zu erstellen, fügen Sie nur Playwright-Logik ein (Server werden automatisch verwaltet):

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True) # Chromium immer im Headless-Modus starten
    page = browser.new_page()
    page.goto('http://localhost:5173') # Server läuft bereits und ist bereit
    page.wait_for_load_state('networkidle') # KRITISCH: Warten, bis JS ausgeführt wurde
    # ... Ihre Automatisierungslogik
    browser.close()

Erkundung-dann-Aktion-Muster

  1. Gerenderten DOM inspizieren:

    page.screenshot(path='/tmp/inspect.png', full_page=True)
    content = page.content()
    page.locator('button').all()
    
  2. Selektoren aus den Inspektionsergebnissen identifizieren

  3. Aktionen mit den entdeckten Selektoren ausführen

Häufiger Fehler

❌ Nicht den DOM inspizieren, bevor Sie bei dynamischen Apps auf networkidle warten ✅ Doch vor der Inspektion auf page.wait_for_load_state('networkidle') warten

Best Practices

  • Verwenden Sie gebündelte Skripte als Blackboxen – Überlegen Sie bei einer Aufgabe, ob eines der in scripts/ verfügbaren Skripte helfen kann. Diese Skripte behandeln häufige, komplexe Workflows zuverlässig, ohne den Kontextfenster zu überladen. Verwenden Sie --help, um die Verwendung zu sehen, und rufen Sie sie dann direkt auf.
  • Verwenden Sie sync_playwright() für synchrone Skripte
  • Schließen Sie den Browser immer, wenn Sie fertig sind
  • Verwenden Sie beschreibende Selektoren: text=, role=, CSS-Selektoren oder IDs
  • Fügen Sie geeignete Wartezeiten hinzu: page.wait_for_selector() oder page.wait_for_timeout()

Referenzdateien

  • examples/ – Beispiele, die häufige Muster zeigen:
    • element_discovery.py – Entdecken von Schaltflächen, Links und Eingabefeldern auf einer Seite
    • static_html_automation.py – Verwendung von file://-URLs für lokales HTML
    • console_logging.py – Erfassen von Konsolenprotokollen während der Automatisierung

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

agent-mail-automation

Automate Agent Mail tasks via Rube MCP (Composio). Always search tools first for current schemas.

agentql-automation

Automate Agentql tasks via Rube MCP (Composio). Always search tools first for current schemas.

agenty-automation

Automate Agenty tasks via Rube MCP (Composio). Always search tools first for current schemas.

Verwandte Skills