पृष्ठभूमि और समस्या की पहचान

  • 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 संभव है।

अपनाने की प्रक्रिया में आए प्रमुख मुद्दे और उनके समाधान

  1. बहुत छोटे अंतर (0.01%) के कारण झूठे failure होना
    समस्या: test execution environment (OS, browser, display settings आदि) के अनुसार font rendering में अंतर आता था।
    समाधान: Docker container का उपयोग करके सभी tests को एक ही environment में चलाया गया।

  2. डेटा loading पूरा होने के बाद screenshot लेना आवश्यक था
    समस्या: पेज पूरी तरह load होने से पहले screenshot लेने पर loading UI भी शामिल हो जाता था।
    समाधान: getByText + toBeVisible का उपयोग करने वाले utility function से किसी विशेष string के दिखने तक इंतज़ार किया गया।

  3. animation elements के कारण screenshot में अंतर आना
    समस्या: CSS animation, Canvas, SVG, WebGL elements हर बार अलग timing पर capture होते थे, जिससे test flaky हो जाता था।
    समाधान: animation को disable करने के लिए विभिन्न उपाय किए गए और अतिरिक्त test execution को अधिक कुशल बनाया गया।

  4. third-party plugins (iframe आदि) के कारण अनावश्यक बदलाव detect होना
    समस्या: customer feedback, survey, chatbot जैसे third-party plugins iframe के माध्यम से load होते थे और visual changes पैदा करते थे।
    समाधान: screenshot बनाते समय common CSS processing के जरिए iframe और कुछ plugin elements को छिपा दिया गया।

  5. scroll वाले पेजों में नीचे के elements के verification का fail होना
    समस्या: toHaveScreenshot डिफ़ॉल्ट रूप से केवल वर्तमान में दिख रही screen को capture करता है, इसलिए scroll से जुड़ी handling की आवश्यकता थी।
    समाधान: fullPage: true option लागू करके पूरे पेज का screenshot capture करने के लिए सेट किया गया।

निष्कर्ष

  • visual regression testing के माध्यम से UI बदलावों की पहचान को प्रभावी रूप से automate किया गया।
  • यह एक परफेक्ट समाधान नहीं है, लेकिन इसने development productivity और test stability दोनों को बेहतर बनाया।
  • निरंतर सुधार और test environment optimization की आवश्यकता है।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.