CommunityRecherche & Datenanalysegithub.com

ComposioHQ/webapp-testing

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

Was ist webapp-testing?

Dieses Skill bietet ein Toolkit für Entwickler und KI-Agenten, um lokale Webanwendungen mithilfe von Playwright zu testen und zu debuggen. Es ist besonders nützlich, um Frontend-Funktionalitäten zu verifizieren, UI-Verhalten zu untersuchen und reproduzierbare Testabläufe zu erstellen. Das Skill unterstützt die Arbeit mit Python und Playwright und bietet Hilfsskripte (`scripts/with_server.py`) zur automatischen Serververwaltung, sodass sich Entwickler auf die Testlogik konzentrieren können. Ein Kernelement ist das 'Reconnaissance-Then-Action'-Muster: Der Agent navigiert zur Anwendung, wartet auf die vollständige Seitenladung (networkidle), erfasst Screenshots oder das DOM, identifiziert Selektoren und führt dann Aktionen aus. Das Skill ist plattformunabhängig und für alle lokalen Webanwendungen geeignet, die über eine URL erreichbar sind. Entscheidend ist die Vermeidung des häufigen Fehlers, das DOM vor dem networkidle-Ereignis zu inspizieren. Die gebündelten Skripte sollten als Blackboxen verwendet werden, um den Kontext nicht zu überlasten.

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

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Webanwendungstests

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 Nutzung zu sehen. Lesen Sie den Quelltext NICHT, bis Sie versucht haben, das Skript auszuführen, und festgestellt haben, dass eine angepasste Lösung unbedingt erforderlich ist. Diese Skripte können sehr groß sein und Ihren Kontextfenster verschmutzen. Sie sind dafür da, direkt als Blackbox-Skripte aufgerufen zu werden, anstatt in Ihr Kontextfenster aufgenommen zu werden.

Entscheidungsbaum: Auswahl des Ansatzes

Benutzeraufgabe → Ist es statisches HTML?
    ├─ Ja → HTML-Datei direkt lesen, um Selektoren zu identifizieren
    │         ├─ Erfolg → Playwright-Skript mit Selektoren schreiben
    │         └─ Fehler/Unvollständig → Als dynamisch behandeln (siehe unten)
    │
    └─ Nein (dynamische Webanwendung) → Läuft der Server bereits?
        ├─ Nein → Ausführen: python scripts/with_server.py --help
        │        Dann das Hilfsskript verwenden + vereinfachtes Playwright-Skript schreiben
        │
        └─ Ja → Reconnaissance-Then-Action:
            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 das Hilfsskript:

Einzelner Server:

python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.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 your_automation.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) # Starten Sie Chromium immer im Headless-Modus
    page = browser.new_page()
    page.goto('http://localhost:5173') # Server läuft bereits und ist bereit
    page.wait_for_load_state('networkidle') # KRITISCH: Warten auf JS-Ausführung
    # ... Ihre Automatisierungslogik
    browser.close()

Reconnaissance-Then-Action-Muster

  1. Gerendertes 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 das DOM inspizieren, bevor Sie auf networkidle bei dynamischen Anwendungen warten ✅ Doch auf page.wait_for_load_state('networkidle') warten, bevor Sie inspizieren

Best Practices

  • Verwenden Sie gebündelte Skripte als Blackboxen - Überlegen Sie bei einer Aufgabe, ob eines der Skripte in scripts/ helfen kann. Diese Skripte behandeln häufige, komplexe Workflows zuverlässig, ohne das Kontextfenster zu überladen. Verwenden Sie --help, um die Nutzung zu sehen, und rufen 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 angemessene Wartezeiten hinzu: page.wait_for_selector() oder page.wait_for_timeout()

Referenzdateien

  • examples/ - Beispiele, die gängige Muster zeigen:
    • element_discovery.py - Auffinden 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 Konsolenlogs während der Automatisierung

Individual skills in this repo

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

ComposioHQ/-21risk-automation

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

ComposioHQ/-2chat-automation

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

ComposioHQ/ably-automation

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

ComposioHQ/abstract-automation

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

ComposioHQ/abuselpdb-automation

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

ComposioHQ/abyssale-automation

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

ComposioHQ/accelo-automation

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

ComposioHQ/accredible-certificates-automation

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

ComposioHQ/acculynx-automation

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

ComposioHQ/active-campaign-automation

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

ComposioHQ/addresszen-automation

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

ComposioHQ/adobe-automation

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

ComposioHQ/adrapid-automation

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

ComposioHQ/adyntel-automation

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

ComposioHQ/aeroleads-automation

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

ComposioHQ/aero-workflow-automation

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

ComposioHQ/affinda-automation

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

ComposioHQ/affinity-automation

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

ComposioHQ/agencyzoom-automation

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

ComposioHQ/agent-deep-links

Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

Verwandte Skills