Episódio 17:de Toby Huang em São Francisco, Califórnia (janeiro de 2021)
Episódios anteriores
Os testes de navegador são uma forma de teste automatizado para o código do Chromium que são mais completos do que os testes de unidade. Os testes de navegador criam instâncias do navegador e testam vários elementos da interface, em vez de apenas testar a funcionalidade de entrada/saída pura, como os testes de unidade. O teste automatizado integrado é importante para simular a experiência completa do usuário. Ao criar um teste de navegador, muitas vezes você quer executar de maneira programática ações de configuração que o usuário poderia fazer manualmente. Para ajudar você, mixins são um conjunto de ferramentas para realizar uma configuração de teste de navegador não trivial de maneira reutilizável.
Exemplos de mixins úteis:
GuestUserMixin
para testar o modo de navegação anônimaUserPolicyMixin
para simular a política do usuário do servidorFakeGaiaMixin
para respostas simuladas do servidor GAIA
Você pode criar seus próprios mixins personalizados para diversos fins.
O snippet abaixo faz login como usuário convidado no teste. É importante verificar se o seu recurso funciona no modo de navegação anônima.
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
O LoggedInUserMixin
é uma maneira conveniente de fazer login como usuário do Family Link para o teste. Se o recurso afetar algo relacionado à supervisão de crianças,
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 instalar
extensões sem a aprovação dos pais. LoggedInUserMixin
é um mixin composto
composto de outros mixins.
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 a composição em vez da herança e evitar problemas com a herança múltipla de losangos.
Herdar de mais de uma classe base de teste leva ao problema do diamante,
mas é possível misturar e combinar mixins sem esse problema. O uso de mixins
não elimina totalmente a herança porque a classe de teste do navegador ainda
precisa herdar de MixinBasedInProcessBrowserTest
, mas felizmente essa
classe base é leve e de uso geral.