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

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ógnito
  • UserPolicyMixin para simular la política del usuario desde el servidor
  • FakeGaiaMixin 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.

Recursos