The Chromium Chronicle #17: ब्राउज़र टेस्ट मिक्सिन

एपिसोड 17: सैन फ़्रांसिस्को, कैलिफ़ोर्निया में टोबी हुआंग का एपिसोड (जनवरी 2021)
पिछले एपिसोड

ब्राउज़र टेस्ट, Chromium कोड के लिए अपने-आप होने वाले जांच का एक तरीका है, जो यूनिट जांच के मुकाबले पूरी तरह शुरू होते हैं. ब्राउज़र टेस्ट, ब्राउज़र इंस्टेंस बनाते हैं और अलग-अलग इनपुट/आउटपुट फ़ंक्शन की जांच करने के बजाय, अलग-अलग यूज़र इंटरफ़ेस (यूआई) एलिमेंट की जांच करते हैं. जैसे, यूनिट टेस्ट की तरह. पूरी तरह से इंटिग्रेट की गई ऑटोमेटेड टेस्टिंग, उपयोगकर्ता के शुरू से अंत तक के अनुभव को सिम्युलेट करने के लिए ज़रूरी है. ब्राउज़र टेस्ट लिखते समय, अक्सर आप प्रोग्राम के हिसाब से सेट अप की जाने वाली ऐसी कार्रवाइयां करते हैं जिन्हें उपयोगकर्ता मैन्युअल तरीके से कर सकता है. ऐसा करने के लिए, मिक्सर, ऐसे टूल का सुइट होते हैं जिनका इस्तेमाल करके, ब्राउज़र की सामान्य जांच को फिर से इस्तेमाल किया जा सकता है.

काम के मिक्सिन के उदाहरण:

  • गुप्त मोड की जांच करने के लिए GuestUserMixin
  • सर्वर की उपयोगकर्ता नीति की नकल करने के लिए UserPolicyMixin
  • GAIA सर्वर से मॉक जवाब देने के लिए FakeGaiaMixin

अलग-अलग तरह के कामों के लिए, अपनी पसंद के मुताबिक मिक्सिन बनाए जा सकते हैं!

नीचे दिया गया स्निपेट, आपके टेस्ट के लिए मेहमान उपयोगकर्ता के तौर पर लॉग इन करता है. यह ज़रूर देख लें कि यह सुविधा गुप्त मोड में काम करती हो.

ऐसा करें
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin, टेस्ट करने के लिए Family Link उपयोगकर्ता के तौर पर लॉग इन करने का आसान तरीका है. अगर सुविधा की मदद से बच्चों की निगरानी से जुड़ी किसी भी सुविधा पर असर पड़ता है, तो आपको निगरानी में रखे गए उपयोगकर्ताओं के लिए, इस सुविधा की जांच करनी चाहिए. एक संभावित बग यह भूल रहा होता है कि बच्चों के लिए गुप्त मोड बंद है या वे माता-पिता की मंज़ूरी के बिना एक्सटेंशन इंस्टॉल नहीं कर सकते. LoggedInUserMixin, अन्य मिक्सिन से मिलकर बना एक कंपाउंड होता है.

ऐसा करें
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};
};

मिक्सिन के मुख्य फ़ायदों में से एक है, इनहेरिटेंस के बजाय कंपोज़िशन का इस्तेमाल करना और हीरे के एक से ज़्यादा प्रॉपर्टी मिलने की समस्याओं से बचना. एक से ज़्यादा टेस्ट बेस क्लास से इनहेरिट करने से डायमंड की समस्या हो जाती है, लेकिन इस समस्या से बचने के लिए अलग-अलग तरह के मिक्सिन को मिलाकर भी इस्तेमाल किया जा सकता है. मिक्सिन का इस्तेमाल करने से इनहेरिटेंस से छुटकारा नहीं मिलता, क्योंकि ब्राउज़र टेस्ट क्लास को अब भी MixinBasedInProcessBrowserTest से इनहेरिट करना होता है. हालांकि, अच्छी बात यह है कि बेस क्लास को सामान्य तौर पर इस्तेमाल किया जा सकता है और यह हल्का है.

संसाधन