用途:依据验收标准(来自 /api-contract)编写端到端/UI 自动化测试,覆盖风险分级的关键旅程及其关键负向路径,而非全部路径。需在验收标准存在且环境可启动时使用;不要针对实现内部测试,也不得为让测试通过而弱化断言。
主要能力:从 skills.config.yaml → qa.framework 选择框架(playwright 用于 web,maestro 用于移动端)。若提供 test_cases_path(.maestro/<slug>/test-cases.md,来自 /functional-testcases),该目录为事实来源,需保留用例 ID/可追溯性,不得静默丢弃用例;无目录时才直接从验收标准推导旅程。按风险排序,选取关键旅程与高价值负向路径,并说明范围外内容。测试数据自播种自清理,无共享可变状态。使用稳定选择器(角色/test-id)、条件显式等待,断言可观察行为与契约结果。
使用方式:生成场景 DAG,写入 .maestro/<slug>/qa/tasks.json(符合 workflows/tasks.schema.json,"stack": "qa"),每个场景为独立单任务组。一次性组装完整文件后校验:python3 workflows/validate_tasks.py .maestro/<slug>/qa/tasks.json 须输出 OK。在干净环境运行:stack up → seed → ready_check → run → stack down(teardown 始终执行)。失败时仅针对选择器/抖动/等待应用修复循环,最多 3 次。场景模式下按 group_id 与 tasks_path 仅编写该场景 spec 并返回 spec_path。
适用场景:跨服务关键旅程、验证失败、权限拒绝、空状态与分页边界、慢/失败 API 处理、会话过期、并发/重复提交;移动端手势、返回键、深链、方向。
限制:不得使用真实密钥或生产数据,仅用播种测试数据;自愈只能刷新选择器或重跑,不得弱化断言、权限或预期行为(由 maestro.config.yaml → gates.freeze_approved_tests 强制)。外部生成器由 skills.config.yaml → qa.external.generator 指定(如 anthropics:webapp-testing 或 none),其输出仍须满足隔离、确定性、真实断言与风险分级标准。输出写入 .maestro/<slug>/qa/suite.md 覆盖说明与 tasks.json,返回 suite_path、tasks_path、slices 与 tests_passed。