在 Safari 和 Webkit 上进行测试有啥区别?
Posted
技术标签:
【中文标题】在 Safari 和 Webkit 上进行测试有啥区别?【英文标题】:What is the difference between testing on Safari vs Webkit?在 Safari 和 Webkit 上进行测试有什么区别? 【发布时间】:2020-09-22 19:36:45 【问题描述】:我正在考虑使用 Playwright 编写一些 E2E 测试。我可以看到该库允许针对 Chromium、Firefox 和 Webkit 运行测试。我的理解是,Webkit 是 Safari 的底层引擎,而 Chromium 是 Chrome(和其他浏览器)的基础。
在针对 Webkit/Chromium 进行测试时,与针对使用底层引擎的面向用户的浏览器进行测试有多接近?我想用户在使用 Safari 时可能会遇到一些怪癖,而在 Webkit 上运行测试时不会被发现。
谢谢
【问题讨论】:
【参考方案1】:Google Chrome、Apple Safari 等常用浏览器嵌入了渲染引擎(Chromium、WebKit)并在它们之上添加内容。特别是,他们添加了专有媒体编解码器、注入浏览器扩展等。他们还添加了诸如书签同步之类的周边接口。但是他们重用了底层的网络平台实现。
铬
Chromium 是 Google Chrome、Opera、Microsoft Edge 和其他浏览器使用的开源 Web 平台实现。它实现了 Web 规范、呈现内容、使用网络等。Playwright 使用库存 Chromium 构建,可以通过 Playwright API 自动化进行 e2e 测试。
对于 Google Chrome,事情很简单:Chromium 是一个安全的测试目标,以专有媒体编解码器和 DRM 为模。您可以针对现有的 Chrome Canary 或 Edge Canary 将 Playwright 指向使用专有媒体编解码器。
WebKit
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 测试。
【讨论】:
这是轶事,但我在 macOS 上运行,我遇到了 Playwright 的 webkit 和 Safari 之间的差异:this bug 影响 Safari,但我的测试在 Playwright 中没有失败。这可能是 Safari 的问题(不是 webkit),但对 Playwright 来说绝对不是很好:我不确信我的 UI 测试是否真的涵盖了 Safari以上是关于在 Safari 和 Webkit 上进行测试有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cucumber 和 Capybara-Webkit 在 Rails 4 上进行 typeahead.js 测试失败
Chrome/Safari/Webkit 上的额外填充——有啥想法吗?
使用 webkit 目录和目录上传文件夹在 safari 浏览器上不起作用
在 opencv3 上进行视差映射的 cv2.StereoSGBM_create() 和 cv2.StereoBM_create() 函数有啥区别?