Cypress Proje Yapısı ve Temel Komutlar

Cypress, modern web uygulamaları için uçtan uca (E2E) testlerin kolayca yazılmasını sağlayan güçlü bir test otomasyon framework’üdür. Proje yapısı belirli klasörler üzerinden organize edilmiştir:
e2e/
Tüm test dosyalarının yer aldığı klasördür. Çalıştırılmak istenen testler bu dizin altında tanımlanmalıdır.fixtures/
Test senaryolarında ihtiyaç duyulan mock veriler bu klasör altında.json
formatında tutulur. Örneğin, kullanıcı bilgileri veya API yanıtları buradan yüklenebilir.support/
commands.js
: Özel komutların (custom commands) tanımlandığı dosyadır. Tekrarlayan adımlar burada tanımlanarak testlerde yeniden kullanılabilir.e2e.js
: Projede kullanılacak plugin’lerin veya global ayarların yüklendiği dosyadır.
Cypress Test Runner Kullanımı
Testleri çalıştırmak için terminalde aşağıdaki komut kullanılabilir:
npx cypress open
Bu komut ile Cypress Test Runner arayüzü açılır ve tanımlı testler seçilerek çalıştırılabilir.
Temel Cypress Komutları
cy.visit()
Bir URL’e yönlendirme yapmak için kullanılır.
Örnek Kullanımlar:
describe('Temel Komutlar - cy.visit', () => {
it('URL ziyaret etme örnekleri', () => {
cy.visit("/") // baseUrl tanımlandıysa
cy.visit("/commands") // baseUrl üzerinden path kullanımı
cy.visit("https://example.cypress.io/") // baseUrl tanımlanmadıysa
cy.visit({
url: "https://example.cypress.io/",
method: 'GET'
})
});
});
cy.title()
Sayfa başlığını doğrulamak için kullanılır.
Örnek Kullanımlar:
describe('Temel Komutlar - cy.title', () => {
it('Sayfa başlığı doğrulama', () => {
cy.visit("https://example.cypress.io/")
cy.title().should('eq', "cypress.io") // Başlık birebir eşitlik
cy.title().should('include', "cypress") // Başlık içerisinde geçiyorsa
cy.title().should('contain', "cypress") // Başlık kısmında geçiyorsa
});
});
Test Yapısı
describe
: Test grubunu tanımlamak için kullanılır. (Test senaryoları mantıksal olarak gruplanır.)it
: Test adımlarını barındıran asıl bloktur. Herit
bloğu bağımsız bir testtir.
Örneğin:
describe('Login Senaryosu', () => {
it('Geçerli kullanıcı ile giriş yapılabilmeli', () => {
cy.visit("/login")
cy.get('#username').type('testUser')
cy.get('#password').type('Password123')
cy.get('button[type=submit]').click()
cy.url().should('include', '/dashboard')
});
});
Subscribe to my newsletter
Read articles from Şeyma Nur Aksoy directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
