원클릭으로
x4-test-impl
Implement and supplement Unit/E2E test code for X4 Station Calculator. Trigger with /x4:test-impl <change-name>.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Implement and supplement Unit/E2E test code for X4 Station Calculator. Trigger with /x4:test-impl <change-name>.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | x4-test-impl |
| description | Implement and supplement Unit/E2E test code for X4 Station Calculator. Trigger with /x4:test-impl <change-name>. |
| metadata | {"version":"1.12"} |
This skill handles test implementation updates for the X4 Station Calculator project.
User invokes /x4:test-impl <change_name>
Implement and supplement Unit/E2E/Bug/Bug-fix test code based on test_tasks.md, with mandatory task-to-test correspondence that can be validated by script.
<change_name>: The name of the change folder in openspec/changes/ (e.g., storage-auto-fill).<change_name> accepts abbreviation token and must be resolved by x4-user-workflow "Change Name Resolution" rules.change-name using x4-user-workflow rules before any action.Resolved change: <change-name>.openspec/changes/<change-name>/test_tasks.mdopenspec/changes/<change-name>/knowledge.mdopenspec/test_experience.mdtests/unit/<change-name>/ and tests/e2e/<change-name>/UNIT_DIR = tests/unit/<change-name>E2E_DIR = tests/e2e/<change-name>UNIT_DIR 或 E2E_DIR 不存在,立即创建test_tasks.md 进行 1:1 用例映射test-setup 与 knowledge.md 提供的定位语义。x4-drag-test 规范,优先稳定 identity locator(data-*)。当任务定义了状态/切换语义时,必须:
npm run build 或完整 npx playwright test 作为本 skill 的默认动作。test_tasks.md 写入通过/失败标记。test_tasks.md。test_tasks.md 对应项一致。固定流程:实现测试 -> 跑脚本 -> 修复 -> 再跑。
命令:
python3 skill-scripts/validate_test_case_refs.py <change-name> --json
验证覆盖“任务编号 -> 测试实现”的强约束:
x.x)必须映射到同编号 case;缺失/多余 case 都报错。x.x.x / x.x.x.n 注释在 case 内校验。状态 case:只允许 1 个 helper 调用。切换 case:只允许 2 个 helper 调用,顺序为状态 helper -> 切换 helper。2.x case 内禁止步骤注释、业务操作、断言。2.x 的步骤注释与 #期望 断言必须写在 helper 内。状态/切换 子步骤必须调用 Chapter 2 对应 helper;切换必须先状态后切换。#期望: [...] 必须有断言且断言值匹配。状态 与 切换 都必须在 Chapter 3/4 被显式引用才算可达;状态 不反推 切换,切换 也不反推 from/to 状态。change)文件发现:
tests/unit/<change-name>/<change-name>.spec.ts|.spec.testtests/e2e/<change-name>/<change-name>.spec.ts|.spec.testtests/e2e/<change-name>/bug-<change-name>.spec.ts|.spec.testtests/e2e/<change-name>/bugfix-<change-name>.spec.ts|.spec.testx.x.x 块必须有内容。x.x.x.n 块必须有内容。2.x case 体。示例(推荐写法):
test('2.1 状态: A', async ({ page }) => {
await buildA(page)
})
test('2.2 切换: A -> B', async ({ page }) => {
await buildA(page)
await transitionAtoB(page)
})
async function buildA(page: Page) {
// 2.1.1 进入 A 所需的初始操作
await page.goto('/a')
// 2.1.2 断言处于 A #期望: ['A']
await expect(page.getByTestId('state-label')).toHaveText('A')
}
async function transitionAtoB(page: Page) {
// 2.2.1 断言当前处于 A #期望: ['A']
await expect(page.getByTestId('state-label')).toHaveText('A')
// 2.2.2 执行切换 A -> B
await page.getByTestId('switch-a-to-b').click()
// 2.2.3 断言切换后处于 B #期望: ['B']
await expect(page.getByTestId('state-label')).toHaveText('B')
}
test('3.1 Case: flow', async ({ page }) => {
// 3.1.1 状态: A
await buildA(page)
// 3.1.2 切换: A -> B
await transitionAtoB(page)
})
Chapter 4 需要同时映射 bug 与 bug-fix 两类文件,并按语义拆分校验:
修复前 期望只对应 bug 文件,不要求对应 bug-fix。修复后 期望只对应 bug-fix 文件,不要求对应 bug。修复后 期望项为已勾选([x]/[✓]),顶层项可不要求 bug case,但必须有 bug-fix case。验证脚本在 --json 下输出数组项:
[{"case":"1"|"1.1"|"1.1.1"|"1.1.1.1"|"global","desc":"Desc","error_code":"CODE","error_msg":"Message"}]
要求:
case="1" 表示章节级错误(非任务树节点定位)。case="global" 表示无法归因的全局错误(如路径解析失败)。case 与 error_code。validate_test_case_refs.py(推荐 --json)。npx tsc -p tsconfig.test-check.json --noEmit,修复类型错误。test_tasks.md 规则来规避。tests/unit/<change-name>/ and tests/e2e/<change-name>//x4:test-impl storage-auto-fill
Use when x4-e2e-test-doc-details needs fixture patch rules or helper guidance for X4 E2E test data.
Use when refining X4 `e2e_tests.md` into detailed E2E task, fixture, and implementation knowledge documents before Playwright implementation.
Use when creating or updating only the high-level X4 E2E test plan `e2e_tests.md` before detail expansion.
Review X4 E2E test documentation draft and gate x4-e2e-test-doc completion. Must run in a dedicated isolated subagent. Trigger with /x4:e2e-test-doc-viewer <change-name>.
Implement Playwright E2E tests for X4 changes from `e2e_test_tasks.md` and validate task-to-test mapping. Trigger with /x4:e2e-test-impl <change-name>.
Run change-scoped X4 Playwright E2E tests and validate implementation coverage against `e2e_test_tasks.md`. Trigger with /x4:e2e-test-run <change-name>.