Chromium Chronicle n.o 17: Combinaciones de pruebas del navegador

Episodio 17: de Toby Huang en San Francisco, CA (enero de 2021)
Episodios anteriores

Las pruebas del navegador son una forma de prueba automatizada del código de Chromium que es más que las pruebas de unidades. Las pruebas del navegador crean instancias de navegador y prueban varios elementos de la IU en lugar de probar solo la funcionalidad de entrada y salida como lo hacen las pruebas de unidades. Las pruebas automatizadas integradas son importantes para simular la experiencia de extremo a extremo del usuario. Al escribir una prueba de navegador, con frecuencia quieres para realizar de manera programática acciones de configuración que el usuario podría realizar manualmente. Para ayudarte a lograrlo, las combinaciones son un conjunto de herramientas para realizar tareas del navegador de forma reutilizable.

Ejemplos de combinaciones útiles:

  • GuestUserMixin para probar el modo Incógnito
  • UserPolicyMixin para simular una política del usuario desde el servidor
  • FakeGaiaMixin para simular respuestas del servidor de GAIA

Puedes crear tus propias combinaciones personalizadas para cumplir con una gran variedad de propósitos.

El siguiente fragmento accede como usuario invitado para tu prueba. Es importante asegurarte de que tu función funcione en modo Incógnito.

Qué debes hacer
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin es una forma conveniente de acceder como usuario de Family Link para la prueba. Si tu función afecta a algo relacionado con la supervisión infantil, debes probar tu función para usuarios supervisados. Un posible error es olvidar que los usuarios menores de edad tienen inhabilitado el modo Incógnito o no pueden instalarlo extensiones sin la aprobación de los padres. LoggedInUserMixin es una mezcla compuesta compuesto por otras combinaciones.

Qué debes hacer
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 y cómo evitar problemas con la herencia múltiple de diamante. Heredar de más de una clase de base de prueba genera el problema de los diamantes, pero puedes combinar combinaciones y evitar este problema. Usa combinaciones la herencia no se deshace por completo porque la clase de prueba del navegador aún debe heredar de MixinBasedInProcessBrowserTest, pero, afortunadamente, la clase base es de uso general y liviana.

Recursos