🔗 Variables, Aliases & Test Isolation
Variables, Aliases & Test Isolation: Cypress komutları asenkron çalıştığı için bir komutun sonucunu doğrudan bir değişkene atayamazsın — tıpkı bir fabrika bandının ortasından ürü
Cypress komutları asenkron çalıştığı için bir komutun sonucunu doğrudan bir değişkene atayamazsın — tıpkı bir fabrika bandının ortasından ürünü kapıp yan masaya koymaya çalışmak gibi: bant dönerken üretim devam eder, elini uzattığında ürün zaten orada değildir. Peki o zaman bir komutun sonucuna nasıl güvenli erişirsin? .as('siparisId') komutu, o sonucu adlandırılmış bir rafın üzerine koyar; cy.get('@siparisId') ise doğru anda o raftan alır — zincirin sonuna kadar bant durmak zorunda kalmaz. Java'da CompletableFuture'dan bir değer almak için thenApply() kullanırsın, doğrudan .get() çağırmak bloklama riski taşır; .as()/.get('@') çifti de tam bu mantıkla çalışır: Cypress ne zaman hazır olduğunu bilir, sen sadece adı söylersin. Test Isolation ise bu resmin arka planıdır: cookie, localStorage ve oturum bilgileri testler arasında sızmaya başlarsa bir testin yarattığı alias bir sonrakini kirletir, PASS gözüken test aslında önceki testin bıraktığı state'e yaslanıyor olabilir — CI'da sırasız çalışmaya geçtiğinde tüm suite çöker.
Cypress komutları asenkrondur, bu yüzden bir komutun sonucunu doğrudan bir değişkene atayamazsın (const email = cy.get(...) ÇALIŞMAZ, çünkü cy.get() henüz bir değer değil bir komut nesnesi döndürür). Sonuca ulaşmak için ya .then() içindeki closure'ı ya da .as() ile oluşturulan alias'ı kullanırsın.
.then() ile closure — bir kerelik erişim
Micro Lab: Cypress — Assertion yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Adim Adim: Cypress — Assertion yazma
Neyi dogrulayacagini belirle: gorunurluk / metin / CSS / attribute
.should("be.visible") ile elementin gorunur oldugunu dogrula
.should("contain.text", "Giris Basarili") ile metin içeriğini kontrol et
.should("have.attr", "disabled") veya "href" ile attribute dogrula
Test fail ettiginde Cypress hata mesajini oku: expected X to ... but got Y
Cypress assertion yazma ve dogrulama sirasi nedir?
.as() ile alias — tekrar kullanılabilir referans
Micro Lab: Cypress — API Intercept