关于 promote-handover-test
用于将已完成的 Playwright 交接测试移入回归或冒烟套件的测试技能,涵盖文件调整、合并、POM JSDoc 检查、运行测试及删除原文件。
主要功能
- 01将交接测试移入回归或冒烟套件
- 02合并到已有功能测试文件
- 03重命名文件及 test.describe
- 04检查 POM 方法的 JSDoc
- 05运行测试后删除原交接文件
适用场景
- 01将已完成的工单测试纳入回归测试
- 02将关键路径测试加入冒烟套件
- 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/。
工作流
- 定位交接测试 — 在
e2e/tests/handover/中搜索工单键或文件路径 - 确定目标测试套件 — regression(默认)或 smoke(用户指定时)
- 在目标目录中检查是否已有相同功能的 spec
- 如果已有,将测试合并到现有的
test.describe块中 - 如果没有,则新建 spec 文件
- 如果已有,将测试合并到现有的
- 应用提升所需的更改(见下方检查清单)
- 从
tests/handover/删除原始交接 spec - 在新位置运行测试:
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