Community研究&データ分析github.com

Webアプリケーションテスト

Playwrightを使用してローカルWebアプリケーションと対話し、テストするためのツールキット。フロントエンド機能の検証、UI動作のデバッグ、ブラウザスクリーンショットの撮影、ブラウザログの表示をサポートします。

Webアプリケーションテスト とは?

このスキルは、Playwrightを活用してローカルWebアプリケーションをテスト・操作するための包括的なツールキットです。開発者は、静的なHTMLファイルの解析から動的なWebアプリの操作まで、段階的な意思決定ツリーに従って効率的にテストを進めることができます。主な機能として、サーバーライフサイクルを自動管理する`scripts/with_server.py`ヘルパースクリプト、動的アプリ向けの「偵察→行動」パターン、そして実際の使用例を示すリファレンススクリプトが含まれています。Playwrightはヘッドレスクロームモードで動作し、ネットワークアイドル状態を待機してからDOMの検査や操作を行うことで、動的なフロントエンドのテストを確実に実行できます。このスキルは主にCLI環境向けに設計されており、スクリプトはブラックボックスとして使用することを推奨し、コンテキストウィンドウの汚染を防ぎます。

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

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Webアプリケーションテスト は何をしますか?

ローカルWebアプリケーションをテストするには、ネイティブのPython Playwrightスクリプトを作成してください。

利用可能なヘルパースクリプト:

  • scripts/with_server.py - サーバーのライフサイクルを管理します(複数サーバー対応)

スクリプトはまず --help を付けて実行し、使い方を確認してください。カスタマイズした解決策が絶対に必要だと分かるまでは、ソースを読まないでください。これらのスクリプトは非常に大きくなる可能性があり、コンテキストウィンドウを汚染します。これらはコンテキストウィンドウに取り込むのではなく、ブラックボックスとして直接呼び出すために存在します。

意思決定ツリー:アプローチの選択

ユーザータスク → 静的HTMLか?
    ├─ はい → HTMLファイルを直接読み取り、セレクターを特定する
    │         ├─ 成功 → セレクターを使用してPlaywrightスクリプトを作成
    │         └─ 失敗/不完全 → 動的(以下)として扱う
    │
    └─ いいえ(動的Webアプリ)→ サーバーは既に実行中か?
        ├─ いいえ → 実行: python scripts/with_server.py --help
        │        その後、ヘルパーを使用し、簡略化したPlaywrightスクリプトを作成
        │
        └─ はい → 偵察→行動パターン:
            1. 移動し、networkidleを待機
            2. スクリーンショットを撮るかDOMを検査
            3. レンダリングされた状態からセレクターを特定
            4. 特定されたセレクターでアクションを実行

例:with_server.pyの使用

サーバーを起動するには、最初に --help を実行し、次にヘルパーを使用します:

単一サーバー:

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

複数サーバー(例:バックエンド+フロントエンド):

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

自動化スクリプトを作成するには、Playwrightロジックのみを含めてください(サーバーは自動管理されます):

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True) # 常にchromiumをヘッドレスモードで起動
    page = browser.new_page()
    page.goto('http://localhost:5173') # サーバーは既に実行中で準備完了
    page.wait_for_load_state('networkidle') # 重要:JavaScriptの実行を待機
    # ... あなたの自動化ロジック
    browser.close()

偵察→行動パターン

  1. レンダリングされたDOMを検査:

    page.screenshot(path='/tmp/inspect.png', full_page=True)
    content = page.content()
    page.locator('button').all()
    
  2. 検査結果からセレクターを特定

  3. 特定されたセレクターを使用してアクションを実行

よくある落とし穴

❌ やってはいけない:動的アプリで networkidle を待機する前にDOMを検査する ✅ やるべき:検査の前に page.wait_for_load_state('networkidle') を待機する

ベストプラクティス

  • バンドルされたスクリプトをブラックボックスとして使用 - タスクを達成するために、scripts/ で利用可能なスクリプトが役立つかどうかを検討してください。これらのスクリプトは、共通の複雑なワークフローを確実に処理し、コンテキストウィンドウを乱雑にしません。--help で使い方を確認し、直接呼び出してください。
  • 同期的なスクリプトには sync_playwright() を使用
  • 終了時は必ずブラウザを閉じる
  • 説明的なセレクターを使用:text=、role=、CSSセレクター、またはID
  • 適切な待機を追加:page.wait_for_selector() または page.wait_for_timeout()

リファレンスファイル

  • examples/ - 一般的なパターンを示す例:
    • element_discovery.py - ページ上のボタン、リンク、入力フィールドを発見する
    • static_html_automation.py - ローカルHTMLにfile:// URLを使用する
    • console_logging.py - 自動化中のコンソールログをキャプチャする

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.

関連スキル