微软开源 WebUI 自动化测试神器 Playwright
使用 Playwright 进行快速可靠的跨浏览器测试。
前言:
现如今,Web 的开发与发布速度是非常快的;Web 应用变得越来越复杂,而且可以在所有设备上运行——我们的手机、平板电脑和台式机等,每个设备都运行不同的浏览器引擎。速度和目标的增加给测试过程带来了巨大的压力: 跨浏览器的自动化测试越来越重要。
End-to-end 的自动化测试功能非常强大:至少在理论上,通过模拟用户交互行为,它们可以验证功能、性能和可用性。
但在实践中,end-to-end 测试可能很慢,不稳定且难以维护。
今天我们就来隆重介绍一下 Playwright,它是一个跨浏览器的自动化库,将其用于测试时显得更加快速、可靠和强大。
Playwright 可以跨多种浏览器测试网络应用:
基于 chromium 的浏览器,如谷歌 Chrome 和新的 Microsoft Edge;
基于 webkit 的苹果 Safari;
基于 gecko 的 Mozilla Firefox;
现在,Playwright 1.7.0已经在npm上可用了。
借助单个 API,Playwright 可以在基于可靠和快速执行的基础上跨不同的浏览器自动执行各种场景。
Playwright 通过无超时自动化提高了可靠性
现在的 Web 应用程序样式丰富且交互性强,并动态响应用户的操作。诸多的异步行为使应用程序难以实现自动化预测,网络请求可能比平时花费更长的时间,导致一直在加载的状态。
Playwright 为 UI 准备了自动等待,这有助于测试者创建可靠且易于编写的测试。
例如,点击页面时,将自动等待目标元素可见并可用。
这样,开发人员或者测试人员可以编写专注于测试场景的测试用例,而不是针对时间或 UI 状态的测试。久而久之,这显著提高了测试代码的可维护性。
实际上,Playwright 使用了事件驱动的架构,可以侦听浏览器事件。Playwright 测试可以准确地等待 DOM 更改、网络请求,甚至新的控制台日志。 Playwright 使用与浏览器的开发者工具(F12)相同的协议,这些工具是开发人员都熟悉而且喜欢的工具。
通过精确的浏览器事件,自动化脚本可以避免超时。在传统的 end-to-end 测试中,等待应用加载完成通常是管理异步行为的唯一方法。但是,超时是一个滑坡效应:它们总是导致不一致的失败或“不稳定的测试”。
如下图,自动等待页面操作和 API,以实现更精细的控制。
Playwright 可扩展的自动化:快速,并行执行
Playwright 旨在 在本地和云环境中提供快速、并行的自动化测试;Chromium,Firefox 或 WebKit 的单个实例可以创建多个隔离的并发的浏览器上下文。这显着提高了性能,并支持独立的多页面模拟场景。
一个浏览器可以承载多个 web 页面并定义上下文级的行为,例如网络拦截或身份验证凭据。浏览器上下文还可以模拟移动视图,模拟地理位置和区域环境。这使单个 WebKit 实例可在多个设备配置上并行执行多个页面场景:desktop,iPhone 和 iPad。
现在和未来的 Web 自动化
Web 平台比以往任何时候都更有强大,而且还在不断发展。Playwright 的出现是为了跟上网络浏览器和 Web 应用程序不断增长的功能。它还包括渐进式 Web 应用程序(PWA)使用的更新的浏览器功能。
Playwright 可以通过一个 API 自动化实现 Chromium,Firefox 和 WebKit 的多种功能:
模拟移动视图,权限,地理位置和区域设置
通过 shadow-piercing 选择器支持 Web 组件
网络拦截,用于修改和模拟网络活动
文件上传和下载
跨多个框架,选项卡和弹出窗口的方案
来自鼠标和键盘的可信赖本机输入事件
网络工作者和进程外 iframe
Playwright-可以拦截网络请求,从而中止,修改或模拟网络请求,如下:
Playwright 入门:在本地和 CI
目前在 npm 上更新到 Playwright 1.7.1,官网地址:https://www.npmjs.com/package/playwright
安装 Playwright
前提是你需要安装过 Node.js
Win 系统安装过程如下图:
版权声明: 本文为 InfoQ 作者【软测小生】的原创文章。
原文链接:【http://xie.infoq.cn/article/f6c097665c46ff42255efc1bd】。文章转载请联系作者。
评论