Cypress, yapay zeka destekli kodlama ajanlarının canlı bir Cypress test oturumuna bağlanmasına, DOM anlık görüntülerini ve komut günlüklerini çekmesine ve bu görsel bilgiyi hataları teşhis etmek için kullanmasına olanak tanıyan tap adlı bir beta özelliği yayınladı. Araç yalnızca Cypress 15.21.0 veya daha yeni bir sürümle, Chromium tabanlı bir tarayıcıyla ve "cypress open" arayüzüyle çalışır; headless modda çalışmaz.
Yapay zeka ajanlarının neden bir çıkış kodundan fazlasına ihtiyacı var
Çoğu yapay zeka kodlama asistanı, bir Cypress çalıştırmasını diğer komut satırı araçları gibi ele alır: npx cypress run komutunu çalıştırır, işlemin çıkış durumunu okur ve testin geçip geçmediğine karar verir. Bir çıkış kodu ajana bir şeylerin yanlış gittiğini söyler ancak bir seçicinin (selector) yanlış yazılıp yazılmadığı, bir sayfanın yüklenemediği veya bir katmanın (overlay) bir düğmeyi engelleyip engellemediği konusunda hiçbir ipucu sunmaz. İnsanlar ise tam tersine, bir hipotez oluşturmadan önce Cypress arayüzünü açar, tarayıcıyı izler, DOM ağacını inceler ve komut günlüğünü okur.
Bu boşluk, otomatik hata ayıklama (debugging) sürecini kırılgan hale getirir. "Element bulunamadı" hatası düzinelerce kök nedenden kaynaklanabilir ve görsel kanıt olmadan bir yapay zeka aynı düzeltmeyi denemeye devam ederek sonsuz bir döngüye girebilir.
tap bu boşluğu nasıl kapatıyor
Tap, çalışan bir Cypress örneği için terminal tabanlı bir arayüz oluşturur. Geliştirici Cypress'i "open" modunda başlattığında:
npx cypress open --e2e --browser=chrome
ajan, ayrı bir kabuktan (shell) bir dizi JSON çıktı komutu verebilir:
npx cypress tap specs --json– mevcut spec dosyalarını listeler.npx cypress tap run <spec> --json– tek bir spec çalıştırmasını başlatır.npx cypress tap status --json– zaman damgaları dahil olmak üzere mevcut çalıştırmanın durumunu döndürür.
Durum verisi (payload) bir startedAt zaman damgası içerdiğinden, ajan daha önce bitmiş eski bir çalıştırma yerine taze sonuçlara baktığını doğrulayabilir. Sadece ham çıkış koduna güvenmek artık yeterli değildir.
Bir test başarısız olduğunda, ajan daha derinlemesine inceleme yapabilir:
npx cypress tap reporter --json– genel test raporunu getirir.npx cypress tap command --test-id <ID> --command-id <ID> --json– hata veren tam komutu, uygulamanın o andaki DOM anlık görüntüsü, ARIA ağacı ve ilgili tüm öğe nitelikleriyle birlikte çeker.
Bu anlık görüntüye sahip olan yapay zeka; seçicinin neden kaçırdığı, sayfanın hala yüklenip yüklenmediği veya bir modalın hedefi kapatıp kapatmadığı konusunda mantık yürütebilir. Ardından bir kod değişikliği önerebilir, bunu uygulayabilir ve düzeltmeyi doğrulamak için aynı spec'i yeniden çalıştırabilir.
Otonom ajanlar için bir güvenlik politikası
Döngünün sonsuza kadar sürmesini engellemek için Cypress ekibi disiplinli bir iş akışı öneriyor:
- Sadece tek bir belirli spec dosyasını çalıştırın.
tap statuskomutunu katı bir son teslim tarihiyle sorgulayın (poll);startedAtdeğeri son sorgudan daha eski olan sonuçları görmezden gelin.- Yalnızca başarısız olan testi ve hatalı komutu inceleyin.
- Bir sonraki çalıştırmadan önce yalnızca tek bir kod değişikliğine izin verin.
- Spec'i yeniden çalıştırın.
- Sonuç değişirse durun ve inceleme için bir insana bildirin.
Ajan ayrıca ne gözlemlediğine ve önerilen düzeltmenin neden işe yarayacağına dair doğal dilde bir açıklama oluşturmalıdır. Testi geçmek yeterli değildir; yapay zeka görsel kanıtları anladığını kanıtlamalıdır.
Kimler fayda sağlayacak
Kod üretimi için halihazırda yapay zeka asistanlarına güvenen geliştiriciler, artık bu asistanlara daha zengin bir hata ayıklama alanı sunabilirler. Beklenen fayda, özellikle bir hatayı manuel olarak yeniden üretmenin dakikalar alabileceği büyük uçtan uca (end-to-end) test paketlerinde, kararsız (flaky) testlerin peşinden koşmak için harcanan sürenin azalmasıdır. tap kullanan ekipler, UI bileşenlerine dokunan pull request'lerde daha hızlı dönüş süresi ve karşılıklı hata ayıklama oturumlarına olan ihtiyacın azalmasını görebilirler.
Riskler ve sınırlamalar
Tap hala beta aşamasındadır; bu da hatalar içerebileceği, komut sözdizimini değiştirebileceği veya belirli yapılandırmalar için desteği haber vermeksizin kesebileceği anlamına gelir. Açık (open) arayüze olan bağımlılığı, headless CI süreçlerini kapsam dışı bırakır, bu nedenle ekiplerin otomatik derlemeler için ayrı bir stratejiye ihtiyacı olacaktır. Özellik canlı DOM verilerini aktardığı için, büyük spec'leri yavaşlatabilecek düşük bir performans yükü (overhead) söz konusudur. Son olarak, güvenlik politikası yapay zekanın son teslim tarihlerine uyabileceğini ve tek bir değişiklikten sonra durabileceğini varsayar; kötü tasarlanmış bir ajan hala sonsuz bir döngüye girebilir veya yanlış bir düzeltme uygulayabilir.
Sırada ne var
- Beta geri bildirim döngüleri – Cypress muhtemelen JSON şemasını geliştirecek ve erken benimseyenlerin geri bildirimlerine dayanarak daha ayrıntılı komutlar ekleyecektir.
- CI ile entegrasyon – Belki de sanal bir ekran başlatarak, tap'in açık mod (open-mode) gereksinimini headless çalıştırıcılarla (headless runners) birleştiren topluluk betikleri bekleyebilirsiniz.
- Yapay zeka ajanı araçları – Kodlama asistanları geliştiren sağlayıcılar, tap desteğini varsayılan bir hata ayıklama modülü olarak paketlemeye başlayabilir ve bu da özelliğin ana akım IDE eklentilerinde daha görünür olmasını sağlar.
Eğer yapay zeka destekli test bakımı konusunda deneyler yapıyorsanız, tek bir kararsız (flaky) spec üzerinde tap'i deneyin ve görsel bağlamın hata ayıklama döngüsünü kısaltıp kısaltmadığını görün. Araç, bir insanın muhakemesinin yerini almayacaktır ancak kodlama ajanı için daha önce sahip olmadığı bir çift göz sağlayacaktır.
