promote-handover-test について
完了した Playwright の引き継ぎテストを回帰またはスモークテストに移すためのテストスキルです。ファイルや test.describe の変更、統合、POM の JSDoc 確認、実行、元ファイルの削除を案内します。
主な機能
- 01引き継ぎテストを回帰・スモークへ移行
- 02既存の機能別 spec へ統合
- 03ファイルと test.describe の改名
- 04POM メソッドの JSDoc 確認
- 05テスト実行後に元 spec を削除
活用シーン
- 01完了したチケットのテストを回帰テストとして保持
- 02重要な経路のテストをスモークスイートへ移動
- 03既存の機能別 spec にテストを統合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agentmantis/ test-skills --skill promote-handover-testインストール後、Claude Code で/promote-handover-testを入力して読み込まれたか確認します。
詳細
引き継ぎテストの昇格
完了した引き継ぎテストを tests/handover/ から tests/regression/ または tests/smoke/ に移動します。
ワークフロー
- 引き継ぎテストを見つける —
e2e/tests/handover/でチケットキーまたはファイルパスを検索します - 移行先のスイートを決定する — regression(デフォルト)または smoke(ユーザーが指定した場合)
- 移行先ディレクトリに同じ機能の既存の spec があるか確認します
- 存在する場合は、テストを既存の
test.describeブロックに統合します - 存在しない場合は、新しい spec ファイルを作成します
- 存在する場合は、テストを既存の
- 昇格に必要な変更を適用する(下記のチェックリストを参照)
- 元の引き継ぎ spec を
tests/handover/から削除します - 新しい場所でテストを実行します:
npx playwright test --project="chromium:regression" {feature}.spec.ts
昇格チェックリスト
1. ファイル名を変更する
チケットキーのプレフィックスを削除します:
BEFORE: e2e/tests/handover/PROJ-456-bulk-export.spec.ts
AFTER: e2e/tests/regression/bulk-export.spec.ts
機能の regression spec(例:vault.spec.ts)がすでにある場合は、新しいファイルを作成せず、そのファイルにテストを統合します。
2. test.describe を更新する
describe ブロックからチケットキーを削除します:
// BEFORE
test.describe('PROJ-456: Bulk Export', () => {
// AFTER
test.describe('Bulk Export', () => {
既存の spec に統合する場合は、既存の test.describe ブロック内にテストを追加します(または、機能領域が異なる場合はネストされた test.describe を作成します)。
3. POM の JSDoc を確認する
このチケットで追加されたすべての POM メソッドに、完全な JSDoc があることを確認します:
- 概要行
- Steps ブロック(番号付き)
- すべてのパラメーターに対する @param タグ
4. テストを実行する
新しい場所でテストが成功することを確認します:
# For regression
npx playwright test --project="chromium:regression" {feature}.spec.ts
# For smoke
npx playwright test --project="chromium:smoke" {feature}.spec.ts
# Across all browsers
npx playwright test --project="*:regression" {feature}.spec.ts
5. 元のファイルを削除する
昇格後のバージョンが成功することを確認してから、引き継ぎ spec を tests/handover/ から削除します。
判断:昇格、統合、それとも削除?
| シナリオ | 対応 |
|---|---|
| 機能が恒久的で、既存の regression spec がない | tests/regression/{feature}.spec.ts に昇格する |
| 機能が恒久的で、regression spec がすでにある | テストを既存の regression spec に統合する |
| 機能がクリティカルパス上にある | tests/smoke/{feature}.spec.ts に昇格する |
| 機能が既存のテストで完全にカバーされている | 引き継ぎ spec を削除する |
| 機能が取り消された | 引き継ぎ spec を削除する |
例:昇格の全手順
変更前(引き継ぎ)
ファイル:e2e/tests/handover/MANT-123-vault-bulk-delete.spec.ts
import { test } from '../../fixtures/base';
import { getAuthFilePath } from '../../helpers/env-config';
import { VaultPage } from '../../poms/vault.page';
const authFile = getAuthFilePath();
test.describe('MANT-123: Vault Bulk Delete', () => {
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext({
storageState: authFile,
});
const page = await context.newPage();
const vault = new VaultPage(page);
await vault.setUp();
await page.close();
await context.close();
});
test('should select and delete multiple items', async ({ page, testData }) => {
// ...
});
});
変更後(regression)
ファイル:e2e/tests/regression/vault.spec.ts(既存の spec に統合、または新規ファイル)
import { test } from '../../fixtures/base';
import { getAuthFilePath } from '../../helpers/env-config';
import { VaultPage } from '../../poms/vault.page';
const authFile = getAuthFilePath();
test.describe('Vault Tests', () => {
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext({
storageState: authFile,
});
const page = await context.newPage();
const vault = new VaultPage(page);
await vault.setUp();
await page.close();
await context.close();
});
// ... existing tests ...
test('should select and delete multiple items', async ({ page, testData }) => {
// ... (promoted from MANT-123)
});
});
元のファイル e2e/tests/handover/MANT-123-vault-bulk-delete.spec.ts は削除されます。