Cypress એ tap નામનું એક બીટા ફીચર રિલીઝ કર્યું છે જે AI-સંચાલિત કોડિંગ એજન્ટ્સને લાઈવ Cypress ટેસ્ટ સેશનમાં જોડવા, DOM સ્નેપશોટ્સ અને કમાન્ડ લોગ્સ મેળવવા અને તે વિઝ્યુઅલ માહિતીનો ઉપયોગ કરીને નિષ્ફળતાઓનું નિદાન કરવા દે છે. આ ટૂલ ફક્ત Cypress 15.21.0 અથવા તેનાથી નવા વર્ઝન, Chromium-આધારિત બ્રાઉઝર અને “cypress open” UI સાથે જ કામ કરે છે; તે હેડલેસ (headless) મોડમાં ચાલતું નથી.

AI એજન્ટ્સને એક્ઝિટ કોડ (exit code) થી વધુ શા માટે જરૂર છે

મોટાભાગના AI કોડિંગ આસિસ્ટન્ટ્સ Cypress રનને અન્ય કોઈપણ કમાન્ડ-લાઇન ટૂલની જેમ જ ગણે છે: તેઓ npx cypress run ચલાવે છે, પ્રોસેસનો એક્ઝિટ સ્ટેટસ (exit status) વાંચે છે, અને ટેસ્ટ પાસ થયો કે નહીં તેનો નિર્ણય લે છે. એક્ઝિટ કોડ એજન્ટને જણાવે છે કે કંઈક ખોટું થયું છે, પરંતુ તે કોઈ સંકેત આપતો નથી કે સિલેક્ટર (selector) લખવામાં ભૂલ થઈ હતી, પેજ લોડ થવામાં નિષ્ફળ ગયું હતું, અથવા કોઈ ઓવરલે (overlay) બટનને રોકી રહ્યું હતું. તેનાથી વિપરીત, માણસો Cypress UI ખોલે છે, બ્રાઉઝર જુએ છે, DOM ટ્રીનું નિરીક્ષણ કરે છે અને કોઈ ધારણા બાંધતા પહેલા કમાન્ડ લોગ વાંચે છે.

આ તફાવત ઓટોમેટેડ ડિબગિંગને અસ્થિર બનાવે છે. “Element not found” ના અનેક મૂળ કારણો હોઈ શકે છે, અને વિઝ્યુઅલ પુરાવા વિના AI એક જ ફિક્સ (fix) વારંવાર કરવાનો પ્રયાસ કરી શકે છે, જેનાથી તે અનંત લૂપમાં ફસાઈ શકે છે.

tap કેવી રીતે આ તફાવત દૂર કરે છે

Tap ચાલતા Cypress ઇન્સ્ટન્સ માટે ટર્મિનલ-આધારિત ઇન્ટરફેસ બનાવે છે. એકવાર ડેવલપર Cypress ને ઓપન મોડમાં લોન્ચ કરે પછી:

npx cypress open --e2e --browser=chrome

એજન્ટ અલગ શેલ (shell) માંથી JSON-આઉટપુટ કમાન્ડ્સની શ્રેણી ઇશ્યુ કરી શકે છે:

  • npx cypress tap specs --json – ઉપલબ્ધ spec ફાઇલોની યાદી આપે છે.
  • npx cypress tap run <spec> --json – સિંગલ spec રન શરૂ કરે છે.
  • npx cypress tap status --json – ટાઇમસ્ટેમ્પ સહિત વર્તમાન રનનું સ્ટેટસ રિટર્ન કરે છે.

કારણ કે સ્ટેટસ પેલોડમાં startedAt ટાઇમસ્ટેમ્પ હોય છે, એજન્ટ એ ચકાસી શકે છે કે તે જૂના રન (જે વહેલા પૂરું થઈ ગયું હોય) ને બદલે તાજા પરિણામો જોઈ રહ્યો છે. માત્ર કાચા એક્ઝિટ કોડ પર આધાર રાખવો હવે પૂરતો નથી.

જ્યારે ટેસ્ટ નિષ્ફળ જાય છે, ત્યારે એજન્ટ વધુ ઊંડાણપૂર્વક તપાસ કરી શકે છે:

  • npx cypress tap reporter --json – એકંદર ટેસ્ટ રિપોર્ટ મેળવે છે.
  • npx cypress tap command --test-id <ID> --command-id <ID> --json – જે કમાન્ડમાં ભૂલ આવી છે તે ચોક્કસ કમાન્ડ મેળવે છે, સાથે જ તે ક્ષણે એપના DOM, ARIA ટ્રી અને કોઈપણ સંબંધિત એલિમેન્ટ એટ્રિબ્યુટ્સનો સ્નેપશોટ પણ મેળવે છે.

તે સ્નેપશોટની મદદથી, AI સમજી શકે છે કે સિલેક્ટર કેમ ચૂકી ગયું, પેજ હજુ લોડ થઈ રહ્યું હતું કે નહીં, અથવા જો કોઈ મોડલ (modal) ટાર્ગેટને છુપાવી રહ્યું હતું. ત્યારબાદ તે કોડમાં ફેરફાર સૂચવી શકે છે, તેને લાગુ કરી શકે છે, અને ફિક્સની ચકાસણી કરવા માટે તે જ spec ફરીથી રન કરી શકે છે.

સ્વાયત્ત (autonomous) એજન્ટ્સ માટે સેફ્ટી પોલિસી

લૂપને અનંતકાળ સુધી ચાલતું અટકાવવા માટે, Cypress ટીમ એક શિસ્તબદ્ધ વર્કફ્લો સૂચવે છે:

  1. ફક્ત એક ચોક્કસ spec ફાઇલ જ રન કરો.
  2. એક કડક ડેડલાઇન સાથે tap status ને પોલ (poll) કરો, જેનું startedAt છેલ્લી પોલ કરતા જૂનું હોય તેવા કોઈપણ પરિણામને અવગણો.
  3. ફક્ત નિષ્ફળ જતી ટેસ્ટ અને ભૂલભરેલા કમાન્ડનું જ નિરીક્ષણ કરો.
  4. આગામી રન પહેલાં માત્ર એક જ કોડ મોડિફિકેશન (ફેરફાર) ની મંજૂરી આપો.
  5. Spec ફરીથી રન કરો.
  6. જો પરિણામ બદલાય, તો અટકી જાઓ અને રિવ્યુ માટે માણસને જાણ કરો.

એજન્ટે તેણે શું જોયું અને સૂચવેલ ફિક્સ શા માટે કામ કરવું જોઈએ તેનું કુદરતી ભાષામાં (natural-language) વર્ણન પણ તૈયાર કરવું જોઈએ. ટેસ્ટ પાસ થવો પૂરતો નથી; AI એ સાબિત કરવું જોઈએ કે તે વિઝ્યુઅલ પુરાવા સમજ્યો છે.

કોને ફાયદો થશે

જે ડેવલપર્સ કોડ જનરેશન માટે પહેલેથી જ AI આસિસ્ટન્ટ્સ પર આધાર રાખે છે, તેઓ હવે તે આસિસ્ટન્ટ્સને વધુ સચોટ ડિબગિંગ સપાટી આપી શકે છે. અપેક્ષિત ફાયદો એ છે કે ફ્લેકી (flaky) ટેસ્ટ પાછળ વિતાવેલા સમયમાં ઘટાડો થશે, ખાસ કરીને મોટા એન્ડ-ટુ-એન્ડ (end-to-end) સ્યુટ્સમાં જ્યાં નિષ્ફળતાને મેન્યુઅલી ફરીથી બનાવવામાં મિનિટો લાગી શકે છે. જે ટીમો tap અપનાવશે તેઓ UI ઘટકોને સ્પર્શ કરતા પુલ રિક્વેસ્ટ્સ (pull requests) પર ઝડપી પરિણામો જોઈ શકે છે, અને વારંવાર ડિબગિંગ સેશન્સની જરૂરિયાત ઓછી થઈ શકે છે.

જોખમો અને મર્યાદાઓ

Tap હજુ બીટામાં છે, જેનો અર્થ છે કે તેમાં બગ્સ હોઈ શકે છે, તેની કમાન્ડ સિન્ટેક્સ બદલાઈ શકે છે, અથવા કોઈપણ સૂચના વગર અમુક કોન્ફિગરેશન માટે સપોર્ટ બંધ થઈ શકે છે. તેની ઓપન UI પરની નિર્ભરતા હેડલેસ CI પાઇપલાઇન્સને બાકાત રાખે છે, તેથી ટીમોએ ઓટોમેટેડ બિલ્ડ્સ માટે અલગ વ્યૂહરચનાની જરૂર પડશે. આ ફીચર લાઈવ DOM ડેટા સ્ટ્રીમ કરે છે કારણ કે તેમાં થોડો પરફોર્મન્સ ઓવરહેડ છે જે મોટા specs ને ધીમા કરી શકે છે. છેલ્લે, સેફ્ટી પોલિસી એ માને છે કે AI ડેડલાઇનનું પાલન કરી શકે છે અને એક ફેરફાર પછી અટકી શકે છે; નબળી રીતે ડિઝાઇન કરેલ એજન્ટ હજુ પણ અનંત લૂપમાં પ્રવેશી શકે છે અથવા ખોટો ફિક્સ લાગુ કરી શકે છે.

આગળ શું જોવું

  • બીટા ફીડબેક સાયકલ – Cypress સંભવતઃ JSON schema માં સુધારો કરશે અને પ્રારંભિક વપરાશકર્તાઓના ઇનપુટના આધારે વધુ વિગતવાર કમાન્ડ્સ ઉમેરશે.
  • CI સાથેનું ઇન્ટિગ્રેશન – એવા કોમ્યુનિટી સ્ક્રિપ્ટ્સની અપેક્ષા રાખવી જે tap ની open-mode જરૂરિયાતને headless runners સાથે જોડે, કદાચ વર્ચ્યુઅલ ડિસ્પ્લે બનાવીને.
  • AI-એજન્ટ ટૂલિંગ – કોડિંગ આસિસ્ટન્ટ્સ બનાવતા વેન્ડર્સ tap સપોર્ટને ડિફોલ્ટ ડિબગિંગ મોડ્યુલ તરીકે બંડલ કરવાનું શરૂ કરી શકે છે, જેનાથી મુખ્ય પ્રવાહના IDE એક્સટેન્શનમાં આ ફીચર વધુ દેખાઈ શકે છે.

જો તમે AI-સંચાલિત ટેસ્ટ મેન્ટેનન્સ સાથે પ્રયોગ કરી રહ્યા હોવ, તો કોઈ એક flaky spec પર tap નો ઉપયોગ કરી જુઓ અને જુઓ કે શું વિઝ્યુઅલ કોન્ટેક્સ્ટ ડિબગિંગ સાયકલને ટૂંકી બનાવે છે. આ ટૂલ માનવીય નિર્ણયશક્તિનું સ્થાન નહીં લે, પરંતુ તે તમારા કોડિંગ એજન્ટને એવી દ્રષ્ટિ આપશે જે તેની પાસે અગાઉ નહોતી.