Cypress tap என்ற புதிய பீட்டா அம்சத்தை வெளியிட்டுள்ளது. இது AI மூலம் இயக்கப்படும் கோடிங் ஏஜெண்டுகள் (coding agents) நேரடி Cypress சோதனை அமர்வில் (live Cypress test session) இணைக்கவும், DOM ஸ்னாப்ஷாட்டுகள் மற்றும் கமெண்ட் லாக்ஸ்களைப் பெறவும், அந்தத் தகவல்களைப் பயன்படுத்தித் தோல்விகளைக் கண்டறியவும் அனுமதிக்கிறது. இந்தத் கருவி Cypress 15.21.0 அல்லது அதற்குப் புதிய பதிப்பு, Chromium அடிப்படையிலான பிரவுசர் மற்றும் “cypress open” UI ஆகியவற்றுடன் மட்டுமே செயல்படும்; இது headless mode-இல் இயங்காது.

ஏன் AI ஏஜெண்டுகளுக்கு எக்சிட் கோடைத் (exit code) தாண்டி கூடுதல் தகவல்கள் தேவை?

பெரும்பாலான AI கோடிங் உதவியாளர்கள் Cypress இயங்குதலை மற்ற கமெண்ட்-லைன் கருவிகளைப் போலவே கருதுகிறார்கள்: அவை npx cypress run கட்டளையை இயக்கி, அந்தச் செயல்பாட்டின் எக்சிட் ஸ்டேட்டஸை (exit status) படித்து, சோதனை வெற்றியடைந்ததா இல்லையா என்பதைத் தீர்மானிக்கின்றன. ஒரு எக்சிட் கோட் ஏஜென்ட்டிற்கு ஏதோ தவறு நடந்துவிட்டது என்பதைத் தெரிவிக்கும், ஆனால் ஒரு selector தவறாகத் தட்டச்சு செய்யப்பட்டதா, ஒரு பக்கம் லோட் ஆவதில் தோல்வி ஏற்பட்டதா அல்லது ஒரு overlay பட்டனை மறைத்ததா போன்ற எந்தத் தகவலையும் அது வழங்காது. இதற்கு நேர்மாறாக, மனிதர்கள் Cypress UI-ஐத் திறந்து, பிரவுசரைப் பார்த்து, DOM மரத்தைப் பரிசோதித்து, ஒரு கருத்தை முன்வைப்பதற்கு முன் கமெண்ட் லாக்ஸைப் படிக்கிறார்கள்.

அந்த இடைவெளி தானியங்கி பிழைத்திருத்தத்தை (automated debugging) பலவீனமாக்குகிறது. “Element not found” என்ற பிழை dezenes of மூல காரணங்களால் ஏற்படலாம், மேலும் காட்சிச் சான்றுகள் (visual evidence) இல்லாமல் ஒரு AI மீண்டும் மீண்டும் அதே தீர்வை முயன்று, முடிவில்லாமல் சுழன்று கொண்டே இருக்கலாம்.

tap எவ்வாறு இந்த இடைவெளியைக் குறைக்கிறது

Tap, இயங்கிக் கொண்டிருக்கும் Cypress இன்ஸ்டன்ஸிற்கான ஒரு டெர்மினல் அடிப்படையிலான இடைமுகத்தை (terminal-based interface) உருவாக்குகிறது. டெவலப்பர் Cypress-ஐ open mode-இல் தொடங்கியவுடன்:

npx cypress open --e2e --browser=chrome

ஏஜென்ட் ஒரு தனி ஷெல்லிலிருந்து (separate shell) தொடர்ச்சியான JSON-அவுட்புட் கட்டளைகளை வழங்க முடியும்:

  • npx cypress tap specs --json – கிடைக்கக்கூடிய spec கோப்புகளைப் பட்டியலிடுகிறது.
  • npx cypress tap run <spec> --json – ஒரு ஒற்றை spec இயக்கத்தைத் தொடங்குகிறது.
  • npx cypress tap status --json – நேர முத்திரைகளுடன் (timestamps) தற்போதைய இயக்கத்தின் நிலையைத் தருகிறது.

status payload-இல் startedAt நேர முத்திரை இருப்பதால், ஏஜென்ட் தான் பார்ப்பது புதிய முடிவுகளைத் தான் அல்லது ஏற்கனவே முடிந்துவிட்ட பழைய முடிவுகளைத் தான் என்பதைச் சரிபார்க்க முடியும். வெறும் எக்சிட் கோடை மட்டும் நம்பியிருப்பது இனி போதுமானதல்ல.

ஒரு சோதனை தோல்வியடையும் போது, ஏஜென்ட் இன்னும் ஆழமாக ஆராயலாம்:

  • npx cypress tap reporter --json – ஒட்டுமொத்த சோதனை அறிக்கையைப் பெறுகிறது.
  • npx cypress tap command --test-id <ID> --command-id <ID> --json – பிழை ஏற்பட்ட சரியான கமெண்ட் மற்றும் அந்தத் தருணத்தில் உள்ள ஆப்-இன் DOM, ARIA tree மற்றும் தொடர்புடைய எலிமெண்ட் பண்புகளை (attributes) ஸ்னாப்ஷாட்டாகப் பெறுகிறது.

அந்த ஸ்னாப்ஷாட்டைக் கொண்டு, selector ஏன் தவறானது, பக்கம் இன்னும் லோட் ஆகிக் கொண்டிருக்கிறதா அல்லது ஒரு modal இலக்கை மறைத்ததா என்பதை AI பகுப்பாய்வு செய்ய முடியும். அதன் பிறகு அது ஒரு குறியீடு மாற்றத்தை முன்மொழிந்து, அதைச் செயல்படுத்தி, சரிபார்ப்பதற்காக அதே spec-ஐ மீண்டும் இயக்க முடியும்.

தன்னாட்சி ஏஜெண்டுகளுக்கான (autonomous agents) ஒரு பாதுகாப்பு கொள்கை

இந்தச் சுழற்சி முடிவில்லாமல் ஓடுவதைத் தவிர்க்க, Cypress குழு ஒரு ஒழுக்கமான பணிப்பாய்வை (workflow) பரிந்துரைக்கிறது:

  1. ஒரே ஒரு குறிப்பிட்ட spec கோப்பை மட்டும் இயக்கவும்.
  2. ஒரு கடுமையான காலக்கெடுவுடன் tap status-ஐப் பயன்படுத்தவும் (poll), startedAt முத்திரை முந்தைய முறையை விடப் பழையதாக இருந்தால் அந்த முடிவைத் தவிர்க்கவும்.
  3. தோல்வியடைந்த சோதனை மற்றும் பிழைத்த கமெண்ட் ஆகியவற்றை மட்டும் பரிசோதிக்கவும்.
  4. அடுத்த முறை இயங்குவதற்கு முன் ஒருமுறை மட்டும் குறியீடு மாற்றத்திற்கு (code modification) அனுமதி அளிக்கவும்.
  5. spec-ஐ மீண்டும் இயக்கவும்.
  6. முடிவு மாறினால், நிறுத்திவிட்டு மனிதர் ஒருவரின் ஆய்வுக்குக் கொண்டு செல்லவும்.

ஏஜென்ட் தான் கவனித்தவை மற்றும் முன்மொழியப்பட்ட தீர்வு ஏன் வேலை செய்யும் என்பது குறித்த இயற்கை மொழி விளக்கத்தையும் (natural-language explanation) உருவாக்க வேண்டும். சோதனை வெற்றியடைவது மட்டும் போதாது; தான் காட்சிச் சான்றுகளைப் புரிந்து கொண்டதை AI நிரூபிக்க வேண்டும்.

யார் பயனடைவார்கள்

ஏற்கனவே கோடிங் உருவாக்க AI உதவியாளர்களை நம்பியிருக்கும் டெவலப்பர்கள், இப்போது அந்த உதவியாளர்களுக்குச் சிறந்த பிழைத்திருத்த வசதியை வழங்க முடியும். இதன் மூலம் flaky tests-களைத் தேடிச் செலவிடும் நேரம் குறையும்; குறிப்பாகப் பிழைகளைத் தானாக மீண்டும் உருவாக்குவது (reproducing a failure) கடினமாக இருக்கும் பெரிய end-to-end suites-களில் இது பெரும் உதவியாக இருக்கும். tap-ஐப் பயன்படுத்தும் குழுக்கள், UI கூறுகளைத் (components)touch செய்யும் pull requests-களை விரைவாக முடிக்க முடியும் மற்றும் அடிக்கடி பிழைத்திருத்த அமர்வுகளைத் தவிர்க்க முடியும்.

அபாயங்கள் மற்றும் வரம்புகள்

Tap இன்னும் பீட்டா நிலையில் உள்ளது, அதாவது இதில் பிழைகள் இருக்கலாம், கமெண்ட் முறைகள் மாறலாம் அல்லது சில அமைப்புகளுக்கான ஆதரவு அறிவிப்பின்றி நீக்கப்படலாம். இது open UI-ஐச் சார்ந்து இருப்பதால், headless CI pipelines-களை இது ஆதரிக்காது; எனவே தானியங்கி உருவாக்கங்களுக்கு (automated builds) குழுக்கள் ஒரு தனித் திட்டத்தை வைத்திருக்க வேண்டியிருக்கும். இந்த அம்சம் நேரடி DOM தரவை வழங்குவதால், பெரிய spec-களை இயக்கும்போது சிறிய அளவிலான செயல்திறன் சுமை (performance overhead) ஏற்படலாம். இறுதியாக, இந்த பாதுகாப்பு கொள்கை AI காலக்கெடுவைப் பின்பற்றும் மற்றும் ஒரு மாற்றத்திற்குப் பிறகு நின்றுவிடும் என்று assumes செய்கிறது; சரியாக வடிவமைக்கப்படாத ஒரு ஏஜென்ட் இன்னும் முடிவில்லாத சுழற்சிக்குள் செல்லலாம் அல்லது தவறான தீர்வைச் செயல்படுத்தலாம்.

அடுத்து கவனிக்க வேண்டியவை

  • பீட்டா பின்னூட்டச் சுழற்சிகள் – ஆரம்பகாலப் பயனர்களின் உள்ளீட்டின் அடிப்படையில் Cypress பெரும்பாலும் JSON schema-வைச் செம்மைப்படுத்தி, கூடுதல் நுணுக்கமான கட்டளைகளைச் சேர்க்கும்.
  • CI உடன் ஒருங்கிணைப்பு – tap-ன் open-mode தேவையை headless runners உடன் இணைக்கும் சமூக ஸ்கிரிப்ட்களை எதிர்பார்க்கலாம்; ஒரு மெய்நிகர் திரையை (virtual display) உருவாக்குவதன் மூலம் இது சாத்தியமாகலாம்.
  • AI-agent கருவிகள் – கோடிங் உதவியாளர்களை உருவாக்கும் நிறுவனங்கள், tap ஆதரவை ஒரு இயல்புநிலை பிழைத்திருத்த தொகுதியாக (default debugging module) இணைக்கத் தொடங்கலாம், இது முக்கிய IDE விரிவாக்கங்களில் இந்த அம்சத்தை அதிகத் தெரிவுத்தன்மையுடன் காட்டும்.

நீங்கள் AI-ஆல் இயக்கப்படும் சோதனைப் பராமரிப்பில் (AI-driven test maintenance) பரிசோதனை செய்து கொண்டிருந்தால், ஒரு நிலையற்ற ஸ்பெக்கிற்கு (flaky spec) tap-ஐப் பயன்படுத்திப் பாருங்கள்; காட்சி சூழல் (visual context) பிழைத்திருத்தச் சுழற்சியைக் குறைக்கிறதா என்று பாருங்கள். இந்தத் கருவி மனிதனின் தீர்ப்பிற்கு மாற்றாகாது, ஆனால் இது உங்கள் கோடிங் ஏஜென்ட்டிற்கு முன்னதாக இல்லாத ஒரு பார்வையை வழங்கும்.