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. , Ve . bağımlılıklar konfigürasyon, Ortam Değişkenleri Son zamanlarda testi açısından neler sunabileceğine bir göz attım ve bunu deneyimim ile karşılaştırdım, işte sizinle paylaşmam gerekenler: Playwright'ın API Cypress Selvi bir süre önce testini mümkün kıldı. bu aracın testi açısından ne kadar harika olduğunu örneklerle anlatan bir makale bulabilirsiniz. Cypress API Öğrenme portalında API Kurulum Performansı Testleri çalıştırmak için proje bağımlılıklarınızı yüklemeniz gerekiyor, değil mi? birlikte gelir ve yalnızca 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). Cypress bir elektron tarayıcıyla API İyi görünmüyor, değil mi? ☝️ Ayrıca, testlerini çalıştırdığınızda yine de bir tarayıcı başlatılır. API Test Örneği ile basit bir testi şöyle görünecektir: Cypress API 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 sözdizimi olduğunu, yani her çıktıyı değişkene yazmak yerine ( olsa da) olduğunu söylemek önemlidir. Cypress bazı ayarlamalarla mümkün zincirleme şeyler Oyun yazarı Tıpkı gibi, da bir test otomasyon çerçevesidir; veya (test çalıştırıcısı, iddia kitaplığı, tarayıcı otomasyon aracı, HTTP istemcisi, raporlayıcı vb.) kullanabilirsiniz. Cypress Playwright yalnızca bir tarayıcı otomasyon aracını tüm çerçeveyi Kurulum Performansı Buradaki fark, kutudan herhangi bir tarayıcıyla çıkmamasıdır; bunları ayrı bir komutla yüklemeniz gerekir (eğer isterseniz). Playwright'ın Burada büyük bir fark yaratıyor, çünkü yalnızca 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. API Test Örneği ile basit bir testi şöyle görünecektir: Playwright API 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 vurgulamak istiyorum: Jest benzeri bir sözdizimini expect(await response.json()).toEqual({ token: expect.any(String), }) Bu sözdizimi, nesnenin tüm yapısını tek bir çağrısıyla doğrulamanıza olanak tanır ☝️ expect Çö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ı ✅ , kutudan daha hızlı temiz kurulumla kazanır. Oyun yazarı 13 kat ℹ️ veya bunları kurulum süresini azaltabilirsiniz. Önceden yüklenmiş bağımlılıklara sahip bir görüntü kullanırsanız CI depolama alanınızda önbelleğe alırsanız CI'da Cypress Performansı Çalıştır ✅ API testlerini çalıştırmak için bir tarayıcıya ihtiyaç duymadığı için kazanır, dolayısıyla doğrudan konuya girer. Oyun yazarı, ℹ️ Ç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 ne de için nesnel bir avantaj yok. Cypress Oyun Yazarı İ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 test otomasyonu için kullanmanın yeterince güvenli olduğunu kesinlikle söyleyebilirim. Bu çerçeveyle zaten testleriniz varsa bu adil bir çözüm olacaktır. Playwright'ı API kullanıcı arayüzü Kullanıcı testleri için kullanan ve katmanını kapsamak isteyenlere tavsiyem; başka bir şey kullanmaları daha iyi olur ( + , bir örnek görebilirsiniz). arayüzü Cypress API Jest Axios orada