Chromium Chronicle n°17: mixins de test de navigateur

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

Les tests de navigateur sont une forme de tests automatisés pour le code Chromium qui est plus de bout en bout que les tests unitaires. Les tests du navigateur créent des instances et testent divers éléments d'interface utilisateur, au lieu de simplement tester les fonctionnalités d'entrée/sortie uniquement comme les tests unitaires. Les tests automatisés intégrés sont importants pour simuler l'expérience de bout en bout. Lorsque vous écrivez un test de navigateur, pour effectuer de manière programmatique des actions de configuration que l'utilisateur peut effectuer manuellement. Pour vous aider, les mixins sont une suite d'outils une configuration de test pour navigateur de manière réutilisable.

Exemples de mixin utiles:

  • GuestUserMixin pour tester le mode navigation privée
  • UserPolicyMixin pour simuler la règle relative aux utilisateurs à partir du serveur
  • FakeGaiaMixin pour la simulation de réponses du serveur GAIA

Vous pouvez créer vos propres mixins personnalisés pour des raisons très diverses.

L'extrait ci-dessous se connecte en tant qu'utilisateur invité pour votre test. Il est important de assurez-vous que la 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é affecte un élément lié à la supervision des enfants, vous devez tester la fonctionnalité pour les utilisateurs supervisés. Un bug possible est oublier que les utilisateurs enfants ont désactivé le mode navigation privée ou ne peuvent pas installer sans l'approbation de vos parents. LoggedInUserMixin est un mixin composé. 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 plutôt que l'héritage et d'éviter les problèmes liés à l'héritage multiple de losange. Hériter de plusieurs classes de base de test conduit au problème du losange, mais vous pouvez mélanger et mélanger tout en évitant ce problème. Utiliser des mixins ne supprime pas complètement l'héritage, car la classe de test du navigateur doit hériter de MixinBasedInProcessBrowserTest, mais heureusement, est à usage général et légère.

Ressources