Chromium Chronicle n°17: mixins de test de navigateur

Épisode 17:Toby Huang à San Francisco, Californie (janvier 2021)
Épisodes précédents

Les tests de navigateur sont une forme de tests automatisés du code Chromium, qui sont plus complets que les tests unitaires. Les tests de navigateur créent des instances de navigateur et testent divers éléments d'interface utilisateur, au lieu de simplement tester des fonctionnalités d'entrée/sortie pure comme le font les tests unitaires. Les tests automatisés intégrés sont importants pour simuler l'expérience utilisateur de bout en bout. Lorsque vous écrivez un test de navigateur, vous souhaitez souvent effectuer de manière programmatique des actions de configuration que l'utilisateur pourrait effectuer manuellement. Pour vous aider dans cette tâche, les combinaisons sont une suite d'outils qui permettent d'effectuer des configurations de test de navigateur complexes de manière réutilisable.

Exemples de mixins utiles:

  • GuestUserMixin pour tester le mode navigation privée
  • UserPolicyMixin pour simuler les règles relatives aux utilisateurs à partir du serveur.
  • FakeGaiaMixin pour simuler les réponses du serveur GAIA.

Vous pouvez créer vos propres mixins personnalisés afin de les diffuser à des fins diverses.

L'extrait de code ci-dessous se connecte en tant qu'utilisateur invité pour votre test. Il est important de vous assurer que votre fonctionnalité fonctionne en mode navigation privée.

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

LoggedInUserMixin est un moyen pratique de se connecter en tant qu'utilisateur Family Link pour votre test. Si votre fonctionnalité a une incidence sur la supervision d'un enfant, vous devez la tester pour les utilisateurs supervisés. Il est possible que vous oubliiez que le mode navigation privée est désactivé pour les utilisateurs enfants ou qu'ils ne peuvent pas installer d'extensions sans l'approbation d'un parent. LoggedInUserMixin est un mixin composé d'autres mixins.

À faire
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};
};

L'un des principaux avantages des mixins est d'utiliser la composition au lieu de l'héritage, et d'éviter les problèmes d'héritage multiple en losange. L'héritage de plusieurs classes de base de test entraîne le problème du losange, mais vous pouvez combiner plusieurs mixins tout en évitant ce problème. L'utilisation de mixins ne permet pas de se débarrasser complètement de l'héritage, car la classe de test du navigateur doit toujours hériter de MixinBasedInProcessBrowserTest. Heureusement, cette classe de base est légère et à usage général.

Ressources