mcpField
N
ns-code-e2e-tests

ns-code-e2e-tests

github.com/nextstage-brasilテスト・品質054 回インストール6 日前に更新
リポジトリ

ns-code-e2e-tests について

ns-code-e2e-testsは、既存または新規プロジェクトでCypressのE2Eテストを実装するスキルです。デバイス別のテスト構成とコマンド設計を定め、SDDの実行時にテストスイートを実行しない条件も示します。

主な機能

  1. 01独立したCypressプロジェクトの検出・初期化
  2. 02デバイスと機能ごとのテスト仕様の整理
  3. 03共通・デバイス別・ページ別コマンドの分離
  4. 04テストの調査と実装ルールの提示
  5. 05テストスイートを実行しない条件の明示

活用シーン

  1. 01E2E環境のないプロジェクトへのCypressテスト追加
  2. 02デスクトップ・タブレット・モバイル向けテストの整理
  3. 03SDDの実行引き継ぎでのテスト実装

インストール

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

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

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

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

詳細

E2E テストの作成

実行フェーズの Cypress 実装です。計画フェーズ:ns-pm-e2e-test-task-generator。

ハーネスの確認

{harness}/rules/e2e-tests-rules.mdc がある場合は読み込みます。構成とブートストラップの概要については references/e2e-architecture.md を参照してください。

フェーズ 0 — Cypress のルートを特定またはブートストラップする

スペックやコマンドのコードを書く前に、Cypress プロジェクトを特定するか、作成してください。

0.1 — 既存の E2E 環境を検出する(既存プロジェクト)

{product_root} を次の順序で検索します。

  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 で一致するものがない場合、{product_root}/tests-e2e/ を独立した Node プロジェクトとして作成します。

ルール詳細
場所{product_root}/tests-e2e/ のみ
package.jsonここに配置します。Cypress を frontend/package.json に追加してはいけません
構成references/e2e-architecture.md に従います(設定ファイル + 空の device/ フォルダー + support のインポート)
cypress.config.tsCYPRESS_BASE_URL から baseUrl を設定し、specPattern は cypress/e2e/**/*.cy.ts にします
スクリプトtests-e2e/package.json に cypress:open と cypress:run を追加します

次に、{e2e_root} = {product_root}/tests-e2e/ と設定します。

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

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

{product_root}/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 を確認します(Cypress のコードは書かずに frontend/ を読み取ります)
  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) は使用しません。インターセプトまたはアサーションのタイムアウトを使用します
  • RBAC:メニューが非表示であることと、直接 URL にアクセスした場合に拒否されることを確認します
  • 認証:UI またはサポートセッション経由でログインします。テナントを考慮したフィクスチャを使用します

フェーズ 5 — 実行と報告

{e2e_root} から npm run cypress:run を実行します(または、そのプロダクトでドキュメント化されている Docker の同等コマンドを実行します)。必要に応じて ns-code-investigator を使って失敗を報告します。

SDD バージョンの実行: execution-handoff.md/ run-implementation の下で呼び出された場合、スペックの作成またはリファクタリングのみを行います。E2E スイートを実行してはいけません。 E2E はバージョン終了時に人間が実行します。

参考資料

ファイル用途
references/e2e-architecture.mdルートの構成、ブートストラップの構成、ルール
ns-pm-e2e-test-task-generatorタスク契約の参照元

関連スキル

  • ns-pm-e2e-test-task-generator — testid コントラクトを含むタスクの計画
  • ns-code-investigator — 失敗する E2E のデバッグ
  • ns-gitlab-ci-generator — CI の cd tests-e2e と変更パス

コメント