mcpField
C
create-regression-test

create-regression-test

github.com/agentmantisテスト・品質12115 回インストール29 週間前に更新
リポジトリ

create-regression-test について

Playwright の回帰テストまたはスモークテストの仕様を、テストデータやフィクスチャ連携とともに作成するスキルです。POM 経由の操作、独立したテスト構成、実行による検証を定めています。

主な機能

  1. 01回帰・スモークスイートの選択
  2. 02POM とフィクスチャの連携
  3. 03外部 JSON テストデータ
  4. 04独立性と並列実行への対応
  5. 05テスト実行による仕様の検証

活用シーン

  1. 01機能の回帰テスト追加
  2. 02重要なフローのスモークテスト作成
  3. 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

詳細

回帰/スモークテストの作成

関連するテストデータとフィクスチャの統合を含む、完全なテスト仕様を生成します。


ワークフロー

  1. ユーザーのリクエストから機能名を特定します
  2. テストスイートを決定します — 回帰(デフォルト)またはスモーク
  3. e2e/poms/{feature}.page.ts に POM が存在するか確認します
    • 存在する場合は、利用可能なアクションを把握するために、公開メソッドと JSDoc を読みます
    • 存在しない場合は、create-pom スキルを使って先に作成します
  4. e2e/test-data/{feature}.json にテストデータが存在するか確認します
    • 存在する場合は、既存のデータ形式を読み取り、使用します
    • 存在しない場合は、テンプレートデータを含む JSON ファイルを作成します
  5. e2e/fixtures/base.ts のフィクスチャを確認します
    • 機能がまだ登録されていない場合は、インターフェースとローダーを追加します
  6. 適切なディレクトリに spec ファイルを作成します
  7. テストを実行して合格することを確認します:
    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 の使用方法:

  1. POM コンストラクターに渡す場合:new FeaturePage(page)
  2. 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

コメント