Ana içeriğe geç

Tarayıcı Yaşam Döngüsü

WebDriver oturumunun ne zaman oluşturulduğunu ve kapatıldığını kontrol edin.


Yapılandırma​

testfly.yml
browser:
lifecycle: per-test # per-test (default) | per-suite

per-test (varsayılan)​

Her test metodundan önce yeni bir tarayıcı açılır ve hemen ardından kapanır.

Test 1 starts → Chrome opens → test runs → Chrome closes
Test 2 starts → Chrome opens → test runs → Chrome closes
Test 3 starts → Chrome opens → test runs → Chrome closes

En uygun: Bağımsız testler, tam izolasyon, CI boru hatları.


per-suite​

Tarayıcı, thread başına bir kez açılır ve suite'in tamamı boyunca açık kalır. Suite bittiğinde temiz şekilde kapatılır.

Suite starts
Thread 1: Chrome opens
Test 1 runs → browser stays open
Test 2 runs → browser stays open
Test 3 runs → browser stays open
Thread 1: Chrome closes
Suite ends

En uygun: Tarayıcı başlatma süresinin darboğaz olduğu büyük sıralı suite'ler veya testlerin kimliği doğrulanmış bir oturumu paylaştığı test akışları.


Paralel + per-suite​

Paralel çalıştırmada her thread, kendi tarayıcısını bağımsız olarak yönetir.

Thread 1: Chrome opens → runs Test A, B, C → Chrome closes
Thread 2: Chrome opens → runs Test D, E, F → Chrome closes

Semaphore, maksimum eşzamanlı tarayıcı sayısını (maxActiveSessions) yine de sınırlar.


Testler arasında durum yönetimi​

per-suite ile tarayıcı, önceki testten gelen tüm durumu (çerezler, URL, localStorage) korur.

Testleriniz bağımsızsa durumu açıkça sıfırlayın:

@Test
public void independentTest() {
open(); // navigate to baseUrl — resets the page
getDriver().manage().deleteAllCookies(); // clear session if needed
// ...
}

Bağımlı akışlar için duruma kasıtlı olarak güvenin:

@Test(priority = 1)
public void login() {
open("/login");
new LoginPage(getDriver()).login("admin", "secret");
// browser now has an authenticated session
}

@Test(priority = 2, dependsOnMethods = "login")
public void viewDashboard() {
// no login needed — session cookie is still in the browser
open("/dashboard");
softAssert().that(new DashboardPage(getDriver()).isLoaded(), "Dashboard should be loaded");
}

@Test(priority = 3, dependsOnMethods = "viewDashboard")
public void editProfile() {
open("/profile");
// still authenticated
}

Hata durumunda ekran görüntüleri​

Ekran görüntüleri per-suite ile yine de doğru çalışır — hata ekran görüntüsü alındığında tarayıcı hâlâ açıktır.


per-suite ile Retry​

Bir test yeniden denendiğinde aynı tarayıcı örneği yeniden kullanılır. Yeniden başlatma gerçekleşmez. Önceki deneme tarayıcıyı bozuk bir durumda bıraktıysa, bilinen bir sayfaya dönmek için testinizin başında open() çağırın.