mcpField
C
create-handover-test

create-handover-test

github.com/agentmantis测试与质量12115 次安装29 周前更新
代码仓库

关于 create-handover-test

用于创建与工单关联的临时 Playwright 交接测试的技能,涵盖 POM 更新、测试数据、规格命名、运行及后续晋升或删除。

主要功能

  1. 01按工单生成测试规格
  2. 02复用并更新 POM
  3. 03设置外部测试数据
  4. 04工单键命名规范
  5. 05测试通过后的晋升或删除流程

适用场景

  1. 01验证工单验收标准
  2. 02为新功能创建交接测试
  3. 03将完成的测试转为回归或冒烟测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agentmantis/test-skills --skill create-handover-test

安装后在 Claude Code 中输入/create-handover-test确认已加载。

附带文件references/handover-spec-template.md

详细介绍

创建交接测试

生成由工单驱动的交接测试,用于验证特定验收标准。


工作流

  1. 解析用户请求中的工单键和描述(例如:PROJ-456 bulk export)
  2. 检查被测页面是否已有 POM,位于 e2e/poms/
    • 如果有,读取它,并添加此工单验收标准所需的新方法
    • 如果没有,先使用 create-pom 技能创建一个
  3. 检查是否已有测试数据——按需创建或更新
  4. 在 e2e/tests/handover/ 中创建 spec 文件
  5. 运行测试以验证其通过:
    npx playwright test --project="chromium:handover" {TICKET}-{description}.spec.ts
    

命名约定

文件名
{TICKET}-{short-description}.spec.ts
  • {TICKET} — 工单跟踪系统中显示的工单键,必须完全一致(例如:PROJ-456、MANT-123)
  • {short-description} — 简短的 kebab-case 摘要(不是完整的工单标题)

示例:

  • PROJ-456-bulk-export.spec.ts
  • MANT-123-vault-bulk-delete.spec.ts
  • FEAT-789-user-avatar-upload.spec.ts
test.describe 块

外层 test.describe 必须包含工单键,以便追踪:

test.describe('PROJ-456: Bulk Export', () => {

Spec 结构

import { test } from '../../fixtures/base';
import { getAuthFilePath } from '../../helpers/env-config';
import { FeaturePage } from '../../poms/feature.page';

const authFile = getAuthFilePath();

test.describe('PROJ-456: Bulk Export', () => {
    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 export selected items as CSV', async ({ page, testData }) => {
        const pom = new FeaturePage(page);
        const items = testData.feature.items;

        await pom.navigateToPage();
        // ... validate acceptance criteria from ticket
    });

    test('should show error when no items selected', async ({ page }) => {
        const pom = new FeaturePage(page);

        await pom.navigateToPage();
        // ... validate error handling criteria
    });
});

完整模板请参阅 references/handover-spec-template.md。


POM 规则

交接测试遵循与回归测试和冒烟测试相同的所有 POM 规则:

  • 被测页面使用现有 POM
  • 如果工单需要新的交互,在现有 POM 中添加方法——不要为同一页面创建第二个 POM
  • 仅当工单引入了全新页面时,才创建新的 POM
  • 所有新的 POM 方法都必须包含完整的 JSDoc,并带有 Steps 和 @param 标签

所有标准规则均适用

  • 从自定义 fixtures 导入 test,不要从 @playwright/test 导入
  • spec 中不得直接调用 page——所有交互都必须通过 POM 进行
  • 每项测试都必须独立——自行创建数据并独立导航
  • 不得硬编码测试数据——通过 testData fixture 使用外部 JSON
  • beforeAll 使用带有 storageState 的手动浏览器上下文进行清理

晋级生命周期

交接测试是有意设置为临时测试的。工单完成后:

操作时机
晋级为回归测试功能将长期保留,应在每次构建时运行
晋级为冒烟测试功能位于关键路径上
删除已由现有测试覆盖,或功能已回滚

准备好晋级时,请使用 promote-handover-test 技能。

过期策略
  • 每次冲刺/发布后检查 tests/handover/
  • 工单状态为 Done/Closed 的任何 spec 都应晋级或删除
  • 交接测试不得无限期保留并持续运行

文件检查清单

  • e2e/poms/{feature}.page.ts — 已更新 POM 并添加新方法(或已创建新 POM)
  • e2e/test-data/{feature}.json — 测试数据(已创建或更新)
  • e2e/tests/handover/{TICKET}-{description}.spec.ts — Spec 文件
  • 文件名包含工单键前缀
  • test.describe 包含工单键
  • 所有 POM 方法都包含 JSDoc
  • 测试通过:npx playwright test --project="chromium:handover" {TICKET}-{description}.spec.ts

评论

支持 Markdown