Playwright, modern web uygulamaları için uçtan uca testler yazmak ve çalıştırmak için kullanılan bir framework’tür. Bu yapılandırma dosyasında, testlerin nasıl çalıştırılacağı, hangi tarayıcıların kullanılacağı ve diğer önemli ayarlar tanımlanmıştır.
İkinci yazımızda, test projenizde testlerin nasıl çalışacağını yapılandırmak için birçok seçeneğin bulunduğu playwright.config.ts dosyasını inceleyeceğiz.
Ayrıca, test çalıştırıcısı komutlarının nasıl oluşturulduğu ve yazmanızı kolaylaştıracak package.json komut dosyalarını gözden geçireceğiz. Playwright ile çalışmaya başlarken, ilk inceleyeceğimiz dosya playwright.config.ts dosyasıdır. Bu dosya, projede uygulayacağımız testler için gerekli tüm yapılandırmaları içerir.
const { defineConfig, devices } = require(‘@playwright/test’); ifadesi, @playwright/test paketinden defineConfig ve devices isimli iki fonksiyonu veya nesneyi alır ve onları defineConfig ve devices isimli değişkenlere atar.
Ortam Değişkenlerini Okuma (Opsiyonel)
// require(‘dotenv’).config({ path: path.resolve(__dirname, ‘.env’) });
Bu kısım, .env dosyasından ortam değişkenlerini okumak için kullanılan dotenv paketini kullanır. Ancak şu anda yorum satırı halindedir, yani aktif değil.
Parametreler ve Fonksiyonlar
defineConfig
- defineConfig fonksiyonu, Playwright yapılandırmasını tanımlamak için kullanılır. Bu fonksiyon, yapılandırma ayarlarını daha temiz ve anlaşılır bir şekilde düzenlemenize olanak tanır.
const config = defineConfig({ // Yapılandırma ayarları buraya gelir });
- testDir: Testlerin bulunduğu dizini belirtir.
- timeout: Her bir testin tamamlanması için verilen maksimum süredir.
- use: Testler için genel ayarları içerir:
- headless: Tarayıcıların başsız modda çalışıp çalışmayacağını belirtir.
- viewport: Tarayıcı pencere boyutlarını ayarlar.
- actionTimeout: Bireysel eylemlerin zaman aşımını belirler.
- ignoreHTTPSErrors: HTTPS hatalarını yoksayma ayarı.
- video: Test başarısız olduğunda video kaydını saklama ayarı.
- projects: Farklı tarayıcılar ve cihazlar için yapılandırma projelerini içerir. devices nesnesinden belirli cihaz yapılandırmaları kullanılabilir.
- reporter: Test sonuçlarının nasıl raporlanacağını belirtir.
- fullyParallel: Testlerin tamamen paralel çalışmasını sağlar. Tüm testler aynı anda çalıştırılır, böylece test süresi kısaltılır.
- forbidOnly: CI ortamında (env.CI değişkeni tanımlıysa) test.only kullanımını yasaklar. Bu, CI ortamında yanlışlıkla sadece belirli testlerin çalıştırılmasını önler.
- retries: Testlerin başarısız olması durumunda yeniden deneme sayısını belirtir. Bu örnekte testler iki kez daha çalıştırılır.
- workers: Testlerin paralel olarak çalıştırılacağı işçi (worker) sayısını belirtir. CI ortamında tek işçi kullanılırken, diğer durumlarda varsayılan değer kullanılır.
- reporter: Test sonuçlarının nasıl raporlanacağını belirtir. Liste, JSON ve HTML formatlarında raporlar oluşturulur.
- use: Testler için genel ayarları içerir:
-
- headless: Tarayıcıların başsız modda çalışıp çalışmayacağını belirtir.
- viewport: Tarayıcı pencere boyutlarını ayarlar.
- actionTimeout: Bireysel eylemlerin zaman aşımını belirler.
- ignoreHTTPSErrors: HTTPS hatalarını yoksayma ayarı.
- video: Test başarısız olduğunda video kaydını saklama ayarı.
- trace: İzleme (trace) özelliğini etkinleştirir. Bu örnekte, izleme sadece ilk yeniden denemede etkinleştirilir.
- projects: Farklı tarayıcılar ve cihazlar için yapılandırma projelerini içerir. Her tarayıcı veya cihaz için özel ayarlar belirlenebilir. Örneğin, Desktop Chrome, Desktop Firefox, Desktop Safari, Mobile Chrome ve Mobile Safari gibi projeler tanımlanmıştır.
devices nesnesi, Playwright tarafından sağlanan ve farklı cihaz ve tarayıcı kombinasyonlarını tanımlayan önceden tanımlanmış ayarları içerir. Bu ayarlar, belirli cihazların ve tarayıcıların davranışlarını simüle etmek için kullanılır.
Bu şekilde, Playwright yapılandırma dosyanızı daha modüler ve okunabilir hale getirebilirsiniz. defineConfig fonksiyonu, yapılandırma ayarlarını daha düzenli ve anlaşılır bir şekilde tanımlamanıza yardımcı olurken, devices nesnesi farklı cihaz ve tarayıcı kombinasyonlarını kolayca kullanmanıza olanak tanır.
Playwright Yapılandırması
module.exports = defineConfig({ testDir: ‘./tests’,
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: ‘html’,
use: {
// baseURL: ‘http://127.0.0.1:3000’,
trace: ‘on-first-retry’,
},
- testDir: ‘./tests’: Test dosyalarının bulunduğu dizini belirtir.
- fullyParallel: true: Testlerin tamamen paralel olarak çalışmasını sağlar. Burada varsayılan olarak true’ya sahip olduğumuzu görüyoruz- Playwright dosya içindeki tüm testleri paralel olarak çalıştırma yeteneğine sahiptir, dolayısıyla bu komut değerinin true olarak ayarlanması güzel, böylece testleri daha da hızlandırabiliriz.
- forbidOnly: !!process.env.CI: CI ortamında (process.env.CI değişkeni tanımlıysa) test.only kullanımını yasaklar. Bu, yanlışlıkla sadece belirli testlerin çalıştırılmasını önler.
- retries: process.env.CI ? 2 : 0: CI ortamında testlerin başarısız olması durumunda iki kez yeniden denenmesini sağlar. CI ortamı dışındaki durumlarda yeniden deneme yapılmaz.
- workers: process.env.CI ? 1 : undefined: CI ortamında tek işçi kullanılırken, diğer durumlarda varsayılan değeri kullanır.
- reporter: ‘html’: Test sonuçlarının HTML formatında raporlanmasını sağlar.
- use: Testler için genel ayarları içerir:
- trace: ‘on-first-retry’: İlk yeniden denemede izleme (trace) özelliğini etkinleştirir. trace başarısız olan testleri anlamamıza yardımcı olacaktır ve bu durumda başarısız olursa, ilk tekrar denemede bunu izleyecektir. Bu değeri burada görebileceğiniz gibi birkaç değerle de değiştirebilirsiniz.
- baseURL: Yorum satırı halindedir. Testler sırasında kullanılacak temel URL’yi belirtir.
- Proje Yapılandırmaları
projects: [
{
name: ‘chromium’,
use: { …devices[‘Desktop Chrome’] },
},
{
name: ‘firefox’,
use: { …devices[‘Desktop Firefox’] },
},
{
name: ‘webkit’,
use: { …devices[‘Desktop Safari’] },
},
/* Test against mobile viewports. */
// {
// name: ‘Mobile Chrome’,
// use: { …devices[‘Pixel 5’] },
// },
// {
// name: ‘Mobile Safari’,
// use: { …devices[‘iPhone 12’] },
// },
/* Test against branded browsers. */
// {
// name: ‘Microsoft Edge’,
// use: { …devices[‘Desktop Edge’], channel: ‘msedge’ },
// },
// {
// name: ‘Google Chrome’,
// use: { …devices[‘Desktop Chrome’], channel: ‘chrome’ },
// },
],
- projects: Farklı tarayıcılar ve cihazlar için yapılandırma projelerini içerir.
- name: ‘chromium’: Chromium tarayıcısı için yapılandırma.
- use: { …devices[‘Desktop Chrome’] }: Desktop Chrome tarayıcı yapılandırmasını kullanır.
- name: ‘firefox’: Firefox tarayıcısı için yapılandırma.
- use: { …devices[‘Desktop Firefox’] }: Desktop Firefox tarayıcı yapılandırmasını kullanır.
- name: ‘webkit’: Webkit tarayıcısı için yapılandırma.
- use: { …devices[‘Desktop Safari’] }: Desktop Safari tarayıcı yapılandırmasını kullanır.
- Yorum satırı olarak bırakılan diğer projeler, mobil tarayıcılar ve markalı tarayıcılar (Microsoft Edge ve Google Chrome) için yapılandırma örnekleridir.
- Yerel Geliştirme Sunucusunu Çalıştırma (Opsiyonel)
/* Run your local dev server before starting the tests */
// webServer: {
// command: ‘npm run start’,
// url: ‘http://127.0.0.1:3000’,
// reuseExistingServer: !process.env.CI,
// },
});
- webServer: Testler başlamadan önce yerel geliştirme sunucusunu çalıştırmak için kullanılan bir yapılandırmadır. Şu anda yorum satırı halindedir, yani aktif değil.
- command: Sunucuyu başlatmak için çalıştırılacak komut.
- url: Sunucunun erişileceği URL.
- reuseExistingServer: CI ortamında mevcut sunucuyu yeniden kullanmama ayarı.
Bu yapılandırma dosyası, Playwright ile testlerinizi nasıl yapılandıracağınızı ve çalıştıracağınızı belirler. Dosyada yapılan değişiklikler, tüm testlerin çalışma şeklini etkiler.