使用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
相关推荐
Marshmallowc15 天前
React 刷新页面 Token 消失?深度解析 Redux + LocalStorage 数据持久化方案与 Hook 避坑指南
javascript·react·数据持久化·redux·前端工程化
eason_fan25 天前
Rspack核心解析:Rust重写Webpack的性能革命与本质
前端·前端工程化
怒放的生命19911 个月前
pnpm + Monorepo 使用教程(集成 Vue 3 项目)
前端·vue.js·pnpm·monorepo·前端工程化
Mintopia1 个月前
意图OS是未来软件形态,它到底解决了什么问题?
人工智能·react native·前端工程化
眯眼因为很困啦1 个月前
GitHub Fork 协作完整流程
前端·git·前端工程化
myltx1 个月前
node-sass 迁移 sass(dart-sass) 后样式报错?用 loader 先把构建救回来
vue.js·前端工程化
user86158185781541 个月前
记一次Vue 2主应用集成Vue 3子项目的Monorepo迁移踩坑指南
前端工程化
Eadia1 个月前
React基础框架搭建8-axios封装与未封装,实现 API 请求管理:react+router+redux+axios+Tailwind+webpack
react.js·前端框架·前端工程化
前端小万1 个月前
告别 CJS 库加载兼容坑
前端·前端工程化
eason_fan1 个月前
前端性能优化利器:LitePage 轻量级全页设计解析
前端·性能优化·前端工程化