第 10 集:Sven Zheng 在华盛顿州贝尔维尤 (2020 年 1 月)
前几集
Chrome 的测试策略在很大程度上依赖于自动化功能正确性测试和手动测试,但这两种测试都无法可靠地捕获轻微的界面回归问题。使用像素测试自动测试桌面浏览器界面。
编写像素测试时,请通过以下方式避免不稳定:(1) 停用动画、(2) 使用模拟数据,以及 (3) 测试尽可能小的表面区域。
下面是用于验证万能搜索框像素是否正确的示例图片:
用于验证浏览器是否与此图片匹配的代码:
IN_PROC_BROWSER_TEST_F(SkiaGoldDemoPixelTest, TestOmnibox) {
// Always disable animation for stability.
ui::ScopedAnimationDurationScaleMode disable_animation(
ui::ScopedAnimationDurationScaleMode::ZERO_DURATION);
GURL url("chrome://bookmarks");
AddTabAtIndex(0, url, ui::PageTransition::PAGE_TRANSITION_FIRST);
auto* const browser_view = BrowserView::GetBrowserViewForBrowser(browser());
// CompareScreenshot() takes a screenshot and compares it with the
// golden image, which was previously human-approved, is stored
// server-side, and is managed by Skia Gold. If any pixels differ, the
// test will fail and output a link for the author to triage the
// new image.
bool ret = GetPixelDiff().CompareScreenshot("omnibox",
browser_view->GetLocationBarView());
EXPECT_TRUE(ret);
}
此代码位于 chrome/test/pixel/demo/skia_gold_demo_pixeltest.cc。相关头文件分别为单元测试的 skia_gold_pixel_diff.h
和浏览器测试的 browser_skia_gold_pixel_diff.h
。
像素差异和审批流程由 Skia Gold 提供支持。Skia Gold 像素测试提供直观的审批工作流,让开发者可以通过批准多个金像素图片来接受小片状错误。
目前,测试套件在 Windows FYI 聊天机器人上运行。支持浏览器测试和 View 单元测试。