Folge 10:von Sven Zheng in Bellevue, Washington (Januar 2020)
Vorherige Folgen
Die Teststrategie von Chrome basiert stark auf automatisierten Tests zur Funktionskorrektheit und manuellen Tests. Mit keiner dieser Methoden lassen sich jedoch zuverlässig kleinere UI-Regressionen erkennen. Verwenden Sie Pixeltests, um die Tests Ihrer Desktop-Browser-Benutzeroberfläche zu automatisieren.
Achten Sie beim Erstellen eines Pixeltests darauf, dass er möglichst fehlerfrei ist. Deaktivieren Sie dazu (1) die Animation, (2) verwenden Sie Mock-Daten und (3) testen Sie die kleinstmögliche Oberfläche.
Hier ist ein Beispielbild, mit dem die Pixelrichtigkeit für die Omnibox überprüft wird:
Der Code zur Bestätigung des Browsers stimmt mit diesem Bild überein:
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);
}
Der Code befindet sich unter chrome/test/pixel/demo/skia_gold_demo_pixeltest.cc.
Die relevanten Überschriften sind skia_gold_pixel_diff.h
für Unit-Tests und browser_skia_gold_pixel_diff.h
für Browsertests.
Die Pixel-Differenzierung und der Genehmigungsprozess werden von Skia Gold unterstützt. Skia Gold-Pixeltests bieten einen visuellen Genehmigungsablauf und ermöglichen es Entwicklern, kleine Flakes zu akzeptieren, indem sie mehrere Goldbilder genehmigen.
Derzeit wird die Testsuite auf dem Windows-FYI-Bot ausgeführt. Browsertests und Unit-Tests für Ansichten werden unterstützt.