आम्ही CI मध्ये ॲक्सेसिबिलिटी VPATs कसे ऑटोमेट केले आम्ही CI मध्ये ॲक्सेसिबिलिटी VPATs कसे ऑटोमेट केले

ॲक्सेसिबिलिटी ऑडिट्स (Accessibility audits) वेगाने जुने होतात. एक सिंगल कोड मर्ज सर्व काही बदलू शकतो.

आम्ही हे सुधारले आहे. आम्ही आमचे ॲक्सेसिबिलिटी रिपोर्ट्स 'कंटिन्युअस बिल्ड आर्टिफॅक्ट' (continuous build artifact) मध्ये रूपांतरित केले आहेत.

त्रुटी शोधण्यासाठी आमचे पाइपलाइन तीन स्तर वापरते:

  • स्टॅटिक चेक (Static checks): आम्ही Storybook मध्ये बेसलाइन टेस्टसाठी axe-core वापरतो.
  • इंटरअॅक्टिव्ह टेस्ट्स (Interactive tests): कीबोर्ड नियमांची चाचणी घेण्यासाठी आम्ही कस्टम Vitest हेल्पर्स वापरतो.
  • मॅन्युअल ऑडिट्स (Manual audits): आम्ही स्क्रीन रीडरचे निकाल JSON फाइल्स म्हणून साठवतो.

आमचे CI पाइपलाइन हे सर्व निकाल एकत्रित (merge) करते.

जर एखादी टेस्ट फेल झाली, तर PR फेल होतो. जर सर्व टेस्ट्स पास झाल्या, तर सिस्टम एक नवीन PDF तयार करते. ही PDF तुमच्या रिलीजसोबत पाठवली जाते.

आम्ही एक गोष्ट करून पाहिली जी अयशस्वी ठरली.

मॅन्युअल ऑडिट्सच्या जागी LLM वापरण्याचा आम्ही प्रयत्न केला. आम्ही ते वापरणे लगेच थांबवले. AI चे निकाल खूप बदलतात. CI गेटसाठी तुम्हाला स्थिर निकालांची गरज असते.

संपूर्ण तांत्रिक विश्लेषण येथे वाचा:

Source: https://dev.to/yassine_lakhdar_d0226709a/how-we-automated-our-accessibility-vpats-in-ci-46jk

ARTICLE: एका डेव्हलपमेंट टीमने त्यांच्या continuous-integration (CI) पाइपलाइनमध्ये थेट ॲक्सेसिबिलिटी VPATs (Voluntary Product Accessibility Templates) तयार करण्याची प्रक्रिया ऑटोमेट केली आहे, ज्यामुळे पूर्वीचा वेळोवेळी केला जाणारा मॅन्युअल रिपोर्ट आता प्रत्येक रिलीजसोबत पाठवला जाणारा 'बिल्ड आर्टिफॅक्ट' बनला आहे. नवीन वर्कफ्लो अशा pull requests ना फेल करतो ज्यामध्ये ॲक्सेसिबिलिटीमध्ये कमतरता (regressions) निर्माण होते आणि बिल्ड यशस्वी झाल्यावर आपोआप एक PDF कंप्लायन्स डॉक्युमेंट तयार करतो, ज्यामुळे प्रत्येक कोड बदल ॲक्सेसिबिलिटी मानकांमध्ये राहतील याची खात्री होते.

ऑटोमेशन का महत्त्वाचे आहे

ॲक्सेसिबिलिटी ऑडिट्स नवीन कोड आल्याबरोबर कालबाह्य होतात. एका सिंगल मर्जमुळे गहाळ alt text, चुकीचा focus order किंवा स्क्रीन-रीडरच्या समस्या निर्माण होऊ शकतात, ज्यामुळे आधी जारी केलेले VPAT अवैध ठरते. मॅन्युअल पद्धतीने कंप्लायन्स राखणे म्हणजे प्रत्येक बदलांनंतर ऑडिट पुन्हा करणे, ही एक खर्चिक आणि चुका होऊ शकणारी प्रक्रिया आहे जी अनेकदा डेव्हलपमेंटच्या वेगापेक्षा मागे पडते. CI मध्ये चेक समाविष्ट केल्यामुळे, टीमला त्वरित फीडबॅक मिळतो, कंप्लायन्स अद्ययावत राहतो आणि अपात्र (inaccessible) सॉफ्टवेअर रिलीज केल्यामुळे होणारे कायदेशीर आणि प्रतिष्ठेचे धोके टाळता येतात.

तीन-स्तरीय टेस्टिंग दृष्टिकोन

  1. स्टॅटिक चेक (Static checks) – पाइपलाइन axe-core चालवते, जे एक ओपन-सोर्स लायब्ररी आहे. हे Storybook मध्ये रेंडर केलेल्या कंपोनंट्समध्ये गहाळ landmarks किंवा अपुरे कलर कॉन्ट्रास्ट यांसारख्या ज्ञात नियमांच्या उल्लंघनांची तपासणी करते. ही टेस्ट्स कोणत्याही इंटरअॅक्शनपूर्वीच समस्या शोधून काढतात.

  2. इंटरअॅक्टिव्ह चेक (Interactive checks) – कस्टम Vitest हेल्पर्स कीबोर्ड नेव्हिगेशन नियमांची चाचणी घेतात, ज्यामुळे focus लॉजिकली हलतो आणि इंटरअॅक्टिव्ह एलिमेंट्स स्टँडर्ड कीबोर्ड इव्हेंट्सना प्रतिसाद देतात याची खात्री होते. हा स्तर केवळ स्टॅटिक विश्लेषणापलीकडे जाऊन प्रत्यक्ष वापरासाठीची सुलभता (usability) सुनिश्चित करतो.

  3. मॅन्युअल ऑडिट आर्टिफॅक्ट्स (Manual audit artifacts) – स्क्रीन-रीडर टेस्टिंगचे निकाल JSON फाइल्स म्हणून सेव्ह केले जातात. डेव्हलपर्स एक्सप्लोरेटरी टेस्टिंग दरम्यानचे निरीक्षण नोंदवतात आणि कोडसोबतच JSON कमिट करतात. CI जॉब हे आर्टिफॅक्ट्स ऑटोमेटेड निकालांसोबत मर्ज करतो, ज्यामुळे VPAT साठी एक 'सिंगल सोर्स ऑफ ट्रुथ' तयार होतो.

पहिल्या दोन स्तरांमधील कोणतीही टेस्ट फेल झाल्यास, pull request ब्लॉक केला जातो, ज्यामुळे तो बदल प्रोडक्शनमध्ये पोहोचण्यापासून रोखला जातो. जर सर्व टेस्ट्स पास झाल्या, तर पाइपलाइन एकत्रित डेटा एका PDF मध्ये संकलित करते जी रिलीजला जोडली जाते, ज्यामुळे अतिरिक्त प्रयत्नांशिवाय अद्ययावत VPAT प्राप्त होतो.

काय यशस्वी झाले नाही

टीमने मॅन्युअल ऑडिटचा भाग आपोआप तयार करण्यासाठी लार्ज लँग्वेज मॉडेल (LLM) वापरण्याचा प्रयोग केला. AI द्वारे तयार झालेले निकाल खूप बदलत होते, ज्यामुळे CI गेट अविश्वसनीय बनले होते. बायनरी पास/फेल चेकसाठी सुसंगतता (consistency) आवश्यक असते, म्हणून JSON-आधारित मॅन्युअल आर्टिफॅक्ट्सच्या बाजूने हा प्रयोग सोडून देण्यात आला.

पुढे काय पाहावे

सध्यासाठी, तीन-स्तरीय CI मॉडेल VPATs अद्ययावत ठेवण्यासाठी, मॅन्युअल ओव्हरहेड कमी करण्यासाठी आणि प्रत्येक कोड बदलामध्ये ॲक्सेसिबिलिटीला केंद्रस्थानी ठेवण्यासाठी एक व्यावहारिक मार्ग प्रदान करते.