paint-brush
REST API Otomatik Testleri için Playwright vs Cypress: Kim Zirveye Çıkıyor?ile@bormando
8,588 okumalar
8,588 okumalar

REST API Otomatik Testleri için Playwright vs Cypress: Kim Zirveye Çıkıyor?

ile Dmitrii Bormotov3m2023/09/05
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Cypress, kullanıcı arayüzü ve API test kapsamı olmak üzere çift amaçlı bir test otomasyon çerçevesidir. Oyun Yazarının da amacı aynı, ancak kutudan herhangi bir tarayıcı çıkmıyor; bunları ayrı bir komutla yüklemeniz gerekiyor (eğer isterseniz). Hafif ve en hızlı araç söz konusu olduğunda, kurulumu daha az zaman aldığından ve API testine gerek olmadığından tarayıcıların çalışması için ek kaynak tüketmediğinden kesinlikle Playwright olacaktır.
featured image - REST API Otomatik Testleri için Playwright vs Cypress: Kim Zirveye Çıkıyor?
Dmitrii Bormotov HackerNoon profile picture

Herkese merhaba!


Kullanıcı arayüzü ve API test kapsamı olmak üzere çift amaçlı test otomasyon çerçevelerine her zaman şüpheyle baktım. Genellikle farklı test çalıştırmalarında (veya etkinlik projelerinde) farklı test katmanları çalıştırırsınız çünkü bunların her birinin muhtemelen kendine ait bir özelliği vardır. bağımlılıklar , konfigürasyon, Ve Ortam Değişkenleri .


Son zamanlarda Playwright'ın API testi açısından neler sunabileceğine bir göz attım ve bunu Cypress deneyimim ile karşılaştırdım, işte sizinle paylaşmam gerekenler:

Selvi

Cypress bir süre önce API testini mümkün kıldı. Öğrenme portalında bu aracın API testi açısından ne kadar harika olduğunu örneklerle anlatan bir makale bulabilirsiniz.

Kurulum Performansı

Testleri çalıştırmak için proje bağımlılıklarınızı yüklemeniz gerekiyor, değil mi? Cypress bir elektron tarayıcıyla birlikte gelir ve yalnızca API testleri çalıştırmak istiyorsanız kurulumu oldukça gereksiz (ve zaman alıcı) olabilir (diyelim ki UI ve API test çalıştırmaları için CI'da ayrı işleriniz var, bu genellikle böyledir).


Selvi temiz kurulum süresi


İyi görünmüyor, değil mi? ☝️


Ayrıca, API testlerini çalıştırdığınızda yine de bir tarayıcı başlatılır.


Cypress, API özelliklerine göre tarayıcı oturumunu çalıştırıyor


Tarayıcıdaki API testleri spesifikasyonunun kaydı

Test Örneği

Cypress ile basit bir API testi şöyle görünecektir:


 it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) })


Oldukça basit ve anlaşılır görünüyor, değil mi? Burada bunun genel bir Cypress sözdizimi olduğunu, yani her çıktıyı değişkene yazmak yerine ( bazı ayarlamalarla mümkün olsa da) zincirleme şeyler olduğunu söylemek önemlidir.

Oyun yazarı

Tıpkı Cypress gibi, Playwright da bir test otomasyon çerçevesidir; yalnızca bir tarayıcı otomasyon aracını veya tüm çerçeveyi (test çalıştırıcısı, iddia kitaplığı, tarayıcı otomasyon aracı, HTTP istemcisi, raporlayıcı vb.) kullanabilirsiniz.

Kurulum Performansı

Buradaki fark, Playwright'ın kutudan herhangi bir tarayıcıyla çıkmamasıdır; bunları ayrı bir komutla yüklemeniz gerekir (eğer isterseniz).


Oyun yazarı temiz kurulum süresi


Burada büyük bir fark yaratıyor, çünkü yalnızca API testlerini çalıştırma açısından herhangi bir tarayıcıyı veya başka bir masaüstü uygulamasını çalıştırmayacak ve makinenizde çalışma süresinden ve kaynaklardan bir miktar tasarruf sağlamayacak.

Test Örneği

Playwright ile basit bir API testi şöyle görünecektir:


 import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) })


Nesneleri öne süren Jest benzeri bir sözdizimini vurgulamak istiyorum:


 expect(await response.json()).toEqual({ token: expect.any(String), })


Bu sözdizimi, nesnenin tüm yapısını tek bir expect çağrısıyla doğrulamanıza olanak tanır ☝️

Çözüm

Çalıştırılması için çok fazla şey gerektirmediğinden API testlerinin küçük ve hafif olması gerekir.


Yukarıdaki materyali özetleyelim…

Kurulum Performansı

Oyun yazarı , kutudan 13 kat daha hızlı temiz kurulumla kazanır.


ℹ️ Önceden yüklenmiş bağımlılıklara sahip bir görüntü kullanırsanız veya bunları CI depolama alanınızda önbelleğe alırsanız CI'da Cypress kurulum süresini azaltabilirsiniz.

Performansı Çalıştır

Oyun yazarı, API testlerini çalıştırmak için bir tarayıcıya ihtiyaç duymadığı için kazanır, dolayısıyla doğrudan konuya girer.


ℹ️ Çerçevenin mantığının bir parçası olduğundan, API testlerinde tarayıcıyı "çalıştırmamanın" hiçbir yolu yoktur.

Test Söz Dizimi

Burada bir kazanan seçemiyorum çünkü ne Cypress ne de Oyun Yazarı için nesnel bir avantaj yok.


İkisinin de ufak farklarla oldukça basit bir sözdizimi var. Burada neyi beğendiklerini seçmenin testçinin kararı olduğunu söyleyebilirim.

Etraflı

Performansı nedeniyle Playwright'ı API test otomasyonu için kullanmanın yeterince güvenli olduğunu kesinlikle söyleyebilirim. Bu çerçeveyle zaten kullanıcı arayüzü testleriniz varsa bu adil bir çözüm olacaktır.


Kullanıcı arayüzü testleri için Cypress kullanan ve API katmanını kapsamak isteyenlere tavsiyem; başka bir şey kullanmaları daha iyi olur ( Jest + Axios , orada bir örnek görebilirsiniz).