Playwright ile E2E testlerinde flaky (kararsız) testleri nasıl önlersiniz?
Cevap
Flaky test, kod değişmeden bazen geçip bazen kalan testtir. En yaygın nedenler ve çözümleri:
- Sabit beklemeler:
waitForTimeout(2000)yerine Playwright'ın otomatik bekleyen locator'larını veexpectkontrollerini kullanın. - Kırılgan seçiciler: CSS sınıfı yerine kullanıcıya görünen rol ve metin:
getByRole("button", { name: "Kaydet" }) - Paylaşılan durum: her test kendi verisini oluşturmalı; testler birbirine ve çalışma sırasına bağımlı olmamalı.
- Dış servisler: ağ isteklerini
page.routeile taklit etmek - Zaman ve animasyon: saat taklidi, animasyonları kapatmak
import { test, expect } from "@playwright/test";
test("soru ekleme formu", async ({ page }) => {
await page.goto("/soru-ekle");
await page.getByLabel("Soru").fill("Closure nedir?");
await page.getByRole("button", { name: "Gönder" }).click();
await expect(page.getByRole("status")).toHaveText(/onaya gönderildi/);
});CI'da retries ve trace viewer ile başarısız testin adım adım kaydını incelemek, kökü bulmayı kolaylaştırır; ama retry asıl sorunu gizlememelidir.
İlgili Test soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.