💼 50 Mülakat Sorusu

50 Mülakat Sorusu: Bir mülakatta Cypress bilgisi iki kademede ölçülür: önce "ne olduğunu" bilip bilmediğin, sonra "neden öyle tasarlandığını" açıklayıp açıklayamadığın.

Bir mülakatta Cypress bilgisi iki kademede ölçülür: önce "ne olduğunu" bilip bilmediğin, sonra "neden öyle tasarlandığını" açıklayıp açıklayamadığın. cy.intercept() nedir Basic'tir; ama "production'da bir servis %5 oranında 500 döndürüyor, bunu CI'da stabil tutmak için nasıl bir strateji kurarsın?" Advanced'tir — tıpkı Java'da Mockito'yu öğrenmek ile onu gerçek bir regression suite'ine entegre etmenin farklı şeyler olması gibi. Peki bu iki seviye arasındaki mesafeyi geçmek için ne gerekiyor? Temeli eksik geçmek Advanced'de birinci detaylı soruyla tökezlemeye neden olur; bu 50 soru o köprüyü adım adım kurar: Basic sorular temeli sağlamlaştırmak, Intermediate sorular gerçek iş senaryolarını (flaky test, race condition, test isolation çöküşü) çözmek, Advanced sorular ise CI pipeline tasarımı ve mimari tercihleri tartışmak için hazırlar.

🎬 cy.request(): 5 Adımlık UI Login'i 1 HTTP Çağrısına İndirmek

Test (dashboard'ı doğrulayacak)

UI Login Formu (5 adım)

Dashboard (asıl test hedefi)

Asıl test hedefi "dashboard'da doğru istatistikler görünüyor mu?" sorusu — login'in KENDİSİ değil. Peki her testte 5 UI adımıyla login olmak gerçekten şart mı?

Yol 1 (yavaş) — Geleneksel yol: cy.visit('/login') → username yaz → password yaz → submit'e tıkla → yönlendirmeyi bekle. 5 adım, her biri gerçek bir tarayıcı render'ı gerektirir.

Yol 2 (hızlı) — cy.request() tarayıcı UI'sını HİÇ açmadan doğrudan bir HTTP isteği atar: POST /api/login. Sunucu aynı doğrulamayı yapar, ama hiçbir buton render edilmez, hiçbir input'a tıklanmaz.

Sunucu yanıtı bir JWT token içerir — bu token, UI'dan login olsan da API'den login olsan da SUNUCU AÇISINDAN AYNI kimlik doğrulama sonucudur.

Token, window.localStorage.setItem(...) ile doğrudan tarayıcıya yazılır — dashboard sayfası bu token'ı görünce kullanıcının login olduğunu SANIR (çünkü gerçekten öyledir).

Ders (kontrast) — bu kısayolu ne zaman KULLANMAMALISIN? Login akışının KENDİSİNİ test ediyorsan (yanlış şifre mesajı, "beni hatırla" checkbox'ı) — o zaman UI adımlarını ATLAMAK asıl test edilmesi gerekeni gizler. cy.request() sadece login'in bir ÖN KOŞUL olduğu testlerde (dashboard, sepet, profil) doğru kısayoldur.

API-First Login: Ne Zaman Kullan, Ne Zaman Kullanma?

Test hedefi "dashboard'daki veri doğru…

Test hedefi "dashboard'daki veri doğru mu?" ise — login sadece bir ÖN KOŞULDUR, cy.request() ile hızlandır.