हमने CI में Accessibility VPATs को कैसे ऑटोमेट किया हमने CI में Accessibility VPATs को कैसे ऑटोमेट किया
Accessibility ऑडिट बहुत जल्दी पुराने हो जाते हैं। कोड का एक सिंगल मर्ज सब कुछ बदल देता है।
हमने इसे ठीक किया। हमने अपनी accessibility रिपोर्ट्स को एक continuous build artifact में बदल दिया।
हमारी पाइपलाइन गलतियों को खोजने के लिए तीन लेयर्स का उपयोग करती है:
- Static checks: हम Storybook में baseline tests के लिए axe-core का उपयोग करते हैं।
- Interactive tests: हम keyboard rules को टेस्ट करने के लिए custom Vitest helpers का उपयोग करते हैं।
- Manual audits: हम screen reader के परिणामों को JSON files के रूप में स्टोर करते हैं।
हमारी CI pipeline इन परिणामों को मर्ज करती है।
यदि कोई टेस्ट फेल होता है, तो PR फेल हो जाता है। यदि सभी टेस्ट पास हो जाते हैं, तो सिस्टम एक नया PDF बनाता है। यह PDF आपके रिलीज़ के साथ भेजा जाता है।
हमने एक चीज़ आज़माई जो विफल रही।
हमने manual audits को बदलने के लिए LLM का उपयोग करने की कोशिश की। हमने तुरंत इसका उपयोग बंद कर दिया। AI के परिणाम बहुत अधिक बदलते रहते हैं। CI gate के लिए आपको स्थिर (stable) परिणामों की आवश्यकता होती है।
पूरा तकनीकी विवरण यहाँ पढ़ें:
Source: https://dev.to/yassine_lakhdar_d0226709a/how-we-automated-our-accessibility-vpats-in-ci-46jk
ARTICLE: एक डेवलपमेंट टीम ने अपनी continuous-integration (CI) pipeline में सीधे accessibility VPATs (Voluntary Product Accessibility Templates) बनाने की प्रक्रिया को ऑटोमेट कर दिया है, जिससे एक समय पर किए जाने वाले manual report को एक build artifact में बदल दिया गया है जो हर रिलीज़ के साथ आता है। नया वर्कफ़्लो उन pull requests को फेल कर देता है जो accessibility regressions लाते हैं, और जब build सफल होता है तो स्वचालित रूप से एक PDF compliance document तैयार करता है, जिससे यह सुनिश्चित होता है कि हर कोड परिवर्तन accessibility मानकों के भीतर रहे।
ऑटोमेशन क्यों महत्वपूर्ण है
जैसे ही नया कोड आता है, accessibility ऑडिट पुराने हो जाते हैं। एक सिंगल मर्ज से missing alt text, गलत focus order, या screen-reader संबंधी समस्याएँ आ सकती हैं जो पहले से जारी VPAT को अमान्य कर सकती हैं। मैन्युअल रूप से अनुपालन (compliance) बनाए रखने का अर्थ है प्रत्येक परिवर्तन के बाद ऑडिट को फिर से चलाना, जो एक खर्चीली और त्रुटिपूर्ण प्रक्रिया है जो अक्सर डेवलपमेंट की गति से पीछे रह जाती है। CI में चेक्स को शामिल करके, टीमों को तुरंत फीडबैक मिलता है, अनुपालन को अपडेट रखा जा सकता है, और अप्राप्य (inaccessible) सॉफ़्टवेयर रिलीज़ करने के कानूनी और प्रतिष्ठा संबंधी जोखिमों से बचा जा सकता है।
तीन-लेयर टेस्टिंग दृष्टिकोण
Static checks – पाइपलाइन axe-core चलाती है, जो एक open-source library है और Storybook में रेंडर किए गए components को missing landmarks या अपर्याप्त color contrast जैसे ज्ञात उल्लंघनों के लिए स्कैन करती है। ये टेस्ट किसी भी इंटरेक्शन से पहले समस्याओं को पकड़ लेते हैं।
Interactive checks – Custom Vitest helpers keyboard navigation rules का परीक्षण करते हैं, यह सत्यापित करते हैं कि focus तार्किक रूप से आगे बढ़ता है और interactive elements standard keyboard events पर प्रतिक्रिया देते हैं। यह लेयर वास्तविक दुनिया की उपयोगिता (usability) सुनिश्चित करने के लिए static analysis से आगे जाती है।
Manual audit artifacts – Screen-reader टेस्टिंग के परिणाम JSON files के रूप में सहेजे जाते हैं। डेवलपर्स exploratory testing के दौरान अपने अवलोकन (observations) रिकॉर्ड करते हैं और कोड के साथ JSON को commit करते हैं। CI job इन artifacts को automated results के साथ मर्ज करता है, जिससे VPAT के लिए एक एकल सत्य स्रोत (single source of truth) तैयार होता है।
जब पहली दो लेयर्स में से कोई भी टेस्ट फेल होता है, तो pull request को ब्लॉक कर दिया जाता है, जिससे परिवर्तन को production तक पहुँचने से रोका जा सके। यदि सभी टेस्ट पास हो जाते हैं, तो पाइपलाइन संयुक्त डेटा को एक PDF में व्यवस्थित करती है जो रिलीज़ के साथ संलग्न होता है, जिससे बिना किसी अतिरिक्त प्रयास के एक अपडेटेड VPAT प्राप्त होता है।
क्या काम नहीं आया
टीम ने manual audit वाले हिस्से को स्वचालित रूप से उत्पन्न करने के लिए large language model (LLM) का उपयोग करने का प्रयोग किया। AI द्वारा उत्पन्न परिणाम बहुत अधिक उतार-चढ़ाव वाले थे, जिससे CI gate अविश्वसनीय हो गया था। बाइनरी pass/fail चेक के लिए निरंतरता (consistency) आवश्यक है, इसलिए JSON-आधारित manual artifacts के पक्ष में इस प्रयोग को छोड़ दिया गया।
आगे क्या देखें
फिलहाल, तीन-लेयर CI मॉडल VPATs को अपडेट रखने, manual overhead को कम करने और हर कोड परिवर्तन में accessibility को केंद्र में रखने का एक व्यावहारिक मार्ग प्रदान करता है।
