SuperAPI AI 工具集

playwright-testing

测试与质量

查看项目

更新于 10-16 06:00

技能介绍

用途

本技能用于使用 Playwright 对 Web 应用进行端到端(E2E)测试,强调跨浏览器、快速和可靠。资料来源于 Playwright 最佳实践、Playwright 官方文档和 Better Stack 指南。

安装与配置

新项目安装:

npm init playwright@latest

已有项目安装:

npm install -D @playwright/test
npx playwright install

配置通过 playwright.config.ts 完成,可设置测试目录、并行执行、CI 环境下的重试与 worker 数量、报告器、baseURL、trace、截图、视频,以及多浏览器项目(chromium、firefox、webkit、移动端视口)和 webServer 启动命令。

项目结构

推荐结构包含 e2e/fixtures(认证与测试 fixture)、e2e/pages(页面对象)、e2e/tests(测试用例)、e2e/utils(辅助函数与测试数据工厂)、e2e/auth.setup.ts(全局认证设置)、playwright.config.ts 以及 .auth/(存储认证状态,需 gitignore)。

定位器策略

按优先级推荐:角色定位(getByRole)、面向用户的文本(getByLabel、getByPlaceholder、getByText、getByTitle)、测试 ID(getByTestId);避免 CSS 选择器,禁止使用 XPath。支持链式定位与在列表内过滤。

页面对象模型

提供抽象基类 BasePage(含导航、等待加载、通用 header/footer 与导航点击),以及具体页面类如 LoginPage、DashboardPage,通过 index.ts 统一导出。

身份认证

通过全局认证设置(auth.setup.ts)登录并保存 storageState 到 .auth/user.json,在配置中为各浏览器项目引用该状态并声明依赖 setup。无需认证的测试可通过 test.use({ storageState: { cookies: [], origins: [] } }) 覆盖。

测试编写

包含基础测试结构(test.describe、beforeEach)、用户流程测试(如完整购买流程,含 Stripe iframe 测试卡填写)。

断言

推荐使用 Web-First 自动等待断言(toBeVisible、toBeEnabled、toHaveText、toHaveURL、toHaveTitle 等),避免手动 waitForTimeout。支持软断言(expect.soft)。常见断言涵盖可见性、文本内容、状态、数量、页面级断言与截图。

网络模拟

可通过 page.route 模拟 API 响应(成功或错误),使用 page.waitForResponse 等待 API 调用。

视觉测试

支持整页截图与元素截图,可设置 maxDiffPixels 和 mask 忽略动态内容。

CI/CD 集成

提供 GitHub Actions 工作流示例,包含检出、Node 设置、依赖安装、Playwright 浏览器安装、运行测试(通过 secrets 传入 BASE_URL 与测试账号)、失败时上传报告工件。

运行命令

支持运行全部测试、指定文件、按标签(--grep)、有头模式、指定浏览器、调试模式以及查看 HTML 报告。

测试数据

使用 @faker-js/faker 创建用户与产品数据工厂,并通过 .env.test 管理环境变量。

调试

支持 Trace Viewer(trace: 'on-first-retry'、npx playwright show-trace)、调试模式(--debug、page.pause())以及 VS Code 扩展(从编辑器运行、断点调试、可视化选取定位器、监视模式)。

死链检测

资料强调每个项目必须包含死链检测测试,并在每次部署时运行。提供了链接验证测试文件 e2e/tests/links.spec.ts 的开头部分,但内容在资料中未完整提供。

限制

资料未提供收费、价格、平台支持范围、性能指标或效果保证等信息。