我在考虑使用Playwright编写一些端到端的测试。我知道该库允许针对Chromium、Firefox和Webkit运行测试。据我了解,Webkit是Safari的底层引擎,而Chromium是Chrome(和其他浏览器)的基础。
当进行针对Webkit / Chromium的测试时,它与针对使用底层引擎的用户面向浏览器的测试有多接近?我想象中,当用户在Safari上使用时会遇到一些问题,而在Webkit上运行测试时可能无法捕捉到这些问题。
谢谢
我在考虑使用Playwright编写一些端到端的测试。我知道该库允许针对Chromium、Firefox和Webkit运行测试。据我了解,Webkit是Safari的底层引擎,而Chromium是Chrome(和其他浏览器)的基础。
当进行针对Webkit / Chromium的测试时,它与针对使用底层引擎的用户面向浏览器的测试有多接近?我想象中,当用户在Safari上使用时会遇到一些问题,而在Webkit上运行测试时可能无法捕捉到这些问题。
谢谢
像Google Chrome、Apple Safari这样的浏览器嵌入了渲染引擎(Chromium、WebKit)并在其之上添加了一些东西。特别是,它们添加了专有的媒体编解码器,注入了浏览器扩展等。它们还添加了周围的接口,如书签同步。但它们重用了底层的Web平台实现。
Chromium是由Google Chrome、Opera、Microsoft Edge和其他浏览器使用的开源Web平台实现。它实现了Web规范,呈现内容,与网络协作等。Playwright使用一个可以通过Playwright API进行自动化端到端测试的默认Chromium构建。
对于Google Chrome而言,事情很简单:Chromium是一个安全的测试目标,除了专有的媒体编解码器和数字版权管理(DRM)。您可以将Playwright指向默认的Chrome Canary或Edge Canary以使用专有的媒体编解码器。
WebKit是由Apple Safari和Epiphany使用的开源Web平台实现。从2020年6月开始,Playwright提供了一个可通过Playwright API进行自动化端到端测试的WebKit构建。Playwright WebKit适用于所有平台(macOS、Linux、Windows),可以在无头和有头模式下工作。
当 WebKit 运行在 macOS 上时,它是测试 Safari 的安全目标。但是,在 Linux 和 Windows 上,与 Apple Safari 不同之处在于:它使用非 macOS 网络堆栈,使用非 Core Animation 来合成场景和生成图像光栅。这意味着 Linux 和 Windows 上的屏幕截图将无法完全匹配 macOS 上的屏幕截图。在 Web 平台方面,相同的 WebKit 代码将布局页面并运行 JavaScript - 它将与 Safari 中 WebKit 的工作方式相匹配。
总而言之,我们认为 Playwright 提供的浏览器是进行端到端测试所能得到的最佳选择。在 Linux CI 上运行 WebKit 将使用不同的合成管道而非 macOS,但可以用于测试基于 WebKit 的浏览器中的 Web 应用程序。
"playwright1v17": "npm:playwright@~1.17.2",
"playwright1v28": "npm:playwright@~1.28.1",
然后在测试脚本中,我执行以下操作:
import { chromium, webkit, firefox } from 'playwright1v28';
import { webkit as safari16v1 } from 'playwright1v17';
这让我能够测试WebKit的两个版本并进行比较,还可以测试Chromium和Firefox。