Windows डेस्कटॉप ऐप्स का परीक्षण लंबे समय से ग्राहकों की सबसे अधिक माँगी जाने वाली सुविधाओं में से एक रहा है, क्योंकि किसी के पास हर महीने ऐसे हज़ारों परीक्षणों को समानांतर रूप से चलाने का बुनियादी ढाँचा नहीं था। वेब परीक्षण अपेक्षाकृत आसान है: एक हेडलेस ब्राउज़र Linux कंटेनर में सेकंडों में शुरू हो जाता है, उसकी लागत एक सेंट के एक अंश जितनी होती है, और परीक्षण समाप्त होने पर उसे हटा दिया जाता है। Windows डेस्कटॉप परीक्षण के लिए इसका कोई समकक्ष नहीं है। हर परीक्षण को एक पूरी वर्चुअल मशीन की ज़रूरत होती है, क्योंकि Windows कंटेनरों में ग्राफ़िकल डेस्कटॉप नहीं होता। एक ठंडी Windows VM को बूट होने में 2 से 3 मिनट लगते हैं, और किसी को लॉग इन होना ज़रूरी है, क्योंकि Windows UI Automation केवल एक सक्रिय डेस्कटॉप सत्र के भीतर काम करता है। मशीनें हर रन के बीच इंस्टॉल की गई फ़ाइलें, रजिस्ट्री कुंजियाँ, उपयोगकर्ता प्रोफ़ाइल और सहेजे गए लॉगिन भी बनाए रखती हैं, जबकि हर ऐप अपने इंस्टॉलर, एडमिन प्रॉम्प्ट और पहली बार चलने वाले संवाद साथ लाता है। दूरस्थ Windows मशीनें अंतर्निहित ट्रेस, लॉग या स्क्रीनशॉट नहीं देतीं, और अधिकांश परीक्षण बुनियादी ढाँचा Linux के आसपास डिज़ाइन किया गया था।
टीम का समाधान था Windows मशीनों को फ़ोन की तरह मानना: एक ऐसा डिवाइस जिसे एक परीक्षण लेता है, एक बार इस्तेमाल करता है और फिर फेंक देता है। यह आर्किटेक्चर अपने मोबाइल परीक्षण बुनियादी ढाँचे से प्रेरित है। Kubernetes में एक कस्टम डिवाइस शेड्यूलर Google Compute Engine पर एक Windows VM को डिवाइस क्लेम (Device Claim) के माध्यम से सौंपता है, और परीक्षण WebdriverIO और Appium के ज़रिए उसे दूर से नियंत्रित करता है। डिवाइस मॉडल में दो विस्तार करने पड़े: डिवाइस क्लस्टर के बाहर रह सकते हैं, और क्लेम डेस्कटॉप कनेक्शन पते लौटा सकते हैं, जिनमें ब्राउज़रों के लिए CDP भी शामिल है।
यह प्रणाली तीन भागों से बनी है: एक कंट्रोलर जो Windows VM का गर्म पूल बनाए रखता है, एक Linux रनर पॉड जो परीक्षण कोड चलाता है, और स्वयं Windows VM, जो परीक्षण किए जा रहे ऐप और एक छोटे डेस्कटॉप एजेंट को चलाती है। रनर ब्राउज़र सामग्री के लिए Playwright के CDP, नेटिव ऐप्स के लिए Appium, और एक WebRTC स्ट्रीम से जुड़ता है, जो लोगों को परीक्षण लाइव देखने और बाद में रिकॉर्डिंग की समीक्षा करने देती है।
हर VM एकल-उपयोग है। कोई उसमें लॉग इन नहीं करता, उसे पैच नहीं करता या हफ़्तों तक चालू नहीं रखता, और हर उपयोग के बाद उसकी जगह एक नई मशीन लाई जाती है।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित