🌲 Cypress — Modern Uçtan Uca Test Otomasyonu

Cypress, JavaScript ve TypeScript ile yazılan, test kodunu tarayıcının kendi içinde çalıştıran açık kaynaklı bir uçtan uca test otomasyon aracıdır. Selenium'un aksine ayrı bir WebDriver süreci kullanmaz; bu sayede komutlar arasında otomatik retry-ability sağlar ve testin her adımını zaman içinde geri sararak (time-travel) izlemene izin verir. En yaygın kullanım alanı, modern JavaScript tabanlı web uygulamalarının hem uçtan uca hem de component seviyesinde test edilmesidir.

Cypress ile end-to-end test yazmayı öğren: JavaScript örnekleri, time-travel debugging, network stubbing, custom command ve mülakat soruları.

Cypress, test kodunu tarayıcının içinde çalıştıran, time-travel debugging ve otomatik retry-ability sunan modern bir E2E test framework'üdür. Network stubbing, component testing ve gerçek zamanlı görsel geri bildirimle QA mühendislerinin en sevdiği araçlardan biridir.

Bu sayfada neler öğreneceksin

  • 🌲 Cypress Nedir? Mimari ve Felsefe — Cypress, tarayıcıyla aynı süreçte çalışır — tıpkı bir cerrahın ameliyat sahasına dışarıdan talimat vermek yerine elleriyle doğrudan müdahale etmesi gibi: her kesim anlık, her tepki gerçek zamanlı, araya hiçbir gecikme girmiyor. Peki Selenium zaten onlarca yıld
  • ⚙️ Kurulum (Installation) — Cypress, npm üzerinden kurulan ve hem GUI (Test Runner) hem de CLI (headless) modunda çalışabilen bir araçtır. Kurulum tek bir paket yüklemekten ibarettir — Java'daki gibi ayrı bir driver indirme (ChromeDriver, geckodriver) derdi yoktur, Cypress kendi tarayıcı
  • 🖱️ Temel Komutlar & Selector Stratejisi — Cypress'te her komut cy ile başlar ve bir Promise benzeri ama "chainable" (zincirlenebilir) nesne döndürür. cy.visit() sayfaya gider, cy.get() CSS selector ile element bulur, cy.contains() ise görünür metne göre arar. Bu komutlar senkron gibi YAZILIR
  • 🧩 Aksiyonlar, Form ve Drag & Drop — cy.type(), cy.click(), cy.check(), cy.uncheck() ve cy.select() temel form aksiyonlarıdır. Hepsi retry-ability'lidir: element görünür, etkin (disabled değil) ve "actionable" (başka bir element tarafından örtülmemiş) olana kadar otomatik bekler. Eğer b
  • 🕐 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. Test bittikten (ya da hata verdikten) sonra Command Log'daki herhangi bir geçmiş satıra tıklayarak, uygulamanın O ANKI haliyle
  • 🌐 Network & cy.intercept() — cy.intercept() (eski adıyla cy.route(), v6'dan beri kullanılmıyor), Cypress'in network katmanını yakalama API'sidir. Üç moda göre kullanılabilir: gerçek isteği "stub" ederek sahte veriyle değiştirmek, isteği değiştirmeden sadece "spy" olara
  • 🗂️ Test Yazma & Organizasyon — describe() ve it() bloklarının yapısını bir hukuki belge hiyerarşisi gibi düşün: describe() dava dosyasının başlığıdır (davranış kapsamını tanımlar), it() ise tek bir iddia — mahkemede "sanık X tarihinde Y yaptı" gibi, kesin ve bağımsız, diğer iddial
  • 🏗️ Framework Mimarisi (SOLID + POM) — Selenium ve Playwright'ta bu noktada bir "Page Object Model" sınıfı yazardın — Cypress'in resmi dokümantasyonu ise bunu TAM TERSİNE önerir: klasik POM sınıfları yerine "Custom Commands" ve "App Actions" kullanmayı tavsiye eder. Ne

Sık Sorulan Sorular

Cypress nedir?

Cypress, JavaScript ve TypeScript ile yazılan, test kodunu tarayıcının kendi içinde çalıştıran açık kaynaklı bir uçtan uca test otomasyon aracıdır. Ayrı bir WebDriver süreci kullanmaz.

Cypress ile Selenium arasındaki fark nedir?

Cypress testi tarayıcının içinde çalıştırır ve otomatik retry-ability sağlar; Selenium ise tarayıcıyı dışarıdan, ayrı bir WebDriver süreciyle kontrol eder. Bu yüzden Cypress çoklu sekme/pencere testinde Selenium kadar esnek değildir.

Cypress öğrenmek ne kadar sürer?

Temel komutları ve `cy.intercept()` kullanımını birkaç günde öğrenebilirsin. Custom command yazımı ve framework mimarisi dahil mülakat seviyesine gelmek genelde 3-4 hafta düzenli pratik gerektirir.

Cypress ücretsiz mi?

Cypress'in test çalıştırma çekirdeği tamamen ücretsiz ve açık kaynaklıdır. Cypress Cloud gibi ekstra raporlama/paralel koşum hizmetleri ücretlidir ama testleri yazıp yerelde/CI'da koşmak için ödeme gerekmez.

Cypress hangi dilleri destekler?

Cypress yalnızca JavaScript ve TypeScript ile yazılır — Selenium veya Playwright'ın aksine Java/Python/C# desteği yoktur.

En sık karşılaşılan Cypress hatası nedir?

"cy.get() timed out" — cy.get() ile bulunmaya çalışılan element retry süresi (varsayılan 4 saniye) içinde bulunamadığında oluşur. Çoğunlukla yanlış selector veya elementin gerçekten hiç render olmamasından kaynaklanır.