Playwright Visual comparisons का उपयोग करके अधिक सुरक्षित और अधिक कुशल डेवलपमेंट वातावरण बनाना
(blog.lemonbase.team)पृष्ठभूमि और समस्या की पहचान
- UI बदलावों और अप्रत्याशित user input के कारण frontend testing में कई कठिनाइयाँ होती हैं।
- इंसानों द्वारा सीधे verify की जाने वाली testing की सीमाएँ हैं, इसलिए automated testing अपनाने पर विचार किया गया।
- मौजूदा recording-आधारित E2E testing (TestProject, Playwright) में maintenance cost अधिक थी और यह UI बदलावों के प्रति संवेदनशील थी।
Playwright Visual Comparisons का परिचय
- UI में होने वाले बदलावों को पहचानने वाली visual regression testing पद्धति लागू की गई।
- baseline screenshot को सहेजकर, code changes के बाद उसकी तुलना करके बदलावों का पता लगाया गया।
- 2-up, Swipe, Highlight, Onion Skin तरीकों से image comparison संभव है।
अपनाने की प्रक्रिया में आए प्रमुख मुद्दे और उनके समाधान
-
बहुत छोटे अंतर (0.01%) के कारण झूठे failure होना
समस्या: test execution environment (OS, browser, display settings आदि) के अनुसार font rendering में अंतर आता था।
समाधान: Docker container का उपयोग करके सभी tests को एक ही environment में चलाया गया। -
डेटा loading पूरा होने के बाद screenshot लेना आवश्यक था
समस्या: पेज पूरी तरह load होने से पहले screenshot लेने पर loading UI भी शामिल हो जाता था।
समाधान:getByText+toBeVisibleका उपयोग करने वाले utility function से किसी विशेष string के दिखने तक इंतज़ार किया गया। -
animation elements के कारण screenshot में अंतर आना
समस्या: CSS animation, Canvas, SVG, WebGL elements हर बार अलग timing पर capture होते थे, जिससे test flaky हो जाता था।
समाधान: animation को disable करने के लिए विभिन्न उपाय किए गए और अतिरिक्त test execution को अधिक कुशल बनाया गया। -
third-party plugins (
iframeआदि) के कारण अनावश्यक बदलाव detect होना
समस्या: customer feedback, survey, chatbot जैसे third-party pluginsiframeके माध्यम से load होते थे और visual changes पैदा करते थे।
समाधान: screenshot बनाते समय common CSS processing के जरिएiframeऔर कुछ plugin elements को छिपा दिया गया। -
scroll वाले पेजों में नीचे के elements के verification का fail होना
समस्या:toHaveScreenshotडिफ़ॉल्ट रूप से केवल वर्तमान में दिख रही screen को capture करता है, इसलिए scroll से जुड़ी handling की आवश्यकता थी।
समाधान:fullPage: trueoption लागू करके पूरे पेज का screenshot capture करने के लिए सेट किया गया।
निष्कर्ष
- visual regression testing के माध्यम से UI बदलावों की पहचान को प्रभावी रूप से automate किया गया।
- यह एक परफेक्ट समाधान नहीं है, लेकिन इसने development productivity और test stability दोनों को बेहतर बनाया।
- निरंतर सुधार और test environment optimization की आवश्यकता है।
अभी कोई टिप्पणी नहीं है.