本文基于 playwright v1.34.3, node v18.16.0
注意:playwright 版本随 node lts 版本更新而更新,所以请确保 node 版本与 playwright 版本匹配。
写在前面
前端开发阶段,少不了测试,一般包含两类测试:单元测试、端对端测试(e2e)。
对于组件和函数,单元测试库如jest
、mocha
, 就可以轻松胜任。但如果是涉及到页面多模块的复杂交互场景,e2e就必不可少了。e2e能做到:
模拟用户在浏览器中的操作
模拟真实浏览器运行环境
操控运行时环境,获取运行时的数据
截屏比对各个节点效果
e2e,开源领域有许多工具可用,出名的有google的puppeteer
。当然puppeteer
只是提供了与chrome
浏览器交互的能力,要做到e2e,你还需使用如jest
的测试库。
这里要介绍一下另一个e2e测试工具,本文的主角,专为e2e而生的playwright
("剧作家")。
playwright 是什么
「GitHub Copilot回答」: “Playwright 是一个 Node.js 库,用于自动化浏览器、单页应用程序和跨浏览器测试。它支持 Chromium、Firefox 和 WebKit,可以在这些浏览器中执行自动化测试、爬虫、性能测试等任务。Playwright 还提供了一些方便的 API,如截图、录制视频、模拟用户输入等。同时,Playwright 还支持多种语言,如 JavaScript、TypeScript、Python、Java 和 C# 等。”
为什么选择 playwright
比起“傀儡师”(puppeteer
)拥有的操作浏览器的能力,剧作家(playwright
)拥有的支持跨操作系统、多浏览器、多开发语言的创作能力,显然更加强大。(国内下载安装友好!!)
首先,playwright
出自名门,是微软研发团队所开发的一款Web自动化测试框架,发布于2020年初。强大的开源社区为 playwright
的持续发展,提供了稳定的保障。紧跟浏览器版本,及时发布适配版本。
其次,核心成员有来自puppeteer
团队的,和前辈puppeteer
是一脉相承。所以puppeteer
的项目,基本可以做到无缝对接。
最后,最重要的能力,也醒目地写在 github 的 README.md 里面, 这里简要概括一下:
稳定性高,不易出错,支持“Auto-wait”、“Web-first assertions”、“Tracing”;
无需取舍,不受限制,“Multiple everything”、“Trusted events”、“Test frames, pierce Shadow DOM”;
隔离性强,执行速度快,“Browser contexts”、“Log in once”;
工具强大,拥有“Codegen”、“Playwright inspector”、“Trace Viewer”;
直接安装使用
和puppeteer
一样,除了需要安装 playwright