使用Playwright进行UI自动化测试指南

背景

为了保障项目组件库的质量,我们急需实施UI自动化测试。虽然之前的单元测试已经确保了API的质量,但它们无法验证视觉效果是否达到预期。经过对比各种UI自动化工具,我们选择了Playwright,以补充单元测试无法覆盖的范围,尤其是在渲染截图对比等方面。

官方文档链接 :Playwright 官方文档

环境配置

由于Playwright测试需要调用浏览器进行测试,因此要求本机安装与Playwright版本相匹配的浏览器。

  • 在外网环境下:直接按照官方安装方法进行安装。
  • 在内网环境下 :若公司内部开发环境没有外网,且未设置下载代理,则需手动将浏览器复制到相应的文件夹下。具体步骤为:在有外网的计算机上安装Playwright,然后从C:\Users\{用户名}\AppData\Local\ms-playwright目录下找到并压缩浏览器文件,再将其复制到无外网计算机上的相应目录并解压。

生成测试用例

  • 使用录制器生成用例 :可参考官方录制器说明来生成测试用例。
  • 参考安装后生成的例子 :安装Playwright后,项目中会包含测试用例的示例,可直接参考这些例子。
  • 查阅官方文档 :对于复杂用例,可以查阅官方API文档来找到所需的API。

开始测试

推荐使用IDE进行测试:

  • VsCode :可参考官方介绍进行测试。
  • JetBrains系列IDE :
    1. 安装插件
    2. 运行测试

使用命令行测试:

在终端中运行以下命令,它将在playwright.config配置的所有浏览器上执行测试,并直接在终端显示结果。

bash 复制代码
npx playwright test

若希望直观地查看测试过程中的每一步,可以使用以下命令,它会调起浏览器进行测试。但请注意,使用此命令生成的截图可能与上述命令略有不同(分辨率可能因浏览器边框而略有差异)。因此,建议在所有用例测试通过后,重新使用无UI命令生成最终的截图。

bash 复制代码
npx playwright test --ui

测试执行流程

  1. 截图生成与对比 :Playwright会在执行每个测试用例时生成截图,并与基准截图进行对比。
  2. 基准截图管理:首次测试时,由于缺少基准截图,测试会失败。此时,应保存生成的截图作为基准截图,供后续测试对比使用。
  3. 截图存储位置 :截图保存在__test__/components/包名/模块名/test.spec.ts-snapshots目录下。
  4. 差异审查与处理:若截图对比存在差异,需仔细审查差异部分,判断是否为预期变化或bug。对于预期变化,更新代码仓库上的基准截图;对于bug,及时修复并重新测试。

测试结果查看

  • 本机查看 :若本机测试失败,Playwright会在控制台输出错误信息。可以直接在test-results目录查看生成的截图来对比预期结果和实际结果,或使用以下命令查看详细的测试报告。
bash 复制代码
npx playwright show-trace ./test-results/trace.zip

也可以在playwright.config.ts中配置reporter字段为html,以便在测试用例失败时自动打开浏览器呈现可视化错误报告。

  • 流水线查看 :若流水线阶段执行失败,Playwright会在控制台输出错误信息,并将相关报告上传至流水线的作业工件。可以点击失败的流水线作业,下载测试报告附件到本地进行查看。

CI部署

由于我们的开发环境是Windows,因此基准截图的生成也在Windows上进行。考虑到Linux环境下的页面渲染可能与Windows存在细微差别(如字体不一致),在Linux环境下部署CI可能会导致截图对比失败。因此,我们选择Windows环境进行部署。我们的代码托管在GitLab上,需要在Windows平台上运行并注册Runner。

  1. 根据GitLab Runner官方下载版本号选择适合的版本,然后替换GitLab Runner下载链接的{version}进行下载。
  2. 下载完成后,将exe执行文件放置到指定的Runner执行文件夹下,例如D:\v11。
  3. 使用自己的GitLab平台地址和Token注册Runner。
bash 复制代码
.\gitlab-runner-windows-amd64.exe register
  1. 启动Runner服务。
bash 复制代码
.\gitlab-runner-windows-amd64.exe install
.\gitlab-runner-windows-amd64.exe start
  1. 根据需求配置Runner(可选,默认配置通常可直接使用)。
  2. 配置项目的.gitlab-ci.yml文件,选择已配置的Runner并设置执行脚本npx playwright test。
相关推荐
DsirNg2 天前
让故障自己找到主人:前端错误的归并、反解与分派系统
可观测性·前端工程化·微前端·灰度发布·监控平台·错误治理·source map
挖掘狂人3 天前
别把 Claude Code 当聊天框:一套「确定性工程」落地手册
aigc·ai编程·前端工程化
mCell12 天前
用 Knip 清理 AI Coding 留下的冗余代码
前端·ai编程·前端工程化
三十而立洋15 天前
深入浅出 Nginx:从核心原理到实战指南
前端·前端工程化
三十而立洋17 天前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
cindershade17 天前
报错之后,谁来证明它属于这次发布?前端错误治理的证据链设计
ci/cd·前端工程化
Flynt21 天前
pnpm 12 换上了 Rust 内核,我拿项目实测了一轮构建速度
rust·vite·前端工程化
梨想橙汁23 天前
Webpack 快速上手:前端工程化、打包原理、从零搭建基础项目
前端·webpack·前端工程化
三十而立洋24 天前
深入理解 npm:从核心机制到常用命令全解析
前端·前端工程化
cindershade1 个月前
把响应式做成可验证的状态切换:Container Queries 的组件级重构方法
css·flexbox·前端工程化