mcpField
N
ns-e2e-tests

ns-e2e-tests

github.com/nextstage-brasilテスト・品質0129 回インストール1 週間前に更新
リポジトリ

ns-e2e-tests について

ns-e2e-testsは、WebアプリケーションのCypress E2Eテストを実装するスキルです。既存プロジェクトの検出や独立したテスト環境の構築から、コマンドとデバイス別仕様の整理、テスト実行までを案内します。

主な機能

  1. 01Cypressプロジェクトの検出と構築
  2. 02動作とデバイス別のコマンド整理
  3. 03デバイス別E2E仕様の作成
  4. 04サードパーティ通信の既定スタブ化
  5. 05テスト実行と失敗の報告

活用シーン

  1. 01既存アプリへのCypress E2Eテスト追加
  2. 02新規アプリ用の独立E2E環境構築
  3. 03デスクトップ、タブレット、モバイルのフロー検証

インストール

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

$npx skills add https://github.com/nextstage-brasil/skills --skill ns-e2e-tests

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

同梱ファイルevals/evals.jsonreferences/e2e-architecture.md

詳細

E2E テストの作成

実行フェーズの Cypress 実装です。計画フェーズについては、ns-spec-driven/references/e2e-test-task-generator.mdを参照してください。

セッションの開始

.nextstage-harness/rules/e2e-tests-rules.mdcが存在する場合は読み込みます。ディレクトリ構成とブートストラップの概要については、references/e2e-architecture.mdを参照してください。

フェーズ 0 — Cypress ルートの確認またはブートストラップ

仕様コードやコマンドコードを書く前に、Cypress プロジェクトを見つけるか、作成してください。

0.1 — 既存の E2E の検出(既存プロジェクト)

リポジトリ内を次の順序で検索します。

  1. tests-e2e/cypress.config.ts
  2. testes-cypress/cypress.config.ts(旧名称)
  3. frontend/cypress.config.ts(旧・同居構成)

cypress.config.tsを含むディレクトリを**{e2e_root}**として記録してください。特記がない限り、以下のすべてのパスは{e2e_root}からの相対パスです。

0.2 — 何も見つからない場合のブートストラップ(新規プロジェクト)

0.1 で一致するものがない場合、スタンドアロンの Node プロジェクトとして**tests-e2e/**を作成します。

ルール詳細
場所tests-e2e/のみ
package.jsonここに配置 — frontend/package.jsonに Cypress を追加しないでください
ツリーreferences/e2e-architecture.mdに従います(設定+空のdevice/フォルダー+support imports)
cypress.config.tsCYPRESS_BASE_URLからのbaseUrl、specPatternはcypress/e2e/**/*.cy.ts
スクリプトtests-e2e/package.jsonにcypress:open、cypress:run

その後、{e2e_root} = tests-e2e/と設定します。

新規プロジェクトで禁止されていること:frontend/cypress/以下へのスキャフォールディング、依存関係の frontend のロックファイルへのコピー、アプリのパッケージに Cypress がすでにインストールされていると想定すること。

0.3 — ブートストラップ後のドキュメント更新

docs/context/stack-confirmed.mdまたはarchitecture-rules.mdが存在する場合、E2E の行を追加または更新してください。場所はtests-e2e/、実行コマンドはcd tests-e2e && npm run cypress:run(またはプロジェクトの Docker 相当のコマンド)です。

{e2e_root}が確定し、cypress.config.tsを読み取れる状態になるまで、フェーズ 1 に進まないでください。

フェーズ 1 — 調査(機能コードを書く前)

  1. テスト対象のアプリ — ルート、フォーム、API の使用状況、既存のdata-testid(frontend/を読み取り、そこに Cypress のコードを書かないでください)
  2. 既存のコマンド — {e2e_root}/cypress/support/commands/内をすべて読み取ります。重複させないでください
  3. 設定 — {e2e_root}/cypress.config.tsのbaseUrl、環境変数(CYPRESS_BASE_URL、CYPRESS_API_URL)

フェーズ 2 — まずコマンドのアーキテクチャを整える

{e2e_root}/cypress/support/commands/
  shared/[feature].commands.ts   # business actions — all devices
  pages/[feature].commands.ts    # page structure
  device/mobile|tablet|desktop.commands.ts
振る舞い場所
すべてのデバイスで共通shared/
デバイス専用device/
ページの DOM 構造pages/

新しいコマンドファイルを{e2e_root}/cypress/support/e2e.tsに登録します。

仕様:describe/it、cy.visit()、コマンド、アサーションを使用します — 仕様内に DOM ロジックを記述しないでください。

フェーズ 3 — 仕様の配置

{e2e_root}/cypress/e2e/device/
  desktop/[feature]/[feature]-successful-flows.cy.ts
  tablet/...
  mobile/...

beforeEach内でビューポートを設定します。

  • デスクトップ:1280×720
  • タブレット:768×1024
  • モバイル:375×812

禁止事項:device/プレフィックスを付けずに、cypress/e2e/直下へ仕様を配置すること。

フェーズ 4 — 実装

  • フロントエンドのタスク契約にあるdata-testidを使用します — 独自に作成しないでください
  • 固定のcy.wait(N)は使用しません — intercept またはアサーションのタイムアウトを使用してください
  • サードパーティへの HTTP/API 呼び出しはデフォルトでスタブ化します(intercepts/fixtures)。実際のサードパーティフローはオプトインのプロジェクト/タグ(ライブティア)にし、人間から依頼がない限り、デフォルトのcypress:run/CIから除外してください
  • RBAC:メニューが非表示であることと、直接 URL によるアクセスが拒否されることを確認します
  • 認証:UI 経由でログインするか、サポートセッションを使用します。テナント対応の fixture を使用します

フェーズ 5 — 実行と報告

{e2e_root}からnpm run cypress:runを実行します(または、製品向けにドキュメント化された Docker 相当のコマンドを使用します)。必要に応じてns-investigatorで失敗を報告します。

SDD バージョンの実行:execution-handoff.md/run-implementation経由で呼び出された場合は、仕様の作成またはリファクタリングのみを行い、E2E スイートを実行しないでください。人間がバージョンの最後に E2E を実行します。

参考資料

ファイル用途
references/e2e-architecture.mdルートのディレクトリ構成、ブートストラップツリー、ルール
../ns-spec-driven/references/e2e-test-task-generator.mdタスク契約のソース

関連スキル

  • ns-spec-driven references/e2e-test-task-generator.md — testid コントラクトを使ったタスクの計画
  • ns-investigator — 失敗する E2E のデバッグ
  • ns-gitlab-ci-generator — CI の cd tests-e2e と変更パス

コメント