Playwright 端到端测试实战指南

以官方 TodoMVC 演示页面为例,说明 Playwright 端到端测试流程:环境搭建、编写与运行测试、UI 模式时间旅行调试,以及视觉回归检测。

最佳实践
测试检测与质量验证插画

本文依据官方文档整理,未执行运行验证或性能基准。代码片段展示局部用法,业务函数、数据和环境需按项目补齐;版本与配置以所引文档为准。

直接回答:用 Playwright 做端到端测试的标准路径是:安装初始化 → 编写测试脚本 → 用 UI 模式调试 → 接入视觉回归检测。本文基于官方演示页面给出示例,不声称已在你的项目中完整运行。

准备演示项目

使用 Playwright 官方 TodoMVC 演示页面 https://demo.playwright.dev/todomvc/,无需虚构仓库地址或假定它在3000端口启动。该公开页面仅用于少量功能学习,不能进行高并发压测;CI 应使用自行部署且版本固定的测试应用。

安装与初始化 Playwright

npm init playwright@latest

向导会生成 playwright.config.ts、tests/ 目录并提示安装浏览器:

npx playwright install

演示配置:

import { defineConfig } from "@playwright/test";

export default defineConfig({
  use: { baseURL: "https://demo.playwright.dev" },
});

第一个测试

tests/todo.spec.ts:

import { test, expect } from "@playwright/test";

test("可以新增并完成一条待办", async ({ page }) => {
  await page.goto("/todomvc/");

  await page.getByPlaceholder("What needs to be done?").fill("写测试");
  await page.keyboard.press("Enter");
  await expect(page.getByText("写测试")).toBeVisible();

  await page.locator(".todo-list li").getByRole("checkbox").check();
  await expect(page.locator(".todo-list li")).toHaveClass(/completed/);
});

npx playwright test 无头跑完;npx playwright test --headed 能看到真实浏览器操作过程。

UI 模式:时间旅行调试

npx playwright test --ui

UI 模式是 Playwright 的杀手级体验:左侧用例树,右侧逐步骤回放——每一步都有当时的 DOM 快照、网络请求和控制台输出。测试失败时不用再对着日志脑补现场,直接拖动时间轴看"哪一步开始不对"。

视觉回归检测

功能断言抓不到"样式悄悄变了"这类问题,交给视觉对比:

test("首页视觉基线", async ({ page }) => {
  await page.goto("/todomvc/");
  await expect(page).toHaveScreenshot("home.png");
});

首次缺少基线时测试会写出图像并报告失败,需要人工审阅后建立基线;之后才比较差异。操作系统、浏览器版本、字体与动态数据须一致。基线更新用 npx playwright test --update-snapshots——更新前务必人工核对 diff。

常见问题(FAQ)

Q:测试在 CI 上失败但本地通过?
A:可能是时序、依赖或资源差异。CI 机器慢,动画/接口耗时不同。消灭手写 sleep、改用自动等待断言;CI 上开启 trace 收集,失败时下载 Trace Viewer 回放。

Q:视觉回归的阈值怎么定?
A:按实际截图和允许变化区域评估,不能直接接受统一1%误差。先固定渲染环境,必要时mask动态区域,避免掩盖小而关键的视觉回归。

Q:webServer 每次起服务太慢?
A:只有测试自行部署的应用时才配置 webServer 的 command/url;用 reuseExistingServer: !process.env.CI 可以本地复用,CI 不复用旧实例。官方在线演示不需要 webServer。

官方参考

资料核对日期:2026-09-29。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台