Cypress tap ಎಂಬ ಹೆಸರಿನ ಹೊಸ ಬೀಟಾ ಫೀಚರ್ ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದೆ. ಇದು AI-ಚಾಲಿತ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ಗಳು ಲೈವ್ Cypress ಟೆಸ್ಟ್ ಸೆಷನ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳಲು, DOM ಸ್ನ್ಯಾಪ್ಶಾಟ್ಗಳು ಮತ್ತು ಕಮಾಂಡ್ ಲಾಗ್ಗಳನ್ನು ಪಡೆಯಲು ಮತ್ತು ಆ ದೃಶ್ಯ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿ ವೈಫಲ್ಯಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು (diagnose) ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಟೂಲ್ ಕೇವಲ Cypress 15.21.0 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೊಸ ಆವೃತ್ತಿ, Chromium ಆಧಾರಿತ ಬ್ರೌಸರ್ ಮತ್ತು “cypress open” UI ಜೊತೆಗೆ ಮಾತ್ರ ಕೆಲಸ ಮಾಡುತ್ತದೆ; ಇದು ಹೆಡ್ಲೆಸ್ ಮೋಡ್ನಲ್ಲಿ (headless mode) ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ.
AI ಏಜೆಂಟ್ಗಳಿಗೆ ಕೇವಲ ಎಕ್ಸಿಟ್ ಕೋಡ್ (exit code) ಮಾತ್ರ ಏಕೆ ಸಾಕಾಗುವುದಿಲ್ಲ?
ಹೆಚ್ಚಿನ AI ಕೋಡಿಂಗ್ ಅಸಿಸ್ಟೆಂಟ್ಗಳು Cypress ರನ್ ಅನ್ನು ಇತರ ಕಮಾಂಡ್-ಲೈನ್ ಟೂಲ್ಗಳಂತೆ ಪರಿಗಣಿಸುತ್ತವೆ: ಅವು npx cypress run ಅನ್ನು ರನ್ ಮಾಡುತ್ತವೆ, ಪ್ರಕ್ರಿಯೆಯ ಎಕ್ಸಿಟ್ ಸ್ಟೇಟಸ್ ಅನ್ನು ಓದುತ್ತವೆ ಮತ್ತು ಟೆಸ್ಟ್ ಪಾಸಾಗಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತವೆ. ಎಕ್ಸಿಟ್ ಕೋಡ್ ಯಾವುದೋ ಒಂದು ತಪ್ಪು ನಡೆದಿದೆ ಎಂದು ಏಜೆಂಟ್ಗೆ ತಿಳಿಸುತ್ತದೆ, ಆದರೆ ಸೆಲೆಕ್ಟರ್ ಅನ್ನು ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಲಾಗಿದೆಯೇ, ಪೇಜ್ ಲೋಡ್ ಆಗಲು ವಿಫಲವಾಗಿದೆಯೇ ಅಥವಾ ಯಾವುದೋ ಓವರ್ಲೇಯು ಬಟನ್ ಅನ್ನು ತಡೆಹಿಡಿದಿದೆಯೇ ಎಂಬ ಬಗ್ಗೆ ಯಾವುದೇ ಸುಳಿವು ನೀಡುವುದಿಲ್ಲ. ಇದಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, ಮನುಷ್ಯರು Cypress UI ಅನ್ನು ತೆರೆಯುತ್ತಾರೆ, ಬ್ರೌಸರ್ ಅನ್ನು ಗಮನಿಸುತ್ತಾರೆ, DOM ಟ್ರೀ ಅನ್ನು ಪರೀಕ್ಷಿಸುತ್ತಾರೆ ಮತ್ತು ಒಂದು ತೀರ್ಮಾನಕ್ಕೆ ಬರುವ ಮೊದಲು ಕಮಾಂಡ್ ಲಾಗ್ ಅನ್ನು ಓದುತ್ತಾರೆ.
ಆ ಅಂತರವು ಸ್ವಯಂಚಾಲಿತ ಡಿಬಗ್ಗಿಂಗ್ ಅನ್ನು ಅಸ್ಥಿರವಾಗಿಸುತ್ತದೆ. “Element not found” ಎಂಬ ದೋಷವು ಡಜನ್ಗಟ್ಟಲೆ ಮೂಲ ಕಾರಣಗಳಿಂದ ಉಂಟಾಗಬಹುದು, ಮತ್ತು ದೃಶ್ಯ ಪುರಾವೆಗಳಿಲ್ಲದೆ AI ಒಂದೇ ತಪ್ಪು ಪರಿಹಾರವನ್ನು ಪದೇ ಪದೇ ಪ್ರಯತ್ನಿಸುತ್ತಾ, ಅಂತ್ಯವಿಲ್ಲದ ಲೂಪ್ನಲ್ಲಿ ಸಿಲುಕಿಕೊಳ್ಳಬಹುದು.
tap ಹೇಗೆ ಈ ಅಂತರವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ?
Tap ಚಾಲನೆಯಲ್ಲಿರುವ Cypress ಇನ್ಸ್ಟೆನ್ಸ್ನೊಂದಿಗೆ ಟರ್ಮಿನಲ್ ಆಧಾರಿತ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ. ಡೆವಲಪರ್ Cypress ಅನ್ನು ಓಪನ್ ಮೋಡ್ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿದ ನಂತರ:
npx cypress open --e2e --browser=chrome
ಏಜೆಂಟ್ ಪ್ರತ್ಯೇಕ ಶೆಲ್ನಿಂದ ಸರಣಿ JSON-ಔಟ್ಪುಟ್ ಕಮಾಂಡ್ಗಳನ್ನು ನೀಡಬಹುದು:
npx cypress tap specs --json– ಲಭ್ಯವಿರುವ ಸ್ಪೆಕ್ (spec) ಫೈಲ್ಗಳ ಪಟ್ಟಿಯನ್ನು ನೀಡುತ್ತದೆ.npx cypress tap run <spec> --json– ಒಂದೇ ಸ್ಪೆಕ್ ರನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ.npx cypress tap status --json– ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳನ್ನೊಳಗೊಂಡ ಪ್ರಸ್ತುತ ರನ್ನ ಸ್ಥಿತಿಯನ್ನು ನೀಡುತ್ತದೆ.
ಸ್ಟೇಟಸ್ ಪೇಲೋಡ್ನಲ್ಲಿ startedAt ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ ಇರುವುದರಿಂದ, ಏಜೆಂಟ್ ತಾನು ನೋಡುತ್ತಿರುವುದು ಹಳೆಯ ರನ್ ಅಲ್ಲದೆ, ಹೊಸ ಫಲಿತಾಂಶಗಳೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು. ಕೇವಲ ರೊ (raw) ಎಕ್ಸಿಟ್ ಕೋಡ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುವುದು ಇನ್ನು ಮುಂದೆ ಸಾಕಾಗುವುದಿಲ್ಲ.
ಟೆಸ್ಟ್ ವಿಫಲವಾದಾಗ, ಏಜೆಂಟ್ ಇನ್ನೂ ಆಳವಾಗಿ ಪರಿಶೀಲಿಸಬಹುದು:
npx cypress tap reporter --json– ಒಟ್ಟಾರೆ ಟೆಸ್ಟ್ ವರದಿಯನ್ನು ಪಡೆಯುತ್ತದೆ.npx cypress tap command --test-id <ID> --command-id <ID> --json– ತಪ್ಪಾದ ನಿಖರವಾದ ಕಮಾಂಡ್ ಅನ್ನು ಅಪ್ಲಿಕೇಶನ್ನ DOM ಸ್ನ್ಯಾಪ್ಶಾಟ್, ARIA ಟ್ರೀ ಮತ್ತು ಆ ಸಮಯದಲ್ಲಿನ ಸಂಬಂಧಿತ ಎಲಿಮೆಂಟ್ ಅಟ್ರಿಬ್ಯೂಟ್ಗಳೊಂದಿಗೆ ಪಡೆಯುತ್ತದೆ.
ಆ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಬಳಸಿ, ಸೆಲೆಕ್ಟರ್ ಏಕೆ ತಪ್ಪಾಯಿತು, ಪೇಜ್ ಇನ್ನೂ ಲೋಡ್ ಆಗುತ್ತಿದ್ದವೇ ಅಥವಾ ಯಾವುದಾದರೂ ಮಾಡಲ್ (modal) ಗುರಿಯನ್ನು ಮರೆಮಾಚುತ್ತಿದೆಯೇ ಎಂಬುದರ ಬಗ್ಗೆ AI ತರ್ಕಬದ್ಧವಾಗಿ ಯೋಚಿಸಬಹುದು. ನಂತರ ಅದು ಕೋಡ್ ಬದಲಾವಣೆಯನ್ನು ಸೂಚಿಸಬಹುದು, ಅದನ್ನು ಅನ್ವಯಿಸಬಹುದು ಮತ್ತು ಪರಿಹಾರವನ್ನು ಪರಿಶೀಲಿಸಲು ಅದೇ ಸ್ಪೆಕ್ ಅನ್ನು ಮರು-ಚಾಲನೆ ಮಾಡಬಹುದು.
ಸ್ವಾಯತ್ತ ಏಜೆಂಟ್ಗಳಿಗಾಗಿ (autonomous agents) ಸುರಕ್ಷತಾ ನೀತಿ
ಲೂಪ್ ಅಂತ್ಯವಿಲ್ಲದೆ ನಡೆಯದಂತೆ ತಡೆಯಲು, Cypress ತಂಡವು ಶಿಸ್ತುಬದ್ಧ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸೂಚಿಸುತ್ತದೆ:
- ಕೇವಲ ಒಂದು ನಿರ್ದಿಷ್ಟ ಸ್ಪೆಕ್ ಫೈಲ್ ಅನ್ನು ರನ್ ಮಾಡಿ.
- ಕಟ್ಟುನಿಟ್ಟಾದ ಗಡುವಿನೊಂದಿಗೆ (deadline)
tap statusಅನ್ನು ಪೋಲ್ ಮಾಡಿ, ಕೊನೆಯ ಪೋಲ್ ನಂತರದstartedAtಅವಧಿಗಿಂತ ಹಳೆಯದಾದ ಯಾವುದೇ ಫಲಿತಾಂಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ. - ವಿಫಲವಾದ ಟೆಸ್ಟ್ ಮತ್ತು ತಪ್ಪಾದ ಕಮಾಂಡ್ ಅನ್ನು ಮಾತ್ರ ಪರೀಕ್ಷಿಸಿ.
- ಮುಂದಿನ ರನ್ಗಿಂತ ಮೊದಲು ಕೇವಲ ಒಂದು ಕೋಡ್ ಮಾರ್ಪಾಡಿಗೆ ಅನುಮತಿ ನೀಡಿ.
- ಸ್ಪೆಕ್ ಅನ್ನು ಮರು-ಚಾಲನೆ ಮಾಡಿ.
- ಫಲಿತಾಂಶ ಬದಲಾದರೆ, ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಲ್ಲಿಸಿ ಮತ್ತು ಪರಿಶೀಲನೆಗಾಗಿ ಮನುಷ್ಯನಿಗೆ ಸೂಚಿಸಿ.
ಏಜೆಂಟ್ ತಾನು ಗಮನಿಸಿದ ವಿಷಯ ಮತ್ತು ಪ್ರಸ್ತಾವಿತ ಪರಿಹಾರ ಏಕೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದರ ಬಗ್ಗೆ ನೈಸರ್ಗಿಕ ಭಾಷೆಯಲ್ಲಿ (natural-language) ವಿವರಣೆಯನ್ನು ಕೂಡ ನೀಡಬೇಕು. ಟೆಸ್ಟ್ ಪಾಸ್ ಆಗುವುದು ಮಾತ್ರ ಸಾಲದು; ತಾನು ದೃಶ್ಯ ಪುರಾವೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇನೆ ಎಂದು AI ಸಾಬೀತುಪಡಿಸಬೇಕು.
ಯಾರಿಗೆ ಇದರಿಂದ ಲಾಭವಾಗಲಿದೆ?
ಕೋಡ್ ಜನರೇಷನ್ಗಾಗಿ ಈಗಾಗಲೇ AI ಅಸಿಸ್ಟೆಂಟ್ಗಳನ್ನು ಅವಲಂಬಿಸಿರುವ ಡೆವಲಪರ್ಗಳು ಈಗ ಅಂತಹ ಅಸಿಸ್ಟೆಂಟ್ಗಳಿಗೆ ಹೆಚ್ಚು ಸಮಗ್ರವಾದ ಡಿಬಗ್ಗಿಂಗ್ ಸೌಲಭ್ಯವನ್ನು ನೀಡಬಹುದು. ಫ್ಲೇಕಿ (flaky) ಟೆಸ್ಟ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ವ್ಯಯಿಸುವ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು ಇದರ ನಿರೀಕ್ಷಿತ ಪ್ರಯೋಜನವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಎಂಡ್-ಟು-ಎಂಡ್ (end-to-end) ಸೂಟ್ಗಳಲ್ಲಿ ವೈಫಲ್ಯವನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಪುನರಾವರ್ತಿಸುವುದು ಕಷ್ಟವಾಗಬಹುದು. tap ಅನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವ ತಂಡಗಳು UI ಘಟಕಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ಗಳಲ್ಲಿ (pull requests) ವೇಗವಾದ ಪರಿಹಾರವನ್ನು ಪಡೆಯಬಹುದು ಮತ್ತು ಪದೇ ಪದೇ ಡಿಬಗ್ಗಿಂಗ್ ಸೆಷನ್ಗಳ ಅಗತ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
ಅಪಾಯಗಳು ಮತ್ತು ಮಿತಿಗಳು
Tap ಇನ್ನೂ ಬೀಟಾ ಹಂತದಲ್ಲಿದೆ, ಅಂದರೆ ಇದರಲ್ಲಿ ಬಗ್ಗಳಿರಬಹುದು, ಕಮಾಂಡ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಬದಲಾಗಬಹುದು ಅಥವಾ ಯಾವುದೇ ಸೂಚನೆ ಇಲ್ಲದೆ ಕೆಲವು ಕಾನ್ಫಿಗರೇಶನ್ಗಳ ಬೆಂಬಲವನ್ನು ಕೈಬಿಡಬಹುದು. ಇದು ಓಪನ್ UI ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುವುದರಿಂದ ಹೆಡ್ಲೆಸ್ CI ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಇದು ಒಳಗೊಳ್ಳುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಸ್ವಯಂಚಾಲಿತ ಬಿಲ್ಡ್ಗಳಿಗಾಗಿ ತಂಡಗಳು ಪ್ರತ್ಯೇಕ ಕಾರ್ಯತಂತ್ರವನ್ನು ಹೊಂದಿರಬೇಕಾಗುತ್ತದೆ. ಈ ಫೀಚರ್ ಲೈವ್ DOM ಡೇಟಾವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುವುದರಿಂದ, ದೊಡ್ಡ ಸ್ಪೆಕ್ಗಳ ವೇಗವನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಸಣ್ಣ ಮಟ್ಟದ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಓವರ್ಹೆಡ್ (performance overhead) ಇರುತ್ತದೆ. ಅಂತಿಮವಾಗಿ, ಸುರಕ್ಷತಾ ನೀತಿಯು AI ಗಡುವನ್ನು ಪಾಲಿಸುತ್ತದೆ ಮತ್ತು ಒಂದೇ ಬದಲಾವಣೆಯ ನಂತರ ನಿಲ್ಲಿಸುತ್ತದೆ ಎಂದು ಭಾವಿಸುತ್ತದೆ; ಸರಿಯಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸದ ಏಜೆಂಟ್ ಇನ್ನೂ ಅಂತ್ಯವಿಲ್ಲದ ಲೂಪ್ಗೆ ಸಿಲುಕಬಹುದು ಅಥವಾ ತಪ್ಪಾದ ಪರಿಹಾರವನ್ನು ಅನ್ವಯಿಸಬಹುದು.
ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು
- ಬೆಟಾ ಫೀಡ್ಬ್ಯಾಕ್ ಚಕ್ರಗಳು – ಆರಂಭಿಕ ಬಳಕೆದಾರರ ಪ್ರತಿಕ್ರಿಯೆಯ ಆಧಾರದ ಮೇಲೆ Cypress ಬಹುಶಃ JSON schema ಅನ್ನು ಪರಿಷ್ಕರಿಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚು ಸೂಕ್ಷ್ಮವಾದ (granular) ಕಮಾಂಡ್ಗಳನ್ನು ಸೇರಿಸಬಹುದು.
- CI ನೊಂದಿಗೆ ಏಕೀಕರಣ – tap ನ open-mode ಅಗತ್ಯವನ್ನು headless runners ನೊಂದಿಗೆ ಜೋಡಿಸುವ ಸಮುದಾಯದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ನಿರೀಕ್ಷಿಸಬಹುದು, ಬಹುಶಃ ಒಂದು ವರ್ಚುವಲ್ ಡಿಸ್ಪ್ಲೇಯನ್ನು ಸೃಷ್ಟಿಸುವ ಮೂಲಕ.
- AI-agent ಪರಿಕರಗಳು – ಕೋಡಿಂಗ್ ಅಸಿಸ್ಟೆಂಟ್ಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತಿರುವ ಮಾರಾಟಗಾರರು tap ಬೆಂಬಲವನ್ನು ಡಿಫಾಲ್ಟ್ ಡಿಬಗ್ಗಿಂಗ್ ಮಾಡ್ಯೂಲ್ ಆಗಿ ಒಟ್ಟಿಗೆ ಸೇರಿಸಲು ಪ್ರಾರಂಭಿಸಬಹುದು, ಇದರಿಂದ ಮುಖ್ಯವಾಹಿನಿಯ IDE ಎಕ್ಸ್ಟೆನ್ಶನ್ಗಳಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯವು ಹೆಚ್ಚು ಗೋಚರಿಸುತ್ತದೆ.
ನೀವು AI-driven ಟೆಸ್ಟ್ ಮೇಂಟೆನೆನ್ಸ್ನಲ್ಲಿ ಪ್ರಯೋಗ ಮಾಡುತ್ತಿದ್ದರೆ, ಒಂದು ಫ್ಲೇಕಿ ಸ್ಪೆಕ್ (flaky spec) ಮೇಲೆ tap ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ ಮತ್ತು ದೃಶ್ಯ ಸಂದರ್ಭವು (visual context) ಡಿಬಗ್ಗಿಂಗ್ ಚಕ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆಯೇ ಎಂದು ಗಮನಿಸಿ. ಈ ಪರಿಕರವು ಮನುಷ್ಯನ ವಿವೇಚನೆಯನ್ನು ಬದಲಾಯಿಸುವುದಿಲ್ಲ, ಆದರೆ ಇದು ನಿಮ್ಮ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ಗೆ ಹಿಂದೆ ಇಲ್ಲದ ಕಣ್ಣುಗಳನ್ನು ನೀಡುತ್ತದೆ.
