Chromium Chronicle Nr. 17: Browser-Testmixins

Folge 17: von Toby Huang aus San Francisco, Kalifornien (Januar 2021)
Vorherige Folgen

Browsertests sind eine Form automatisierter Tests für Chromium-Code, die als Unittests. Browserinstanzen erstellen und testen verschiedene UI-Elemente, anstatt nur die Eingabe-/Ausgabefunktionalität zu testen wie bei Einheitentests. Integrierte automatisierte Tests sind wichtig für die Simulation die End-to-End-Erfahrung der Nutzenden zu verbessern. Wenn Sie einen Browsertest programmieren, zum programmatischen Ausführen von Einrichtungsaktionen, die der Nutzer manuell durchführen könnte. Zu diesem Zweck sind Mixins eine Suite von Tools, mit denen Sie auch in einem Browsertest auf wiederverwendbare Weise einrichten.

Beispiele für nützliche Mixins:

  • GuestUserMixin zum Testen des Inkognitomodus
  • UserPolicyMixin für simulierte Nutzerrichtlinien über den Server
  • FakeGaiaMixin für Mocking-Antworten vom GAIA-Server

Sie können Ihre eigenen benutzerdefinierten Mixins erstellen, die eine Vielzahl von Zwecken erfüllen.

Mit dem folgenden Snippet melden Sie sich als Gastnutzer für Ihren Test an. Es ist wichtig, prüfen Sie, ob die Funktion im Inkognitomodus funktioniert.

Do
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin ist eine praktische Möglichkeit, sich als Family Link-Nutzer anzumelden Ihren Test. Wenn Ihre Funktion Auswirkungen auf die Elternaufsicht hat, sollten Sie Ihre Funktion für betreute Nutzer testen. Ein möglicher Fehler ist Sie vergessen, dass minderjährige Nutzer den Inkognitomodus deaktiviert haben oder die Installation nicht durchführen können. ohne Zustimmung der Eltern. LoggedInUserMixin ist ein Mischmixin aus anderen Mixinen besteht.

Do
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};
};

Einer der Hauptvorteile von Mixins ist die Verwendung der Zusammensetzung Vererbung und Vermeidung von Problemen mit der mehrfachen Vererbung von Diamanten. Die Übernahme von mehr als einer Testbasisklasse führt zum Diamantproblem, Sie können Mixins aber auch kombinieren, um dieses Problem zu vermeiden. Mixins verwenden die Vererbung nicht vollständig beseitigt, da die Browser-Testklasse immer noch muss von MixinBasedInProcessBrowserTest übernehmen, aber das ist glücklicherweise Die Basisklasse ist allgemein einsetzbar und schlank.

Ressourcen