Episodio 17: de Toby Huang en San Francisco, California (enero de 2021)
Episodios anteriores
Las pruebas del navegador son una forma de prueba automatizada para el código de Chromium que son más de extremo a extremo que las pruebas de unidades. Las pruebas del navegador crean instancias del navegador y prueban varios elementos de la IU, en lugar de solo probar la funcionalidad de entrada y salida pura, como lo hacen las pruebas de unidades. Las pruebas automatizadas integradas son importantes para simular la experiencia del usuario de extremo a extremo. Cuando escribes una prueba de navegador, a menudo deseas realizar acciones de configuración de manera programática que el usuario podría hacer manualmente. Para ayudarte a hacerlo, los mixins son un conjunto de herramientas para realizar una configuración de prueba de navegador no trivial y reutilizable.
Ejemplos de combinaciones útiles:
GuestUserMixin
para probar el modo IncógnitoUserPolicyMixin
para simular la política del usuario desde el servidorFakeGaiaMixin
para simular respuestas del servidor de Gaia
Puede crear sus propias combinaciones personalizadas para alcanzar una amplia variedad de propósitos.
El siguiente fragmento accede como usuario invitado a la prueba. Es importante asegurarte de que la función se ejecute en el modo Incógnito.
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
LoggedInUserMixin
es una forma conveniente de acceder a la prueba como usuario de
Family Link. Si tu función afecta a algún aspecto relacionado con la supervisión de menores, debes probarla para usuarios supervisados. Un posible error es
olvidar que los usuarios secundarios tengan el modo Incógnito inhabilitado o que no pueden instalar
extensiones sin la aprobación parental. LoggedInUserMixin
es una mezcla compuesta compuesta por otras mixtas.
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}; };
Uno de los beneficios principales de las combinaciones es usar la composición en lugar de la herencia y evitar problemas con la herencia múltiple de diamantes.
La herencia de más de una clase de base de prueba genera el problema de diamantes, pero puedes mezclar y combinar combinaciones y evitar este problema. El uso de combinaciones no elimina por completo la herencia porque la clase de prueba del navegador aún necesita heredar de MixinBasedInProcessBrowserTest
, pero, afortunadamente, esa clase base es de uso general y ligera.