Communityコーディング&開発github.com

webapp-testing

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

webapp-testing とは?

このスキルは、Playwrightを活用してローカルWebアプリケーションをテスト・操作するための包括的なツールキットです。フロントエンドの機能検証、UI動作のデバッグ、ブラウザのスクリーンショット取得、ブラウザログの表示など、主要なテストシナリオをカバーします。提供されるスクリプト(例:`scripts/with_server.py`)はサーバーライフサイクルを管理し、単一または複数のサーバー(バックエンド+フロントエンドなど)を自動起動・終了できます。使い方のガイドとして、静的なHTMLファイルか動的なWebアプリかに応じて適切なアプローチを選択する判断ツリーや、「偵察→行動」パターン(DOMのレンダリング状態を確認してからセレクタを特定しアクションを実行)が用意されています。これらのスクリプトはブラックボックスとして直接実行されることを想定しており、コンテキストウィンドウを汚染せずに複雑なワークフローを信頼性高く処理できます。PythonのPlaywrightスクリプトを同期的に記述し、`networkidle`を待ってから操作するなど、ベストプラクティスに従うことで、安定したテスト自動化が実現します。

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

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · 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.

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.

関連スキル