关于 create-handover-test
用于创建与工单关联的临时 Playwright 交接测试的技能,涵盖 POM 更新、测试数据、规格命名、运行及后续晋升或删除。
主要功能
- 01按工单生成测试规格
- 02复用并更新 POM
- 03设置外部测试数据
- 04工单键命名规范
- 05测试通过后的晋升或删除流程
适用场景
- 01验证工单验收标准
- 02为新功能创建交接测试
- 03将完成的测试转为回归或冒烟测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ agentmantis/ test-skills --skill create-handover-test安装后在 Claude Code 中输入/create-handover-test确认已加载。
附带文件references/handover-spec-template.md
详细介绍
创建交接测试
生成由工单驱动的交接测试,用于验证特定验收标准。
工作流
- 解析用户请求中的工单键和描述(例如:
PROJ-456 bulk export) - 检查被测页面是否已有 POM,位于
e2e/poms/- 如果有,读取它,并添加此工单验收标准所需的新方法
- 如果没有,先使用
create-pom技能创建一个
- 检查是否已有测试数据——按需创建或更新
- 在
e2e/tests/handover/中创建 spec 文件 - 运行测试以验证其通过:
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.tsMANT-123-vault-bulk-delete.spec.tsFEAT-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