Chromium Chronicle #17: mixins de teste de navegador

Episódio 17:por Toby Huang em São Francisco, Califórnia (janeiro de 2021)
Episódios anteriores

Os testes do navegador são uma forma de teste automatizado para o código do cromo que são mais completos do que os testes de unidade. Os testes de navegador criam instâncias e testam vários elementos de IU em vez de apenas testar a funcionalidade de entrada/saída pura como os testes de unidade fazem. Os testes automatizados integrados são importantes para simular experiência completa do usuário. Ao criar um teste de navegador, muitas vezes para realizar de forma programática ações de configuração que o usuário poderia fazer manualmente. Para ajudar você a fazer isso, os mixins são um conjunto de ferramentas para realizar tarefas da configuração do teste do navegador de forma reutilizável.

Exemplos de mixins úteis:

  • GuestUserMixin para testar o modo de navegação anônima
  • UserPolicyMixin para simular a política do usuário do servidor
  • FakeGaiaMixin para simular respostas do servidor GAIA

Crie mixins personalizados para vários propósitos.

O snippet abaixo faz login como um usuário convidado para seu teste. É importante verificar se o recurso funciona no modo de navegação anônima.

O que fazer
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

O LoggedInUserMixin é uma forma conveniente de fazer login como usuário do Family Link para para o teste. Caso o recurso afete qualquer elemento relacionado à supervisão infantil, Teste seu recurso para usuários supervisionados. Um possível bug é esquecer que usuários menores de idade estão com o modo de navegação anônima desativado ou não podem fazer a instalação. extensões sem a aprovação do familiar responsável. LoggedInUserMixin é um mixin composto compostas por outros mixins.

O que fazer
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};
};

Um dos principais benefícios dos mixins é usar composição em vez de herança múltipla e evitar problemas com herança múltipla em losango. Herdar de mais de uma classe base de teste leva ao problema diamante, mas é possível misturar e combinar mixins para evitar esse problema. Como usar mixins não elimina totalmente a herança porque a classe de teste do navegador ainda precisa herdar de MixinBasedInProcessBrowserTest, mas felizmente esse é de uso geral e leve.

Recursos