create-regression-test について
Playwright の回帰テストまたはスモークテストの仕様を、テストデータやフィクスチャ連携とともに作成するスキルです。POM 経由の操作、独立したテスト構成、実行による検証を定めています。
主な機能
- 01回帰・スモークスイートの選択
- 02POM とフィクスチャの連携
- 03外部 JSON テストデータ
- 04独立性と並列実行への対応
- 05テスト実行による仕様の検証
活用シーン
- 01機能の回帰テスト追加
- 02重要なフローのスモークテスト作成
- 03並列実行可能な E2E テストの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agentmantis/ test-skills --skill create-regression-testインストール後、Claude Code で/create-regression-testを入力して読み込まれたか確認します。
同梱ファイルreferences/spec-template.mdreferences/test-data-template.md
詳細
回帰/スモークテストの作成
関連するテストデータとフィクスチャの統合を含む、完全なテスト仕様を生成します。
ワークフロー
- ユーザーのリクエストから機能名を特定します
- テストスイートを決定します — 回帰(デフォルト)またはスモーク
e2e/poms/{feature}.page.tsに POM が存在するか確認します- 存在する場合は、利用可能なアクションを把握するために、公開メソッドと JSDoc を読みます
- 存在しない場合は、
create-pomスキルを使って先に作成します
e2e/test-data/{feature}.jsonにテストデータが存在するか確認します- 存在する場合は、既存のデータ形式を読み取り、使用します
- 存在しない場合は、テンプレートデータを含む JSON ファイルを作成します
e2e/fixtures/base.tsのフィクスチャを確認します- 機能がまだ登録されていない場合は、インターフェースとローダーを追加します
- 適切なディレクトリに spec ファイルを作成します
- テストを実行して合格することを確認します:
npx playwright test --project="chromium:regression" {feature}.spec.ts
Spec ファイルの構造
すべての spec は、次のパターンに厳密に従います:
import { test } from '../../fixtures/base';
import { getAuthFilePath } from '../../helpers/env-config';
import { FeaturePage } from '../../poms/feature.page';
const authFile = getAuthFilePath();
test.describe('Feature Name Tests', () => {
// One-time setup: clean stale data from previous failed runs
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext({
storageState: authFile,
});
const page = await context.newPage();
const pom = new FeaturePage(page);
await pom.setUp();
await page.close();
await context.close();
});
test('should create a new item', async ({ page, testData }) => {
const pom = new FeaturePage(page);
const item = testData.feature.items[0];
await pom.navigateToPage();
await pom.createItem(item.name, item.value);
await pom.verifyItemExists(item.name);
});
test('should edit an existing item', async ({ page, testData }) => {
const pom = new FeaturePage(page);
const item = testData.feature.items[0];
const updated = testData.feature.updatedItem;
await pom.navigateToPage();
await pom.createItem(item.name, item.value);
await pom.editItem(item.name, updated.name, updated.value);
await pom.verifyItemExists(updated.name);
});
test('should delete an item', async ({ page, testData }) => {
const pom = new FeaturePage(page);
const item = testData.feature.items[1];
await pom.navigateToPage();
await pom.createItem(item.name, item.value);
await pom.deleteItem(item.name);
await pom.verifyItemNotExists(item.name);
});
});
重要なルール
Spec 内での生の Page 呼び出しは禁止
spec では、page.getByRole()、page.locator()、page.waitForTimeout()、または Playwright の生の page メソッドを絶対に呼び出してはいけません。すべての操作は POM を通じて行います。
spec 内で許可される page の使用方法:
- POM コンストラクターに渡す場合:
new FeaturePage(page) beforeAllでコンテキストを作成する場合:browser.newContext()/context.newPage()
テストの独立性
- 各テストは
pom.navigateToPage()を使って個別に遷移します - 各テストは独自のデータを作成し、別のテストのデータに依存してはいけません
- テストは並列実行されるため、衝突を避けるために一意の接尾辞を付けたテストデータを使用します
カスタムテストのインポート
必ず、プロジェクトのカスタムフィクスチャから test をインポートします:
// CORRECT
import { test } from '../../fixtures/base';
// WRONG — loses access to testData fixture
import { test } from '@playwright/test';
テストデータ
JSON ファイル:e2e/test-data/{feature}.json
{
"items": [
{ "name": "ItemA", "key": "keyA", "value": "some-value" },
{ "name": "ItemB", "key": "keyB", "value": "other-value" }
],
"updatedItem": { "name": "Updated", "value": "new-value" }
}
ルール
- spec ファイルや POM ファイルにデータをハードコードしてはいけません
- すべての文字列値には、testData フィクスチャによって一意の接尾辞が自動的に付加されます
- POM メソッドがパラメーターとして受け取る形式に合わせてデータを構成します
完全なテンプレートについては、references/spec-template.md と references/test-data-template.md を参照してください。
beforeAll のクリーンアップパターン
beforeAll ブロックでは、次のことを行う必要があります:
1.(テストの page フィクスチャからではなく)手動で新しいブラウザーコンテキストを作成します
2. 認証用の storageState を読み込みます
3. POM をインスタンス化し、setUp() を呼び出します
4. 完了後にページとコンテキストを閉じます
これにより、テストの実行前に、以前の失敗した実行による古いデータがクリーンアップされます。
ファイルのチェックリスト
回帰/スモークテストを作成する際は、次のファイルを用意します:
-
e2e/poms/{feature}.page.ts— POM(作成または更新) -
e2e/test-data/{feature}.json— テストデータ -
e2e/fixtures/base.ts— 機能のインターフェースとローダーを追加したもの(新機能の場合) -
e2e/tests/regression/{feature}.spec.ts(またはtests/smoke/)— spec ファイル - すべてのテストが独立しており、並列実行に対応している
- spec 内に
pageの生の呼び出しがない - テストデータがハードコードされていない
- テストが chromium で合格する:
npx playwright test --project="chromium:regression" {feature}.spec.ts