Communitygithub.com

Niltra/web-qa-visual

Playwright CLI を使用して、ウェブサイトの最終チェック:コンソールエラー、失敗したリクエスト、375/414/768/1280/1440でのレスポンシブオーバーフロー、axeによるアクセシビリティ、キーボードとフォーカス、モーション軽減、リンク、SEO/メタ、読み込みメトリクス。ウェブのテスト中、大きな変更後、またはデプロイの検証時に使用します。

web-qa-visual とは?

このスキルは、Playwright CLI を使用してウェブサイトの包括的な QA チェックを自動化し、手動レビューに頼ることなく、本番環境に移行する前に徹底的な検証を保証します。 これは、コンソールエラー、HTTP リクエストの失敗、アクセシビリティの問題(axe-core経由)、キーボードナビゲーション、SEOメタデータ、パフォーマンスメトリクス(LCP、CLS)、およびレスポンシブデザインのオーバーフローを複数のビューポート(375、414、768、1280、1440ピクセル)でチェックします。 さらに、モーション軽減の設定、内部リンクと外部リンクの検証、およびCIパイプラインと統合されたキャプチャベースのレグレッションテストを強制するために、タイムスタンプ付きのスクリーンショットをキャプチャします。 開発者が CI/CD ワークフローの一部として、または手動テストセッション中に実行できる、スクリプトベースの自動化を優先しており、MCPサーバーは使用しません。 このスキルは、構造化されたレポートに合格/不合格ステータスを示し、発見された問題を修正するための具体的な推奨事項を提供し、すべての主要なゲートが合格するまでサイトを「準備完了」と宣言しないようにします。 主にフロントエンド開発者、QAエンジニア、およびサイトを本番環境にプッシュする前に検証する必要がある開発者を対象としています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Niltra/agent-skills-web/tree/HEAD/skills/web-qa-visual

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

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

ドキュメント

Playwright CLI によるビジュアル QA

黄金律: 新しいコマンド出力なしに結論を出さない。「問題ないはず」は禁止です。

最小セットアップ

  • Playwright をプロジェクトの devDependency として追加する。playwright.config.ts には 375px の明示的なビューポート(devices['Pixel 7'] は 412px のため不可)と、desktop-chrome および mobile-chrome プロジェクトを含める。
  • キャプチャ用スクリプトは scripts/shot.mjs に記述する(MCP は使用しないこと:CLI の方が高速で再現性が高い)。
  • axe 用に @axe-core/playwright をインストールする。
  • 実際のパフォーマンスを測定するには本番ビルドを配信する(npm run build && npm run start)。開発サーバーはデバッグのみに使用する。

ページおよびロケールごとのチェック

  1. コンソールとネットワーク: page.on('console')、page.on('pageerror')、page.on('requestfailed') および HTTP ステータス 400 以上のレスポンス。違反は赤。
  2. オーバーフロー: 各ビューポートで document.documentElement.scrollWidth <= clientWidth + 1 を確認する。オーバーフローがある場合は、原因要素をリストする(getBoundingClientRect().right > innerWidth)。
  3. アクセシビリティ: axe で critical/serious 違反なし。h1 は 1 つだけ。img[alt] は完全であること。すべてのインタラクティブ要素でフォーカスが可視であること(:focus-visible を実際のキーボードで確認し、CSS を目視で判断しない)。タブ順序は論理的であること。
  4. モーション軽減: page.emulateMedia({ reducedMotion: 'reduce' }) を設定する。ピン、自動再生、200ms を超えるアニメーションがないこと。
  5. リンク: すべての href を抽出し、内部リンクは 200 を検証し、外部リンクは参考情報としてマークする。href="#" でハンドラのないものは 0 件。
  6. SEO: title、meta description、canonical、OG、ロケールごとの hreflang、解析可能な JSON-LD、sitemap.xml および robots.txt が 200 を返すこと。
  7. パフォーマンス: 読み込み後に PerformanceObserver で LCP/CLS を測定する。目標はデスクトップで LCP < 2.5 秒、CLS < 0.1。自動スクロール中の 5 秒間、rAF で長いフレーム(>50ms)をカウントしてスクロールジャンクを測定する。
  8. キャンバス/スクロール: ヘッドレスモードではキャンバスが真っ黒になる可能性があるため、DOM で確認する:期待される opacity/transform を持つ要素、ビートのテキストが正しい範囲に存在し可視であること、window に状態が公開されている場合はその存在。

ループ

  • 各実行後:ゲート/コマンド/結果/ステータスのテーブルと、証拠(セレクタ、ログ、またはキャプチャ)付きのブロッカーリストを含むレポートを生成する。
  • ゲートが失敗した場合:修正する(独自のテスト/スクリプト)か、証拠付きの具体的な src/ 修正を提案する。その後、完全なサイクルを繰り返す。
  • タイムスタンプ付きのキャプチャを docs/qa/ に保存する(プライマリロケールごとにデスクトップ + モバイル)。ベースラインと比較して回帰を検出する。
  • 赤のゲートまたは未実行のゲートがある状態で「準備完了」を宣言しない。

正直な限界

  • ヘッドレスモードから実際の iOS でのフレームシーケンスを検証することはできない:レポートにその旨を記載する。
  • Lighthouse(npx lighthouse)はオプションですが、本番ビルドでは推奨されます。実行できない場合は、推定するのではなくその旨を伝える。

Individual skills in this repo

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

関連スキル