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ı ve expect kontrollerini 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.route ile 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.

  1. Testlerde mock, stub ve spy arasındaki fark nedir? Ne zaman mock kullanmamalısınız?OrtaTestFrontend
  2. React Testing Library'nin felsefesi nedir? Örnek bir test yazın.OrtaTestFrontend
  3. Unit, integration ve end-to-end (E2E) test arasındaki fark nedir?OrtaTestFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle