← ClaudeAtlas

sprint-coder-e2elisted

sprint-coder の Playwright Electron E2E(tests/e2e/)を正しく実行し、結果を pass / 既知flake / 意図的skip / 本物の失敗 に判定するための手順。「E2E を流して」「動作確認して」「回帰していないか見て」「golden path を確認して」と言われたとき、および renderer / main / runtime-host / preload を変更したあとに動作を確かめるときは必ずこのスキルを読むこと。実行モード(SPRINT_CODER_E2E_MODE=dev が事実上必須)、開発者の npm start を絶対に止めない前提、変更箇所から実行対象 spec を選ぶ方法、失敗の切り分けと報告フォーマットを含む。E2E を「とりあえず npm run e2e」で流すと環境起因の失敗をアプリのバグと誤読するので、実行前に必ず参照する。
Robbits-CO-LTD/sprint-coder · ★ 0 · Testing & QA · score 66
Install: claude install-skill Robbits-CO-LTD/sprint-coder
# sprint-coder E2E の実行と判定 このリポジトリの E2E は Playwright の **Electron** ドライバで実アプリを起動する。ブラウザテストではないので、web の常識(`page.goto`、`--headed`、trace viewer、リトライで緑にする)はほぼ当てはまらない。実行の失敗はアプリのバグとは限らず、**起動モードの選択ミス**であることが最も多い。だから「走らせる」より先に「どのモードで走るか」を確定させる。 ## 1. 実行前に確定させる 3 つのこと **(a) モードは必ず `dev` を明示する。** ```bash SPRINT_CODER_E2E_MODE=dev npx playwright test tests/e2e/<spec>.spec.ts ``` 環境変数を省くと `resolveE2EMode()`([tests/e2e/helpers.ts](../../../tests/e2e/helpers.ts))は `apps/desktop/out/` の中身を見て `packaged` を選ぶ。そこには古い packaged build(`@vibe-desktop-darwin-arm64` — アプリ名が改名前のまま)が残っており、この環境では packaged 起動がハングする(`@electron/packager` の zip 展開が `electron.icns` で決定論的に止まる既知の環境バグ。アプリ側の不具合ではない)。さらに `a11y-axe.spec.ts` は dev モードの CSP 例外(`script-src 'self' http://localhost:*`)に依存しているので、packaged では原理的に通らない。**つまり dev 指定忘れは「テストが落ちた」ではなく「まだ何も試せていない」状態。** **(b) 開発者の `npm start` は絶対に止めない。** globalSetup は 5173 に何か listen していればそれを**そのまま再利用**し、無ければ自分で `npm start` を起動して、自分が起動した分だけ後片付けする。ユーザーが手元で回している dev インスタンスを `pkill electron` などで消すと、その人の作業を壊したうえに次の実行が遅くなるだけで、何の得もない。稼働状況は次で確認できる(`[::1]` で listen している点に注意。`127.0.0.1` への curl は失敗する): ```bash lsof -nP -iTCP:5173 -sTCP:LISTEN ``` **(c) テスト同士・開発者インスタンスとの衝突は既に解決済み。** 各 spec は `createUserDataDir()` で隔離した `SPRINT_CODER_USER_DATA_DIR` を使うので、SQLite も single-instance lock も独立している。「他のアプリが起動中だから落ちた」という仮説は、まずこの前提を疑う前に他の原因を潰すこと。 ## 2. 実行コマンド dev server が既に上がっていれば 1 spec は数秒で終わる。上がっていない場合、globalSetup が `npm start` を起動して ready を待つのに最大 90 秒かかる(これは失敗ではない)。 ```bash # 単一 spec(