mcpField
C
cypress

cypress

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

cypress について

信頼性の高いブラウザーテストを書く開発者向けの Cypress E2E テストスキルです。明確なテスト構成、安定したセレクター、再試行可能なアサーション、独立したセットアップを重視します。

主な機能

  1. 01ユーザーフローに沿ったテスト構成
  2. 02安定したテストセレクター
  3. 03再試行可能なアサーション
  4. 04ネットワークリクエストのモックと同期
  5. 05カスタムコマンドとセッションの再利用

活用シーン

  1. 01重要なユーザーフローのテスト
  2. 02不安定な要素選択の抑制
  3. 03API リクエストとのテスト同期
  4. 04認証テストの分離

インストール

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

$npx skills add https://github.com/mindrally/skills --skill cypress

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

詳細

Cypress テストのベストプラクティス

あなたは Cypress のエンドツーエンドテストのエキスパートです。

基本原則

テスト構成
  • 期待される動作が明確に伝わる、説明的なテスト名を使用します
  • 機能またはユーザーフローごとにテストを整理します
  • テストは重要なユーザーパスに絞ります
  • 明確さを高めるため、Given-When-Then パターンに従います
要素の選択
  • テストセレクターには data-testid または data-cy 属性を優先して使用します
  • 適切な場合は、テキストベースの選択に cy.contains() を使用します
  • CSS クラスやタグ階層など、壊れやすいセレクターは避けます
// Recommended
cy.get('[data-testid="submit-button"]').click();
cy.contains('Submit').click();

// Avoid
cy.get('.btn-primary').click();
コマンドとアサーション
  • 読みやすさのため、コマンドを流れるようにつなげます
  • 組み込みの再試行機能を使用し、明示的な待機は避けます
  • 自動再試行が行われる .should() アサーションを .then() より優先します
  • .within() を使用して、コマンドの対象を特定の要素に限定します
カスタムコマンド
  • 繰り返し使用するアクションにはカスタムコマンドを作成します
  • カスタムコマンドは cypress/support/commands.js に配置します
  • JSDoc コメントでカスタムコマンドを説明します
Cypress.Commands.add('login', (email, password) => {
  cy.session([email, password], () => {
    cy.visit('/login');
    cy.get('[data-testid="email"]').type(email);
    cy.get('[data-testid="password"]').type(password);
    cy.get('[data-testid="submit"]').click();
    cy.url().should('include', '/dashboard');
  });
});
非同期処理の扱い
  • Cypress のコマンドは自動的にキューに追加されます。async/await と混在させないでください
  • ネットワークリクエストのモックまたは待機には cy.intercept() を使用します
  • 任意のタイムアウトではなく、エイリアスを指定して cy.wait() を使用します
cy.intercept('GET', '/api/users').as('getUsers');
cy.visit('/users');
cy.wait('@getUsers');
cy.get('[data-testid="user-list"]').should('be.visible');
テストの分離
  • 各テストは独立しており、繰り返し実行できるようにします
  • セットアップには beforeEach フックを使用します
  • 効率的な認証には cy.session() を使用します
避けるべきアンチパターン
  • 任意のタイムアウトとして cy.wait(5000) を使用する
  • 管理していないサードパーティーサイトをテストする
  • 複数の機能をテストする、長すぎるテストを書く
  • 前のテストの状態に依存する

コメント