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 incognitoUserPolicyMixin
per una simulazione dei criteri relativi agli utenti del serverFakeGaiaMixin
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.
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.
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.