Cypress'i yüklemek için proje dizininizde aşağıdaki komutu çalıştırın:
npm install cypress --save-dev
Cypress Test Runner'ı açmak için:
npx cypress open
cypress/integration
klasöründe .spec.js
uzantılı yeni bir dosya oluşturun:
touch cypress/integration/ilk_testim.spec.js
cy.visit('https://ornek.com')
cy.get('button').click()
cy.get('input[name="kullaniciadi"]').type('testkullanici')
cy.get('input[name="kullaniciadi"]').clear()
cy.get('form').submit()
cy.get('#elementIdim')
cy.get('.sinifAdim')
cy.get('button')
cy.get('[data-test="gonder-butonu"]')
cy.get('form').find('input[type="email"]')
cy.get('h1').should('have.text', 'Hoş Geldiniz')
cy.get('.hata').should('not.be.visible')
cy.get('input').should('have.value', 'Merhaba')
cy.get('button')
.should('be.visible')
.and('have.text', 'Gönder')
.and('not.be.disabled')
cy.get('body').then(($body) => {
expect($body).to.contain('Merhaba, Dünya!')
})
cy.get('button', { timeout: 10000 }).should('be.visible')
cy.intercept('GET', '/api/kullanicilar').as('kullanicilariAl')
cy.wait('@kullanicilariAl')
cy.get('button').should('be.enabled')
cy.fixture('kullanicilar.json').then((kullanicilar) => {
cy.get('input[name="kullaniciadi"]').type(kullanicilar[0].kullaniciadi)
})
cypress/support/commands.js
içinde:
Cypress.Commands.add('girisYap', (email, sifre) => {
cy.visit('/giris')
cy.get('#email').type(email)
cy.get('#sifre').type(sifre)
cy.get('form').submit()
})
Özel komutu kullanma:
cy.girisYap('kullanici@ornek.com', 'sifre123')
cy.pause()
cy.log('Bu bir hata ayıklama mesajıdır')
cy.get('button').then(($el) => {
debugger
// Tarayıcı burada duraklar, $el'i incelemenize izin verir
})
Test seçicileri için data-* özelliklerini kullanın
<button data-test="gonder-butonu">Gönder</button>
cy.get('[data-test="gonder-butonu"]')
Rastgele zaman değerleriyle cy.wait() kullanmaktan kaçının Bunun yerine:
cy.wait(5000)
Bunu kullanın:
cy.get('beklenecek-element', { timeout: 5000 }).should('be.visible')
Ağ isteklerini sahte yanıtlarla test etmek için cy.intercept() kullanın
cy.intercept('GET', '/api/kullanicilar', { fixture: 'kullanicilar.json' })
İlgili testleri describe() ve context() kullanarak gruplandırın
describe('Kullanıcı Kimlik Doğrulaması', () => {
context('Geçerli Kimlik Bilgileri', () => {
it('başarıyla giriş yapmalı', () => {
// Test kodu buraya
})
})
context('Geçersiz Kimlik Bilgileri', () => {
it('bir hata mesajı göstermeli', () => {
// Test kodu buraya
})
})
})
Kurulum için before() ve beforeEach() kancalarını kullanın
beforeEach(() => {
cy.visit('/')
cy.girisYap('testkullanici', 'sifre123')
})
Testler arasında durum paylaşımından kaçının Global değişkenler yerine, kapsamalar veya Cypress takma adlarını kullanın:
it('bir kullanıcı oluşturur ve doğrular', () => {
let kullaniciId
cy.request('POST', '/api/kullanicilar', { ad: 'Ahmet Yılmaz' })
.then((yanit) => {
kullaniciId = yanit.body.id
cy.wrap(kullaniciId).as('kullaniciId')
})
cy.get('@kullaniciId').then((kullaniciId) => {
cy.visit(`/kullanicilar/${kullaniciId}`)
cy.get('h1').should('contain', 'Ahmet Yılmaz')
})
})
Yükleme durumlarını test etmek için cy.intercept() kullanın
cy.intercept('GET', '/api/yavas-endpoint', (req) => {
req.on('response', (res) => {
res.setDelay(2000)
})
}).as('yavasIstek')
cy.visit('/yavas-istekli-sayfa')
cy.get('#yukleme-gostergesi').should('be.visible')
cy.wait('@yavasIstek')
cy.get('#yukleme-gostergesi').should('not.exist')
Hassas veriler için ortam değişkenlerini kullanın
cypress.json
içinde:
{
"env": {
"api_anahtari": "CYPRESS_API_ANAHTARI"
}
}
Testinizde:
cy.request({
url: '/api/korunmus-endpoint',
headers: {
'Authorization': `Bearer ${Cypress.env('api_anahtari')}`
}
})
2024 © Tüm hakları saklıdır - buraxta.com