Chromium Chronicle #17:瀏覽器測試混合

第 17 集:由加州舊金山的 Toby Huang 著 (2021 年 1 月)
上集節目

瀏覽器測試是 Chromium 程式碼的自動化測試形式,比單元測試更詳細。瀏覽器測試會建立瀏覽器執行個體並測試各種 UI 元素,而不只是測試簡單的輸入/輸出功能,就像單元測試一樣。整合式自動化測試對於模擬使用者的端對端體驗至關重要。編寫瀏覽器測試時,您通常會希望透過程式執行使用者可手動執行的設定動作。為了幫助您達成這個目標,mixins 是一套工具,能夠以可重複使用的方式執行複雜的瀏覽器測試設定。

實用的混合函式範例:

  • 如要測試無痕模式,請GuestUserMixin
  • UserPolicyMixin:用於從伺服器模擬使用者政策
  • FakeGaiaMixin 用於模擬來自 Gaia 伺服器的回應

你可以自行建立自訂組合,用於許多用途!

以下程式碼片段是以訪客使用者身分登入,以便進行測試。請務必確保這項功能在無痕模式中正常運作

正確做法
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

想以 Family Link 使用者身分登入測試嗎?LoggedInUserMixin 可讓您輕鬆登入。如果功能會影響與兒童監督相關的任何功能,您應針對受監督的使用者測試該功能。可能會發現兒童使用者已停用無痕模式,或未經家長核准才能安裝擴充功能。LoggedInUserMixin 是由其他混合物組成的複合混合。

正確做法
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest {
 protected:
  void SetUpOnMainThread() override {
    MixinBasedInProcessBrowserTest::SetUpOnMainThread();
    logged_in_user_mixin_.LogInUser();
  }

 private:
  LoggedInUserMixin logged_in_user_mixin_{&mixin_host_,
                                          LoggedInUserMixin::LogInType::kChild,
                                          embedded_test_server(), this};
};

混和的其中一個主要優點是使用組合而非繼承,並避免鑽石多重繼承發生問題。沿用多個測試基礎類別會導致菱形問題,但您可以混合搭配使用混合兩者,同時避免這個問題。使用 Mixins 並不會完全取消繼承,因為瀏覽器測試類別仍需要繼承 MixinBasedInProcessBrowserTest,但基礎類別為一般用途和輕量。

資源