Cypress telah merilis fitur beta bernama tap yang memungkinkan agen pengodean berbasis AI untuk terhubung ke sesi pengujian Cypress yang sedang berjalan, mengambil snapshot DOM dan log perintah, serta menggunakan informasi visual tersebut untuk mendiagnosis kegagalan. Alat ini hanya berfungsi dengan Cypress 15.21.0 atau yang lebih baru, browser berbasis Chromium, dan UI “cypress open”; alat ini tidak berjalan dalam mode headless.
Mengapa agen AI membutuhkan lebih dari sekadar exit code
Sebagian besar asisten pengodean AI memperlakukan jalannya Cypress seperti alat baris perintah lainnya: mereka menjalankan npx cypress run, membaca status keluar (exit status) proses tersebut, dan memutuskan apakah pengujian berhasil. Sebuah exit code memberi tahu agen bahwa ada sesuatu yang salah, tetapi tidak memberikan petunjuk apakah sebuah selector salah ketik, halaman gagal dimuat, atau sebuah overlay menghalangi tombol. Sebaliknya, manusia membuka UI Cypress, mengamati browser, memeriksa pohon DOM, dan membaca log perintah sebelum membentuk hipotesis.
Kesenjangan tersebut membuat debugging otomatis menjadi rapuh. “Element not found” dapat berasal dari puluhan penyebab utama, dan tanpa bukti visual, AI mungkin akan terus mencoba perbaikan yang sama, terjebak dalam loop tanpa henti.
Bagaimana tap menutup kesenjangan tersebut
Tap membuat antarmuka berbasis terminal untuk instansi Cypress yang sedang berjalan. Setelah pengembang menjalankan Cypress dalam mode open:
npx cypress open --e2e --browser=chrome
agen dapat mengeluarkan serangkaian perintah output JSON dari shell terpisah:
npx cypress tap specs --json– mencantumkan file spec yang tersedia.npx cypress tap run <spec> --json– memulai satu jalannya spec.npx cypress tap status --json– mengembalikan status jalannya saat ini, termasuk timestamp.
Karena payload status berisi timestamp startedAt, agen dapat memverifikasi bahwa ia sedang melihat hasil terbaru, bukan hasil lama yang sudah selesai sebelumnya. Mengandalkan exit code mentah saja tidak lagi cukup.
Saat pengujian gagal, agen dapat menggali lebih dalam:
npx cypress tap reporter --json– mengambil laporan pengujian secara keseluruhan.npx cypress tap command --test-id <ID> --command-id <ID> --json– mengambil perintah tepat yang mengalami error, bersama dengan snapshot DOM aplikasi, pohon ARIA, dan atribut elemen relevan lainnya pada saat itu.
Dengan bermodalkan snapshot tersebut, AI dapat menalar mengapa selector tidak ditemukan, apakah halaman masih dimuat, atau apakah sebuah modal menutupi target. AI kemudian dapat mengusulkan perubahan kode, menerapkannya, dan menjalankan kembali spec yang sama untuk memverifikasi perbaikan tersebut.
Kebijakan keamanan untuk agen otonom
Untuk mencegah loop berjalan selamanya, tim Cypress menyarankan alur kerja yang disiplin:
- Jalankan hanya satu file spec tertentu.
- Lakukan polling
tap statusdengan tenggat waktu yang ketat, abaikan hasil apa pun yangstartedAt-nya lebih lama dari polling terakhir. - Periksa hanya pengujian yang gagal dan perintah yang bermasalah.
- Izinkan satu modifikasi kode sebelum jalannya berikutnya.
- Jalankan kembali spec tersebut.
- Jika hasilnya berubah, hentikan dan tandai untuk ditinjau oleh manusia.
Agen juga harus menghasilkan penjelasan dalam bahasa alami tentang apa yang diamatinya dan mengapa perbaikan yang diusulkan seharusnya berhasil. Lulus pengujian saja tidak cukup; AI harus menunjukkan bahwa ia memahami bukti visual tersebut.
Siapa yang akan diuntungkan
Pengembang yang sudah mengandalkan asisten AI untuk pembuatan kode kini dapat memberikan permukaan debugging yang lebih kaya kepada asisten tersebut. Manfaat yang diharapkan adalah pengurangan waktu yang dihabiskan untuk mengejar flaky tests, terutama dalam rangkaian end-to-end yang besar di mana mereproduksi kegagalan secara manual dapat memakan waktu beberapa menit. Tim yang mengadopsi tap mungkin akan melihat penyelesaian pull request yang menyentuh komponen UI menjadi lebih cepat, serta berkurangnya kebutuhan untuk sesi debugging bolak-balik.
Risiko dan batasan
Tap masih dalam tahap beta, yang berarti mungkin mengandung bug, mengubah sintaks perintahnya, atau menghentikan dukungan untuk konfigurasi tertentu tanpa pemberitahuan. Ketergantungannya pada UI open mengecualikan pipeline CI headless, sehingga tim akan memerlukan strategi terpisah untuk build otomatis. Karena fitur ini mengalirkan data DOM secara langsung, terdapat sedikit beban performa (overhead) yang dapat memperlambat spec yang besar. Terakhir, kebijakan keamanan mengasumsikan AI dapat mematuhi tenggat waktu dan berhenti setelah satu perubahan; agen yang dirancang dengan buruk masih dapat masuk ke dalam loop tak terbatas atau menerapkan perbaikan yang salah.
Apa yang perlu diperhatikan selanjutnya
- Siklus umpan balik beta – Cypress kemungkinan akan menyempurnakan skema JSON dan menambahkan perintah yang lebih granular berdasarkan masukan dari pengguna awal.
- Integrasi dengan CI – Nantikan skrip komunitas yang menjembatani persyaratan open-mode tap dengan headless runners, mungkin dengan memunculkan tampilan virtual.
- Alat bantu agen AI – Vendor yang membangun asisten pengkodean mungkin mulai menyertakan dukungan tap sebagai modul debugging default, sehingga fitur ini menjadi lebih terlihat di ekstensi IDE arus utama.
Jika Anda sedang bereksperimen dengan pemeliharaan pengujian berbasis AI, cobalah tap pada satu spesifikasi (spec) yang tidak stabil (flaky) dan lihat apakah konteks visual tersebut memperpendek siklus debugging. Alat ini tidak akan menggantikan penilaian manusia, tetapi ia memberikan agen pengkodean Anda sepasang mata yang sebelumnya tidak dimilikinya.
