SuperAPI AI 工具集

e2e-tests

测试与质量

查看项目

更新于 10-15 22:39

技能介绍

用途:为指定用户流程编写端到端(e2e)测试,基于 Playwright,使用 test、expect 与 test.describe,并采用“given: ..., should: ...”的叙述格式。每个测试需回答:被测用户流程是什么、预期行为是什么、用户执行哪些操作、预期结果是什么、如何定位缺陷。

主要能力与约定:测试文件放在 playwright/ 目录下,按功能子目录组织,扩展名为 .e2e.ts。定位器优先使用可访问性方式,如 getByRole、getByLabel、getByText,并以带 name 选项的 getByRole 为主;不足时使用 data-testid(getByTestId),禁止用 CSS 类选择器。data-testid 值应在共享常量文件(如 app/test/test-ids.ts)中命名导出,供组件与测试共同引用。文本匹配使用不区分大小写的正则,如 { name: /submit/i }。所有 Playwright 操作与断言需 await;元素存在性用 toBeVisible()/toBeHidden(),URL 断言用 toHaveURL() 或 getPath(page) 辅助函数。认证等公共流程放入辅助函数,测试数据在 teardown 中清理,各测试相互独立。用 test.step("description", async () => { ... }) 组织阶段,不用行内注释分隔。性能敏感测试可通过 page.route 拦截图片。表单用 getByRole("textbox", { name: /label/i }) 与 .fill(),下拉用 getByRole("combobox") 再 getByRole("option"),通知用 getByRole("region", { name: /notifications/i })。可访问性检查使用 @axe-core/playwright,并断言 expect(results.violations).toEqual([])。测试数据应使用代码库中的工厂,不硬编码完整对象;变更后可用基础设施层的模型函数校验数据库状态。

适用场景:浏览器端用户流程、页面交互与集成测试。

限制:纯函数测试(.test.ts)应改用 /unit-tests;React 组件渲染测试(.test.tsx)应改用 /happy-dom-tests;服务端操作或数据库测试(.spec.ts)应改用 /integration-tests。本技能仅适用于 Playwright 浏览器测试(.e2e.ts)。