使用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
相关推荐
Forever7_1 天前
重磅!Vue3 手势工具正式发布!免费使用!
前端·前端框架·前端工程化
memeflyfly4 天前
Vercel 自动部署完全指南:从配置到问题排查
前端·前端工程化
张拭心5 天前
什么是 Harness Engineering,为什么最近都在说它
前端·ai编程·前端工程化
Patrick_Wilson7 天前
你删过 lock 文件吗?聊聊包管理器迁移中 90% 的人会踩的坑
javascript·npm·前端工程化
WaitingChen9 天前
Vite 环境变量一个隐藏大坑:为什么 `import.meta.env?.XXX` 会让你线上翻车?
前端工程化
乘方12 天前
Vite 和 Wepack 中如何处理环境变量
前端工程化
sunny_12 天前
熬夜通宵读完 VitePlus 全部源码,我后悔没早点看
前端·前端框架·前端工程化
eason_fan12 天前
踩坑记录:Mac M系列芯片下 pnpm dlx 触发的 esbuild 架构不匹配错误
前端·前端工程化
sudo_jin14 天前
《前端工程化:从零重构》课程第一章:混乱的起源 —— 当项目失去秩序
前端工程化
siger14 天前
徒手开荒-我用纯Nodejs+pnpm+monorepo改造了一个多vue2的iframe"微前端"项目
前端·node.js·前端工程化