mcpField
P
promote-handover-test

promote-handover-test

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

关于 promote-handover-test

用于将已完成的 Playwright 交接测试移入回归或冒烟套件的测试技能,涵盖文件调整、合并、POM JSDoc 检查、运行测试及删除原文件。

主要功能

  1. 01将交接测试移入回归或冒烟套件
  2. 02合并到已有功能测试文件
  3. 03重命名文件及 test.describe
  4. 04检查 POM 方法的 JSDoc
  5. 05运行测试后删除原交接文件

适用场景

  1. 01将已完成的工单测试纳入回归测试
  2. 02将关键路径测试加入冒烟套件
  3. 03把测试覆盖合并到已有功能文件

安装

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

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

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

详细介绍

提升交接测试

将已完成的交接测试从 tests/handover/ 移至 tests/regression/ 或 tests/smoke/。


工作流

  1. 定位交接测试 — 在 e2e/tests/handover/ 中搜索工单键或文件路径
  2. 确定目标测试套件 — regression(默认)或 smoke(用户指定时)
  3. 在目标目录中检查是否已有相同功能的 spec
    • 如果已有,将测试合并到现有的 test.describe 块中
    • 如果没有,则新建 spec 文件
  4. 应用提升所需的更改(见下方检查清单)
  5. 从 tests/handover/ 删除原始交接 spec
  6. 在新位置运行测试:
    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. 删除原文件

确认提升后的版本通过后,从 tests/handover/ 删除交接 spec。


决策:提升、合并还是删除?

场景操作
功能是永久的,且没有现有 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 已删除。

评论

支持 Markdown