关于 e2e-testing-automation
e2e-testing-automation 是端到端测试技能,面向需要验证完整用户流程和前后端协作的开发与测试团队。它涵盖 Playwright、Cypress 和 Python Selenium 的参考指南及测试实践。
主要功能
- 01覆盖完整用户工作流
- 02模拟点击、输入和滚动
- 03提供 Playwright 指南
- 04提供 Cypress 指南
- 05提供 Python Selenium 指南
- 06包含页面对象模式建议
适用场景
- 01验证注册、登录和结账流程
- 02测试多步骤业务工作流
- 03检查跨浏览器表现
- 04对界面变更执行回归测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill e2e-testing-automation安装后在 Claude Code 中输入/e2e-testing-automation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cypress-e2e-tests.mdpage-object-model-pattern.mdplaywright-e2e-tests.mdselenium-with-python-pytest.mdscripts/scaffold-tests.shtemplates/test-template.js详细介绍
端到端测试自动化
目录
概述
端到端(E2E)测试会验证从 UI 到所有后端系统的完整用户工作流,确保从用户的角度来看,整个应用程序堆栈能够正确协同工作。E2E 测试会模拟用户通过浏览器进行的真实交互,包括身份验证、导航、表单提交和结果验证。
适用场景
- 测试关键用户流程(注册、结账、登录)
- 验证多步骤工作流
- 在不同浏览器和设备上进行测试
- 针对 UI 变更进行回归测试
- 验证前端与后端的集成
- 测试真实用户交互(点击、输入、滚动)
- 对部署进行冒烟测试
快速入门
最小可运行示例:
// tests/e2e/checkout.spec.ts
import { test, expect, Page } from "@playwright/test";
test.describe("E-commerce Checkout Flow", () => {
let page: Page;
test.beforeEach(async ({ page: p }) => {
page = p;
await page.goto("/");
});
test("complete checkout flow as guest user", async () => {
// 1. Browse and add product to cart
await page.click("text=Shop Now");
await page.click('[data-testid="product-1"]');
await expect(page.locator("h1")).toContainText("Product Name");
await page.click('button:has-text("Add to Cart")');
await expect(page.locator(".cart-count")).toHaveText("1");
// 2. Go to cart and proceed to checkout
await page.click('[data-testid="cart-icon"]');
await expect(page.locator(".cart-item")).toHaveCount(1);
await page.click("text=Proceed to Checkout");
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| Playwright E2E 测试 | Playwright E2E 测试 |
| Cypress E2E 测试 | Cypress E2E 测试 |
| 使用 Python(pytest)的 Selenium | 使用 Python(pytest)的 Selenium |
| 页面对象模型模式 | 页面对象模型模式 |
最佳实践
✅ 应该做
- 使用 data-testid 属性作为稳定的选择器
- 实施页面对象模型,便于维护
- 彻底测试关键用户流程
- 在多个浏览器中运行测试(跨浏览器测试)
- 使用显式等待,而不是 sleep/timeout
- 在每次测试后清理测试数据
- 在测试失败时截取屏幕截图
- 尽可能并行执行测试
❌ 不应该做
- 使用脆弱的 CSS 选择器(如 nth-child)
- 测试所有可能的 UI 组合(重点关注关键路径)
- 在测试之间共享状态
- 使用固定延迟(sleep/timeout)
- 忽略不稳定的测试
- 将 E2E 测试用于单元级测试
- 详细测试第三方 UI 组件
- 跳过移动设备/响应式测试
评论
支持 Markdown