21

我正在考虑使用 Playwright 编写一些 E2E 测试。我可以看到该库允许针对 Chromium、Firefox 和 Webkit 运行测试。我的理解是,Webkit 是 Safari 的底层引擎,而 Chromium 是 Chrome(和其他浏览器)的基础。

在针对 Webkit/Chromium 进行测试时,与针对使用底层引擎的面向用户的浏览器进行测试的距离有多近?我想用户在使用 Safari 时可能会遇到一些怪癖,并且在 Webkit 上运行测试时不会被发现。

谢谢

4

1 回答 1

25

Google Chrome、Apple Safari 等常用浏览器嵌入了渲染引擎(Chromium、WebKit)并在它们之上添加了东西。特别是,他们添加了专有媒体编解码器、注入浏览器扩展等。他们还添加了诸如书签同步等周边接口。但是他们重用了底层的 Web 平台实现。

Chromium 是 Google Chrome、Opera、Microsoft Edge 和其他浏览器使用的开源 Web 平台实现。它实现了 Web 规范、呈现内容、与网络一起工作等。Playwright 使用库存 Chromium 构建,可以通过 Playwright API 自动化进行 e2e 测试。

对于 Google Chrome,事情很简单:Chromium 是一个安全的测试目标,以专有媒体编解码器和 DRM 为模。您可以针对现有的 Chrome Canary 或 Edge Canary 将 Playwright 指向使用专有媒体编解码器。

网络套件

WebKit 是 Apple Safari 和 Epiphany 使用的开源 Web 平台实现。截至 2020 年 6 月,Playwright 提供了一个 WebKit 构建,可以使用 Playwright API 自动化进行 e2e 测试。Playwright WebKit 适用于所有平台(macOS、Linux、Windows),包括无头和有头模式。

当 WebKit 在 macOS 上运行时,测试 Safari 是一个安全的目标。Linux 和 Windows 上的 WebKit 在以下方面与 Apple Safari 不同:它使用非 macOS 网络堆栈,使用非核心动画来合成场景并生成图像光栅。这意味着 Linux 和 Windows 上的屏幕截图不会与 macOS 上的屏幕截图完美匹配。在 Web 平台方面,相同的 WebKit 代码将布局页面并运行 JavaScript——它将与 WebKit 在 Safari 中的工作方式相匹配。

总而言之,我们认为 Playwright 提供的浏览器是您可以进行 e2e 测试的最佳浏览器。在 Linux CI 上运行 WebKit 将使用与 macOS 不同的合成管道,但它可用于在 WebKit 驱动的浏览器中对 Web 应用程序进行 e2e 测试。

于 2020-06-04T23:00:47.663 回答