Chromium Chronicle #17: Tarayıcı Testi Karışıklıkları

17. Bölüm: San Francisco, Kaliforniya'dan Toby Huang tarafından (Ocak 2021)
Önceki bölümler

Tarayıcı testleri, birim testlerinden daha uçtan uca krom kodları için otomatik bir test biçimidir. Tarayıcı testleri, yalnızca birim testlerinde olduğu gibi sadece giriş/çıkış işlevlerini test etmek yerine tarayıcı örnekleri oluşturur ve çeşitli kullanıcı arayüzü öğelerini test eder. Entegre otomatik test, kullanıcının uçtan uca deneyimini simüle etmek için önemlidir. Bir tarayıcı testi yazarken, genellikle kullanıcının manuel olarak yapabileceği kurulum işlemlerini programatik olarak gerçekleştirmek istersiniz. Bunu yapmanıza yardımcı olmak amacıyla mixin'ler, basit olmayan bir tarayıcı testi kurulumunu yeniden kullanılabilir bir şekilde gerçekleştirmek için kullanılan bir araç paketidir.

Faydalı karışım örnekleri:

  • Gizli modu test etmek için GuestUserMixin
  • Sunucudan aldatma kullanıcı politikası için UserPolicyMixin
  • Gaia sunucusundan alınan alaycı yanıtlar için FakeGaiaMixin

Çok çeşitli amaçlara hizmet etmek için kendi özel mix'lerinizi oluşturabilirsiniz!

Aşağıdaki snippet, testiniz için misafir kullanıcı olarak giriş yapar. Özelliğinizin gizli modda çalıştığından emin olmanız önemlidir.

Yapılması gerekenler
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin, testiniz için Family Link kullanıcısı olarak giriş yapmanın pratik bir yoludur. Özelliğiniz çocuk gözetimiyle ilgili herhangi bir şeyi etkiliyorsa özelliğinizi gözetimli kullanıcılar için test etmeniz gerekir. Olası bir hata, çocuk kullanıcıların gizli modun devre dışı olduğunu veya ebeveyn onayı olmadan uzantıları yükleyemediğini unutmaktır. LoggedInUserMixin, diğer karışımlardan oluşan bir bileşik karışımdır.

Yapılması gerekenler
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};
};

Karışımların başlıca avantajlarından biri, devralma yerine bileşimi kullanmak ve elmas çoklu devralma ile ilgili sorunlardan kaçınmaktır. Birden fazla test tabanı sınıfından devralmak elmas sorununa yol açar ancak bu sorundan kaçınarak mix'leri karıştırıp eşleştirebilirsiniz. Karmaları kullanmak, devralmayı tamamen ortadan kaldırmaz çünkü tarayıcı test sınıfının MixinBasedInProcessBrowserTest öğesini devralması gerekir. Ancak bu temel sınıf genel amaçlı ve hafiftir.

Kaynaklar