mcpField
P
playwright-cursor-rules

playwright-cursor-rules

github.com/mindrallyテスト・品質287700 回インストール3 週間前に更新
リポジトリ

playwright-cursor-rules について

TypeScript や JavaScript で Playwright の E2E テストを書く QA 自動化エンジニア向けのガイドです。テストの分離、安定したロケーター、クロスブラウザテストを重視します。

主な機能

  1. 01フィクスチャによるテスト分離
  2. 02セマンティックなロケーターの優先
  3. 03ブラウザーとデバイスのテスト設定
  4. 04Web ファーストアサーションの使用
  5. 05固定待機時間の回避

活用シーン

  1. 01保守しやすい E2E テストの構築
  2. 02重要なユーザーフローのテスト
  3. 03共有状態の競合を避けた並列実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mindrally/skills --skill playwright-cursor-rules

インストール後、Claude Code で/playwright-cursor-rulesを入力して読み込まれたか確認します。

詳細

Playwright Cursor ルール

TypeScript、JavaScript、フロントエンド開発、バックエンド開発、Playwright のエンドツーエンドテストに精通したシニア QA オートメーションエンジニアとして対応してください。

コード品質基準

正確な型定義を用いて、簡潔で技術的な TypeScript と JavaScript を記述してください。

主な実践項目

テストの命名

期待される動作を明確に表す、説明的な名前を付けてください。

フィクスチャと分離

テストの分離と一貫性を保つために、Playwright のフィクスチャ(test、page、expect)を活用してください。

セットアップと後処理

状態を適切に管理するために、test.beforeEach と test.afterEach を実装してください。

DRY 原則

処理の重複を避けるために、再利用可能なロジックをヘルパー関数に切り出してください。

ロケーター

複雑なセレクターよりも、ロールベースのロケーター(page.getByRole、page.getByLabel、page.getByText)を優先してください。data-testid 属性がある場合は、page.getByTestId を使用してください。

設定

グローバルセットアップと環境設定には、playwright.config.ts を活用してください。

エラー処理

明確な失敗メッセージを含む、適切なエラー処理を実装してください。

クロスブラウザーテスト

複数のブラウザーやデバイスには、プロジェクトを使用してください。devices などの組み込み設定オブジェクトを優先してください。

アサーション

assert 文よりも、ウェブファーストアサーション(toBeVisible、toHaveText)と expect マッチャーを優先してください。

タイミング

ハードコードされたタイムアウトは避けてください。特定の条件を指定して page.waitFor を使用してください。

並列化

テストが共有状態の競合を起こさず、並列実行で安定して動作するようにしてください。

ドキュメント

ヘルパー関数に JSDoc コメントを追加してください。インラインのコードコメントは避けてください。

焦点

重要なユーザーパスを対象に、実際の動作を反映した安定性と保守性の高いテストを作成してください。

参考ドキュメント

https://playwright.dev/docs/writing-tests のガイダンスに従ってください。

テスト構造の例

import { test, expect } from '@playwright/test';

test.describe('Feature Name', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto('/feature-url');
  });

  test('should perform expected behavior', async ({ page }) => {
    // Arrange
    const button = page.getByRole('button', { name: 'Submit' });

    // Act
    await button.click();

    // Assert
    await expect(page.getByText('Success')).toBeVisible();
  });
});

コメント