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 una forma di test automatizzato per il codice cromo, che sono end-to-end rispetto ai test delle unità. I test del browser creano le istanze del browser e verificano vari elementi dell'interfaccia utente invece di testare solo le 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 per eseguire in modo programmatico le azioni di configurazione che l'utente può eseguire manualmente. A tal fine, i mixin sono una suite di strumenti per eseguire configurazione di test del browser in modo riutilizzabile.

Esempi di mix utili:

  • GuestUserMixin per testare la modalità di navigazione in incognito
  • UserPolicyMixin per una simulazione dei criteri relativi agli utenti del server
  • FakeGaiaMixin per risposte ingannevoli dal server Gaia

Puoi creare i tuoi mix personalizzati per soddisfare un'ampia gamma di scopi.

Lo snippet seguente accede come utente ospite per il test. È importante assicurati che la funzionalità sia attiva 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 tua funzionalità influisce su aspetti relativi alla supervisione dei bambini, è consigliabile testare la funzionalità per gli utenti supervisionati. Un possibile bug è dimenticando che gli utenti minorenni hanno disattivato la modalità di navigazione in incognito o non possono installare senza l'approvazione dei genitori. LoggedInUserMixin è un mixin composto composti da altri mix.

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 dei mixin è l'utilizzo della composizione anziché l'ereditarietà ed evitando problemi con l'ereditarietà multipla a rombo. L'ereditarietà da più di una classe base di test porta al problema del rombo, ma puoi mescolare e abbinare i mix evitando così questo problema. Utilizzo dei mixin non elimina completamente l'ereditarietà perché la classe di test del browser deve ereditare da MixinBasedInProcessBrowserTest, ma fortunatamente è per uso generico e leggera.

Risorse