The Chromium Chronicle n. 17: Mixin di test del browser

Episodio 17: di Toby Huang a San Francisco, CA (gennaio 2021)
Puntate precedenti

I test del browser sono un tipo di test automatizzato del codice Chrome che ha una durata superiore rispetto ai test delle unità. I test del browser creano istanze del browser e testano vari elementi dell'interfaccia utente anziché limitarsi a testare la semplice funzionalità di input/output, come fanno i test delle unità. I test automatici integrati sono importanti per simulare l'esperienza end-to-end dell'utente. Quando scrivi un test del browser, spesso vuoi eseguire in modo programmatico azioni di configurazione che l'utente può eseguire manualmente. A questo scopo, le combinazioni sono una suite di strumenti che consentono di eseguire una configurazione di test del browser non banale in modo riutilizzabile.

Esempi di mixin utili:

  • GuestUserMixin per il test della modalità di navigazione in incognito
  • UserPolicyMixin per la simulazione dei criteri relativi agli utenti dal server
  • FakeGaiaMixin per le risposte fittizie del server Gaia

Puoi creare i tuoi mixin personalizzati per scopi diversi.

Lo snippet riportato di seguito esegue l'accesso come utente ospite per il tuo test. È importante verificare che la funzionalità funzioni in modalità di navigazione in incognito.

Cosa fare
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin è un modo pratico per accedere come utente di Family Link per il test. Se la funzionalità interessa aspetti correlati alla supervisione di minori, ti consigliamo di testarla per gli utenti supervisionati. Un possibile bug è dimenticare che la modalità di navigazione in incognito dei bambini è disattivata o non possono installare estensioni senza l'approvazione dei genitori. LoggedInUserMixin è una miscela composta composta da altre mixin.

Cosa fare
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 dei principali vantaggi delle mixin è l'utilizzo della composizione invece dell'ereditarietà ed evitare problemi con l'ereditarietà multipla con diamante. L'ereditarietà da più di una classe base di test porta al problema del diamante, ma puoi combinare e abbinare mixin evitando questo problema. L'utilizzo di mixin non elimina completamente l'ereditarietà perché la classe di test del browser deve ancora ereditare da MixinBasedInProcessBrowserTest, ma per fortuna questa classe base è leggera e per uso generico.

Risorse