🕐 Zaman Yolculuğu & Retry-ability
Zaman Yolculuğu & Retry-ability: Cypress'in en sevilen özelliği "time travel debugging"dir: her komuttan sonra arka planda bir DOM anlık görüntüsü saklanır.
Cypress'in en sevilen özelliği "time travel debugging"dir: her komuttan sonra arka planda bir DOM anlık görüntüsü saklanır. Test bittikten (ya da hata verdikten) sonra Command Log'daki herhangi bir geçmiş satıra tıklayarak, uygulamanın O ANKI haliyle nasıl göründüğünü tekrar görebilirsin — sayfayı yeniden çalıştırmana ya da debug modunu açmana gerek kalmaz.
Cypress Time Travel — Canlı Demo
▶ Run'a bas, testin adım adım çalıştığını izle. Bittikten sonra soldaki komut listesinden GEÇMİŞE tıkla — sağdaki ekran o anki DOM'u gösterecek. Bu, Selenium'da hiç olmayan bir debugging süper gücüdür.
🎬 Her Komuttan Sonra Bir Fotoğraf: Time Travel Debugging
Command Log Tıklaması
Selenium: Yakalanmamış An
Bir test 3 komuttan oluşuyor. Selenium'da bu komutlar çalışıp geçer, geriye sadece son durum kalır. Cypress'te ise HER komut arkasında görünmez bir "fotoğraf makinesi" çalıştırır. Bu filmde o makineyi izleyeceksin.
Adım 1 — cy.visit() çalışır çalışmaz, Cypress o anki DOM'un TAM bir anlık görüntüsünü (snapshot) alıp Command Log'daki bu satıra bağlar. Bu, sen hiçbir şey istemeden otomatik olur.
Adım 2 — cy.get().type() ve cy.get().click() da aynısını yapar: her biri kendi anlık görüntüsünü depoya ekler. Artık 3 komut için 3 ayrı "zaman kapsülü" var.
Adım 3 — test bittikten SONRA (ya da hata verdikten sonra), Command Log'da 2. komuta (type) tıklarsın. Cypress yeniden test ÇALIŞTIRMAZ — depodaki o anki snapshot'ı doğrudan ekrana geri yükler.
Kontrast sahnesi — Selenium'da bu "geçmişe dönme" özelliği yoktur: eğer o anki DOM durumunu görmek istiyorsan, testi YAZARKEN önceden driver.getScreenshotAs(...) çağrısı eklemiş olman gerekirdi. Beklemediğin bir yerde test kırılırsa, o anın kanıtı SONSUZA kadar kaybolur.
Sonuç: bu yüzden CI'da fail eden bir Cypress testinde saatlerce log okumak yerine, tam olarak hangi komutta hangi elementin ne gösterdiğini bir tıkla görebilirsin — flaky test analizini dakikalara indiren asıl özellik budur.
Kendin Yaz ve Dene: cy.wait(sayı) Yerine Retry-able Assertion
TODO satırını, sayacın metninin "3" olmasını bekleyen bir cy.get(...).should(...) zinciriyle tamamla.