promote-handover-test
ハンドオーバーテストを、チケット番号の削除、適切なディレクトリへの移動、テスト内容の記述更新といった処理を経て、より上位のテストスイートに昇格させるSkill。
📜 元の英語説明(参考)
Promotes a handover test to the regression or smoke test suite. Renames the file to remove the ticket prefix, moves it to the target directory, and updates the test.describe block. Use when asked to promote, graduate, or move a handover test to regression or smoke.
🇯🇵 日本人クリエイター向け解説
ハンドオーバーテストを、チケット番号の削除、適切なディレクトリへの移動、テスト内容の記述更新といった処理を経て、より上位のテストスイートに昇格させるSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o promote-handover-test.zip https://jpskill.com/download/10199.zip && unzip -o promote-handover-test.zip && rm promote-handover-test.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10199.zip -OutFile "$d\promote-handover-test.zip"; Expand-Archive "$d\promote-handover-test.zip" -DestinationPath $d -Force; ri "$d\promote-handover-test.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
promote-handover-test.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
promote-handover-testフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Promote Handover Test
完了した handover テストを tests/handover/ から tests/regression/ または tests/smoke/ に移動します。
ワークフロー
- handover テストの特定 —
e2e/tests/handover/でチケットキーまたはファイルパスを検索します。 - ターゲットスイートの決定 — regression (デフォルト) または smoke (ユーザーが指定した場合)
- 同じ機能の既存の spec の確認 — ターゲットディレクトリに存在するかどうか
- 存在する場合、テストを既存の
test.describeブロックにマージします。 - 存在しない場合、新しい spec ファイルを作成します。
- 存在する場合、テストを既存の
- promotion の変更の適用 (下記のチェックリストを参照)
- 元の handover spec の削除 —
tests/handover/から - 新しい場所でのテストの実行:
npx playwright test --project="chromium:regression" {feature}.spec.ts
Promotion チェックリスト
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 があることを確認します。
- 要約行
- ステップブロック (番号付き)
- すべてのパラメータに対する @param タグ
4. テストの実行
新しい場所でテストがパスすることを確認します。
# regression の場合
npx playwright test --project="chromium:regression" {feature}.spec.ts
# smoke の場合
npx playwright test --project="chromium:smoke" {feature}.spec.ts
# すべてのブラウザで
npx playwright test --project="*:regression" {feature}.spec.ts
5. 元のファイルの削除
promotion されたバージョンがパスすることを確認した後、tests/handover/ から handover spec を削除します。
決定: Promote、Merge、または Delete?
| シナリオ | アクション |
|---|---|
| 機能が永続的で、既存の regression spec がない | tests/regression/{feature}.spec.ts に Promote |
| 機能が永続的で、regression spec がすでに存在する | テストを既存の regression spec にマージ |
| 機能がクリティカルパス上にある | tests/smoke/{feature}.spec.ts に Promote |
| 機能が既存のテストで完全にカバーされている | handover spec を削除 |
| 機能がリバートされた | handover spec を削除 |
例: 完全な Promotion
Before (handover)
ファイル: 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 }) => {
// ...
});
});
After (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();
});
// ... 既存のテスト ...
test('should select and delete multiple items', async ({ page, testData }) => {
// ... (MANT-123 から promotion)
});
});
元のファイル e2e/tests/handover/MANT-123-vault-bulk-delete.spec.ts は削除されます。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Promote Handover Test
Move a completed handover test from tests/handover/ to tests/regression/ or tests/smoke/.
Workflow
- Locate the handover test — search
e2e/tests/handover/for the ticket key or file path - Determine the target suite — regression (default) or smoke (if user specifies)
- Check for an existing spec in the target directory for the same feature
- If one exists, merge the tests into the existing
test.describeblock - If not, create a new spec file
- If one exists, merge the tests into the existing
- Apply the promotion changes (see checklist below)
- Delete the original handover spec from
tests/handover/ - Run the test in its new location:
npx playwright test --project="chromium:regression" {feature}.spec.ts
Promotion Checklist
1. Rename the File
Remove the ticket key prefix:
BEFORE: e2e/tests/handover/PROJ-456-bulk-export.spec.ts
AFTER: e2e/tests/regression/bulk-export.spec.ts
If the feature already has a regression spec (e.g., vault.spec.ts), merge the tests into that file instead of creating a new one.
2. Update test.describe
Remove the ticket key from the describe block:
// BEFORE
test.describe('PROJ-456: Bulk Export', () => {
// AFTER
test.describe('Bulk Export', () => {
If merging into an existing spec, add the tests inside the existing test.describe block (or create a nested test.describe if the feature area is distinct).
3. Verify POM JSDoc
Ensure all POM methods added for this ticket have complete JSDoc:
- Summary line
- Steps block (numbered)
- @param tags for all parameters
4. Run Tests
Verify the tests pass in their new location:
# 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. Delete the Original
Remove the handover spec from tests/handover/ after confirming the promoted version passes.
Decision: Promote, Merge, or Delete?
| Scenario | Action |
|---|---|
| Feature is permanent, no existing regression spec | Promote to tests/regression/{feature}.spec.ts |
| Feature is permanent, regression spec already exists | Merge tests into the existing regression spec |
| Feature is on the critical path | Promote to tests/smoke/{feature}.spec.ts |
| Feature is fully covered by existing tests | Delete the handover spec |
| Feature was reverted | Delete the handover spec |
Example: Full Promotion
Before (handover)
File: 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 }) => {
// ...
});
});
After (regression)
File: e2e/tests/regression/vault.spec.ts (merged into existing spec, or new file)
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)
});
});
Original file e2e/tests/handover/MANT-123-vault-bulk-delete.spec.ts is deleted.