ഉൽപ്പന്ന ടീമുകൾ അക്സസിബിലിറ്റിയെ (accessibility) പലപ്പോഴും ഒരു അവസാനഘട്ട മിനുക്കുപണി പോലെ കാണുന്ന ശീലമുണ്ട്. അവർ ഫീച്ചറുകൾ നിർമ്മിക്കുന്നു, ഇന്റർഫേസ് മിനുക്കുന്നു, എന്നിട്ട്—ലോഞ്ചിന് രണ്ട് ദിവസം മുമ്പ്—ഒരു സ്കാനർ റൺ ചെയ്യുന്നു. പെട്ടെന്ന് ഡാഷ്ബോർഡ് ചുവപ്പായി മാറുന്നു. മിസ്സിംഗ് ഫോം ലേബലുകൾ. അക്സസിബിലിറ്റി പേര് ഇല്ലാത്ത ബട്ടണുകൾ. മുന്നറിയിപ്പില്ലാതെ h1-ൽ നിന്ന് h4-ലേക്ക് ചാടിക്കളയുന്ന ഹെഡിംഗ് ലെവലുകൾ. ടെക്സ്റ്റിനെ ബാക്ക്ഗ്രൗണ്ട് നോയിസ് ആക്കി മാറ്റുന്ന കളർ കോമ്പിനേഷനുകൾ. ഈ പട്ടിക കാണുമ്പോൾ തന്നെ വലിയൊരു ഭാരം തോന്നും, കാരണം ഇത് വളരെ വൈകിപ്പോയിരിക്കുന്നു.
അക്സസിബിലിറ്റി ജോലികൾ മാനുവൽ രീതിയിലുള്ളതും സാവധാനത്തിലുള്ളതുമായി തോന്നുമ്പോഴാണ് ഈ അവസാന നിമിഷത്തെ പരിഭ്രാന്തി ഉണ്ടാകുന്നത്. ഒരു ടെസ്റ്റർ ഓരോ ടെംപ്ലേറ്റിലൂടെയും കൈകൊണ്ട് ക്ലിക്ക് ചെയ്ത് പരിശോധിച്ചാൽ ഒരു സ്പ്രിന്റിനുള്ളിൽ പരിമിതമായ കാര്യങ്ങൾ മാത്രമേ ചെയ്യാൻ കഴിയൂ. എന്നാൽ ഇവിടെ ശ്രദ്ധിക്കപ്പെടാതെ പോകുന്ന ഒരു കാര്യമുണ്ട്: വൈകി കണ്ടെത്തുന്ന പരാജയങ്ങളിൽ ഭൂരിഭാഗവും ചെറിയതോ അല്ലെങ്കിൽ കലാപരമായ തിരഞ്ഞെടുപ്പുകളോ അല്ല. അവ ഡസൻ കണക്കിന് അല്ലെങ്കിൽ നൂറുകണക്കിന് പേജുകളിൽ ആവർത്തിച്ചു വരുന്ന ഘടനാപരമായ പ്രശ്നങ്ങളാണ്. ആ ആവർത്തന സ്വഭാവമാണ് ഓട്ടോമേഷൻ ഫലപ്രദമാകാൻ കാരണം.
യന്ത്രങ്ങൾ യഥാർത്ഥത്തിൽ ഏറ്റവും നന്നായി ചെയ്യുന്നത് എന്താണ്
അക്സസിബിലിറ്റി ടീമുകൾക്ക് മാന്ത്രികതയല്ല വേണ്ടത്, മറിച്ച് കവറേജ് ആണ്. കഴിവുള്ള ഒരു മനുഷ്യ ഓഡിറ്റർക്ക് പേജുകളുടെ ഒരു സാമ്പിൾ പരിശോധിച്ച്, സാഹചര്യങ്ങൾക്കനുസരിച്ച് തീരുമാനങ്ങൾ എടുക്കാനും സൂക്ഷ്മമായ പ്രശ്നങ്ങൾ കണ്ടെത്താനും കഴിയും. അതേസമയം, ഒരു യന്ത്രത്തിന് ഒരൊറ്റ ഘട്ടവും വിട്ടുപോകാതെയും തളർച്ചയില്ലാതെയും എല്ലാ രാത്രിയിലും എല്ലാ പേജുകളും പരിശോധിക്കാൻ കഴിയും. ഈ സമവാക്യത്തിൽ AI-യുടെ മൂല്യം WCAG മാനദണ്ഡങ്ങളെ അത് മാറ്റിവെക്കുന്നു എന്നതല്ല. മറിച്ച്, ടീമുകൾ എങ്ങനെ ജോലി ചെയ്യുന്നു എന്നത് അത് മാറ്റുന്നു എന്നതാണ്. ഒരു ടെസ്റ്റർ വലിയ എറർ ലോഗുകളിൽ മുങ്ങിപ്പോകുന്നതിനോ ഓരോ ടെംപ്ലേറ്റിലും ക്ലിക്ക് ചെയ്യുന്നതിനോ പകരം, AI ഒരേപോലെയുള്ള പ്രശ്നങ്ങളെ ഗ്രൂപ്പ് ചെയ്യാനും അവയുടെ ആവർത്തനത de അടിസ്ഥാനത്തിൽ റാങ്ക് ചെയ്യാനും, ഏത് പരാജയങ്ങളാണ് ഉപയോക്താവിന്റെ അനുഭവം (user experience) ഏറ്റവും കൂടുതൽ ബാധിക്കുന്നത് എന്ന് പറഞ്ഞുതരാനും കഴിയും.
വോളിയം, തരംതിരിക്കൽ (triage), പാറ്റേൺ തിരിച്ചറിയൽ (pattern recognition) എന്നിവയ്ക്കായി AI ഉപയോഗിക്കുക. നിങ്ങളുടെ ടീമിന് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ സാധിക്കുന്നതിനായി സ്കാനിംഗ് ജോലികൾ AI-യെ ഏൽപ്പിക്കുക.
സാധാരണ പരാജയങ്ങളെ സൂചിപ്പിക്കുന്ന സിഗ്നലുകൾ
മിക്ക അക്സസിബിലിറ്റി പരാജയങ്ങളും വ്യക്തമായ സിഗ്നലുകൾ നൽകുന്നവയാണ്. ഒരു ഇമേജിന് 'alt' അറ്റ്രിബ്യൂട്ട് ഇല്ലെങ്കിൽ അത് ഒരു സ്കാനറിന് കണ്ടെത്താൻ കഴിയും. DOM-ൽ ഉണ്ടെങ്കിലും ടെക്സ്റ്റോ aria-label-ഓ ഇല്ലാത്ത ബട്ടണുകൾ കണ്ടെത്താനും, അത് സ്ക്രീൻ റീഡർ ഉപയോഗിക്കുന്നവർക്ക് ബട്ടണിന്റെ ഉദ്ദേശ്യം മനസ്സിലാക്കാൻ കഴിയാത്ത അവസ്ഥ ഉണ്ടാക്കുന്നുണ്ടെന്ന് അറിയിക്കാനും ഇതിന് കഴിയും. "click here" അല്ലെങ്കിൽ "read more" എന്ന് മാത്രം പറയുന്ന ലിങ്കുകളെ ഇത് അടയാളപ്പെടുത്തും, ഇത് പേജുകളിലൂടെ ടാബ് (tab) ചെയ്ത് പോകുന്ന ഉപയോക്താക്കൾക്ക് ലിങ്ക് എന്തിലേക്കാണെന്ന ധാരണ നൽകുന്നില്ല. കോൺട്രാസ്റ്റ് ആവശ്യകതകൾ പാലിക്കാത്ത നിറങ്ങളുടെ കോമ്പിനേഷനുകളും ഇത് കണ്ടെത്തും. ഹെഡിംഗുകളെ ആശ്രയിച്ച് പേജുകൾ നാവിഗേറ്റ് ചെയ്യുന്നവർക്കായി, ഹെഡിംഗ് ഹൈരാർക്കിയിൽ സംഭവിക്കുന്ന മാറ്റങ്ങളും ഇത് രേഖപ്പെടുത്തും.
ഇവ പാറ്റേൺ അടിസ്ഥാനത്തിലുള്ള പ്രശ്നങ്ങളാണ്. ഇവ പ്രവചിക്കാവുന്ന കോഡ് മാർക്കറുകളായി കാണപ്പെടുന്നു, അതായത് ഓട്ടോമേഷന് കണ്ടെത്താൻ ഏറ്റവും എളുപ്പമുള്ള ജോലികളാണിവ.
യഥാർത്ഥ പ്രശ്നങ്ങൾ കണ്ടെത്തുന്ന ഒരു പൈപ്പ്ലൈൻ നിർമ്മിക്കുക
നല്ലൊരു സംവിധാനം എന്നത് ഒറ്റപ്പെട്ട ഒരു ടൂളിനെ മാത്രം ആശ്രയിക്കുന്നതല്ല. അത് വിവിധ പാളികൾ (layers) ചേർന്നതാണ്. ആദ്യ പാളി കോഡ് തന്നെ സ്കാൻ ചെയ്യുന്ന ഒരു റൂൾ എഞ്ചിൻ (rule engine) ആണ്. ഡെവലപ്പർമാർ കമ്പോണന്റുകൾ എഴുതുന്ന സമയത്ത് തന്നെ ഈ എഞ്ചിനുകൾ മാർക്കപ്പ് WCAG മാർഗ്ഗനിർദ്ദേശങ്ങളുമായി താരതമ്യം ചെയ്യുകയും, ലേബലുകൾ ഇല്ലാത്ത ഇൻപുട്ടുകളോ തെറ്റായ അറ്റ്രിബ്യൂട്ടുകളോ ഉണ്ടെങ്കിൽ അവ മുൻകൂട്ടി അറിയിക്കുകയും ചെയ്യുന്നു.
രണ്ടാമത്തെ പാളി ബ്രൗസർ ഓട്ടോമേഷൻ (browser automation) ആണ്. ഒരു മോഡൽ (modal) തുറക്കുമ്പോഴോ, ഒരു ഡ്രോപ്പ്ഡൗൺ വികസിക്കുമ്പോഴോ, അല്ലെങ്കിൽ ഒരു ഫോം വാലിഡേഷൻ എറർ വരുമ്പോഴോ സംഭവിക്കുന്ന കാര്യങ്ങൾ സ്റ്റാറ്റിക് കോഡ് അനാലിസിസിന് കണ്ടെത്താൻ കഴിയില്ല. ഉപയോക്താവിന്റെ പ്രവർത്തനത്തിനനുസരിച്ച് ഉള്ളടക്കം മാറുന്ന യഥാർത്ഥ യൂസർ ജേർണികൾ—സൈൻഅപ്പ് ഫ്ലോകൾ, ചെക്കൗട്ട് പ്രക്രിയകൾ, അക്കൗണ്ട് ഡാഷ്ബോർഡുകൾ—ഇവയിലൂടെ ഓട്ടോമേറ്റഡ് ബ്രൗസറുകൾ സഞ്ചരിക്കേണ്ടതുണ്ട്. നിങ്ങളുടെ പാസ്വേഡ് ആവശ്യകതകൾ ഒരു ഫീൽഡിൽ നിന്ന് ഫോക്കസ് മാറുമ്പോൾ മാത്രം പ്രത്യക്ഷപ്പെടുന്നതാണെങ്കിൽ, ഒരു കോഡ് സ്കാനറിന് മാത്രം ആ പരാജയം ഒരിക്കലും കണ്ടെത്താൻ കഴിഞ്ഞെന്നു വരില്ല.
മൂന്നാമത്തെ പാളി AI കണ്ടെത്തലുകളെ വ്യാഖ്യാനിക്കുകയും ഡ്യൂപ്ലിക്കേറ്റുകൾ സംയോജിപ്പിക്കുകയും ചെയ്യുന്നതാണ്. എൺപത് പേജുകളിൽ ഉപയോഗിക്കുന്ന ഒരു ഹെഡർ കമ്പോണന്റിൽ ഒരേ ലേബൽ ഇല്ലാത്ത ഐക്കൺ ബട്ടൺ ഉണ്ടെങ്കിൽ, സിസ്റ്റം അത് എൺപത് വ്യത്യസ്ത പേജ് ലെവൽ ബഗുകളായി കാണിക്കാതെ, ഒരു കമ്പോണന്റ് ലെവൽ തകരാറായി മാത്രം റിപ്പോർട്ട് ചെയ്യണം. ഇത് ടീമുകൾ അനാവശ്യമായ വിവരങ്ങളിൽ കുടുങ്ങിപ്പോകുന്നത് തടയുന്നു.
നാലാമത്തെ പാളി മനുഷ്യരുടെ പരിശോധനയാണ് (human review). ഒരു യന്ത്രം നിരന്തരം പരിശോധന നടത്തണം, എന്നാൽ റിലീസിന് മുമ്പ് ഒരു വ്യക്തി എഡ്ജ് കേസുകൾ (edge cases) പരിശോധിക്കണം. ഒരു ഓട്ടോമേറ്റഡ് പൈപ്പ്ലൈനും അതിന്റെ സ്വന്തം തീരുമാനത്തിൽ മാത്രം അന്തിമ വിധി പറയരുത്.
സാങ്കേതിക പദങ്ങളെ പ്രായോഗിക നടപടികളാക്കി മാറ്റുക
സ്കാനറുകളിൽ നിന്നുള്ള വിവരങ്ങൾ പലപ്പോഴും ബാക്ക്ലോഗുകളിൽ (backlogs) കുടുങ്ങിപ്പോകാറുണ്ട്, കാരണം അവ ഡെവലപ്പർമാർക്ക് വേണ്ടിയുള്ളതല്ല, മറിച്ച് ഓഡിറ്റർമാർക്ക് വേണ്ടിയുള്ള ഒരു സ്പെസിഫിക്കേഷൻ പോലെയാണ് തോന്നിക്കുക. "insufficient color contrast ratio" എന്ന് പറയുന്ന ഒരു റിപ്പോർട്ട് അവഗണിക്കപ്പെട്ടേക്കാം, കാരണം അത് വളരെ അമൂർത്തവും (abstract) മുൻഗണന കുറഞ്ഞതുമായി തോന്നും. പകരം "വെള്ള ബാക്ക്ഗ്രൗണ്ടിലെ ചാരനിറത്തിലുള്ള ഹെൽപ്പ് ടെക്സ്റ്റ് വായിക്കാൻ പ്രയാസമാണ്" എന്ന് പറയുന്നത് ഒരു ഡെവലപ്പർക്ക് എവിടെ നോക്കണം, എന്ത് ശരിയാക്കണം, അത് ഉപയോക്താക്കൾക്ക് എന്തുകൊണ്ട് പ്രധാനമാണ് എന്ന് കൃത്യമായി പറഞ്ഞുതരുന്നു. സാങ്കേതികമായ WCAG പരാജയങ്ങളെ ഉൽപ്പന്ന ടീമുകൾക്ക് വായിക്കാനും പ്രവർത്തിക്കാനും കഴിയുന്ന ലളിതമായ ഭാഷയിലേക്ക് മാറ്റുന്നതിലൂടെ ഈ വിടവ് നികത്താൻ AI സഹായിക്കുന്നു.
എല്ലാ അലേർട്ടുകളെയും ഒരുപോലെ കാണുന്നതിന് പകരം, നിങ്ങളുടെ കണ്ടെത്തലുകൾക്ക് കോൺഫിഡൻസ് ലെവലുകൾ (confidence levels) നൽകേണ്ടതുണ്ട്. ലേബൽ ഇല്ലാത്ത ഫോം ഇൻപുട്ടുകൾ പോലുള്ള ഉയർന്ന കോൺഫിഡൻസ് ഉള്ള പ്രശ്നങ്ങൾ ഓട്ടോമാറ്റിക്കായി ടിക്കറ്റുകൾ നിർമ്മിക്കാം, കാരണം WCAG അനുസരിച്ച് ഇവയ്ക്ക് പരിഹാരം നിർബന്ധമാണ് കൂടാതെ ഇതിനുള്ള പരിഹാരവും ലളിതവുമാണ്. വിവരണത്തിന് പകരം കീവേഡുകൾ മാത്രം നിറച്ച (keyword-stuffed) സംശയാസ്പദമായ ആൾട്ട് ടെക്സ്റ്റ് (alt text) പോലുള്ള ഇടത്തരം കോൺഫിഡൻസ് ഉള്ള കണ്ടെത്തലുകൾ, ആ വിവരണം ഉപയോഗപ്രദമാണോ എന്ന് തീരുമാനിക്കാൻ മനുഷ്യന്റെ പരിശോധന ആവശ്യമാണ്. കുറഞ്ഞ കോൺഫിഡൻസ് ഉള്ള കാര്യങ്ങൾ മാനുവൽ ടെസ്റ്റിംഗിനായി റിപ്പോർട്ടുകളിൽ തന്നെ നിലനിർത്തണം. ഒരു സ്കാനറിന് ഒരു ഇമേജിൽ ആൾട്ട് അറ്റ്രിബ്യൂട്ട് (alt attribute) ഇല്ലെന്ന് കണ്ടെത്താൻ കഴിയും, എന്നാൽ ആ ചിത്രം അലങ്കാരത്തിന് വേണ്ടിയുള്ളതാണോ അതോ ഉള്ളടക്കം മനസ്സിലാക്കാൻ അത് അത്യാവശ്യമാണോ എന്ന് അതിന് അറിയില്ല. ആ സാഹചര്യം മനസ്സിലാക്കാൻ ഇപ്പോഴും ഒരു മനുഷ്യന്റെ സഹായം ആവശ്യമാണ്.
ഒരിക്കൽ പരിഹരിക്കുക, എല്ലായിടത്തും പരിഹരിക്കുക
പ്രശ്നങ്ങൾ എവിടെയാണ് കേന്ദ്രീകരിച്ചിരിക്കുന്നത് എന്ന് കണ്ടെത്താൻ AI ടീമുകളെ സഹായിക്കുന്നു. മോശമായി നിർമ്മിച്ച ഒരു ബട്ടൺ കോംപോണന്റ് (button component) അമ്പത് സ്ക്രീനുകളിൽ ഉണ്ടെങ്കിൽ, ആ കോംപോണന്റ് ഒരിക്കൽ മാത്രം ശരിയാക്കിയാൽ തന്നെ പ്രശ്നങ്ങളുടെ എണ്ണം പെട്ടെന്ന് കുറയും. ഇത് ഓരോ പേജിലും പോയി പ്രശ്നങ്ങൾ പരിഹരിക്കുന്ന രീതിയിൽ നിന്ന് സിസ്റ്റമാറ്റിക് ആയ കോംപോണന്റ് ലൈബ്രറി മെയിന്റനൻസിലേക്കുള്ള മാറ്റമാണ്. പാറ്റേൺ തിരിച്ചറിയുന്നതിലാണ് (Pattern recognition) AI അതിന്റെ ഗുണം നൽകുന്നത്. നൂറുകണക്കിന് പേജുകളിലെ പ്രശ്നങ്ങളെ ഇത് പരസ്പരം ബന്ധിപ്പിക്കുന്നു, അതിനാൽ നാല്പത് വ്യത്യസ്ത Jira ടിക്കറ്റുകളിൽ ഒരേ ബഗ് തന്നെ വീണ്ടും വീണ്ടും പരിഹരിക്കേണ്ടി വരുന്ന അവസ്ഥ ഒഴിവാക്കാം.
സ്കാനറുകളെ പുൾ റിക്വസ്റ്റുകളുമായി (pull requests) ബന്ധിപ്പിക്കുന്നത് ഫീഡ്ബാക്ക് വേഗത്തിലാക്കുന്നു. ഒരു ഡെവലപ്പർ തന്റെ പുതിയ മാർക്കപ്പ് (markup) കാരണം ഒരു ഹെഡിംഗ് ലെവൽ വിട്ടുപോയി എന്ന അലേർട്ട് മെർജ് ചെയ്യുന്നതിന് മുമ്പ് തന്നെ ലഭിച്ചാൽ, അത് പരിഹരിക്കാൻ മിനിറ്റുകൾ മതിയാകും. എന്നാൽ ഇതേ പ്രശ്നം പ്രൊഡക്ഷനിലേക്ക് എത്തിയ ശേഷം ലോഞ്ചിന് രണ്ട് ദിവസം മുമ്പ് കണ്ടെത്തുകയാണെങ്കിൽ, അത് പരിഹരിക്കാൻ ഹോട്ട്ഫിക്സ് (hotfix), റഗ്രഷൻ ടെസ്റ്റിംഗ് (regression testing), സ്റ്റേക്ക്ഹോൾഡർമാരുമായുള്ള ആശയവിനിമയം എന്നിവ ആവശ്യമായി വരും. വേഗത്തിലുള്ള ഫീഡ്ബാക്ക് ലൂപ്പുകൾ സമയം ലാഭിക്കുകയും അക്സസിബിലിറ്റി ഡെബ്റ്റ് (accessibility debt) കുറയ്ക്കുകയും ചെയ്യുന്നു.
ജോലികൾ വിഭജിക്കുക
ഓട്ടോമേഷൻ കൊണ്ട് മാത്രം നിങ്ങളുടെ ഉൽപ്പന്നം അക്സസിബിൾ (accessible) ആകില്ല. എന്നിരുന്നാലും, ഒരേ തെറ്റുകൾ തന്നെ വീണ്ടും വീണ്ടും ആവർത്തിച്ച് ചെയ്യുന്നതിൽ നിന്ന് അത് നിങ്ങളുടെ ടീമിനെ തടയും. നിങ്ങളുടെ CI പൈപ്പ്ലൈനിൽ (CI pipeline) ഓട്ടോമേറ്റഡ് ചെക്കുകൾ പ്രവർത്തിപ്പിക്കുക. കണ്ടന്റ് എഡിറ്റർമാരോ പുതിയ ഫീച്ചറുകളോ വരുത്തുന്ന മാറ്റങ്ങൾ കാരണം ഉണ്ടാകുന്ന റഗ്രഷനുകൾ (regressions) കണ്ടെത്താൻ എല്ലാ രാത്രിയിലും സ്റ്റേജിംഗ് സൈറ്റുകൾ ക്രോൾ (crawl) ചെയ്യുക. ബാക്ക്ലോഗുകൾ (backlogs) നിയന്ത്രിക്കാൻ പ്രശ്നങ്ങളെ കോംപോണന്റുകൾ തിരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക. വെബ്സൈറ്റിന്റെ ഏത് ഭാഗത്താണോ സാഹചര്യം (context) പ്രധാനപ്പെട്ടത് അവിടെ മനുഷ്യന്റെ ശ്രദ്ധ ഉപയോഗിക്കുക: ഒരു ചിത്രത്തിന് ആൾട്ട് ടെക്സ്റ്റ് ആവശ്യമുണ്ടോ എന്ന് തീരുമാനിക്കുക, സങ്കീർണ്ണമായ കസ്റ്റം കോംപോണന്റുകൾ വിലയിരുത്തുക, ഉപയോക്താവിന്റെ ഉദ്ദേശ്യം മനസ്സിലാക്കേണ്ടി വരുന്ന ഫ്ലോകൾ (flows) ടെസ്റ്റ് ചെയ്യുക എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു.
വോളിയം, ട്രിയേജ് (triage), പാറ്റേൺ തിരിച്ചറിയൽ എന്നിവയ്ക്കായി AI ഉപയോഗിക്കുക. എല്ലാ രാത്രിയിലും എല്ലാ പേജുകളിലുമുള്ള ആവർത്തന സ്വഭാവമുള്ള സ്കാനിംഗ് മെഷീനുകളെ ഏൽപ്പിക്കുക. തീരുമാനങ്ങൾ എടുക്കേണ്ട കാര്യങ്ങൾ മനുഷ്യരെ ഏൽപ്പിക്കുക. ഇത്തരത്തിലുള്ള ജോലികൾ വിഭജിക്കുന്നതിലൂടെ അക്സസിബിലിറ്റി എന്നത് ലോഞ്ചിന് മുമ്പുള്ള ഒരു പരിഭ്രാന്തി എന്നതിൽ നിന്ന് ഒരു സാധാരണ എൻജിനീയറിംഗ് ശീലമായി മാറുന്നു.
Source: https://dev.to/henryv/automating-wcag-compliance-with-ai-4ogp
Join the discussion: https://t.me/GyaanSetuAi
