⏳ Bekleme Mekanizmaları (Wait)
Bekleme Mekanizmaları (Wait): Playwright'ın bekleme sistemi, modern bir akıllı trafik ışığı gibi çalışır: ışık sabit bir süre değil, sensörden gelen araç yoğunluğuna göre dinamik
Playwright'ın bekleme sistemi, modern bir akıllı trafik ışığı gibi çalışır: ışık sabit bir süre değil, sensörden gelen araç yoğunluğuna göre dinamik olarak açılır — koşul oluştuğunda geçilir, oluşmamışsa beklenir. Peki Selenium'da neden bunca elle bekleme kodu yazılırdı? Selenium, eski nesil mekanik bir zamanlayıcı gibidir: zaman sona erince beklemesi biter, element hazır olsa da olmasa da; hazır olsa bile zaman dolmamışsa bekler. Bu yüzden Java'da WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.id("btn"))) yazmak zorundaydın — her element için, her testte tekrarlayarak. Playwright'ta page.locator("#btn").click() bu bekleme mantığını içinde taşır: element görünene, enabled olana, viewport'a girene ve stable konuma gelene kadar otomatik bekler, maksimum timeout aşılırsa açık bir hata mesajıyla patlar. QA gerçeği: bekleme süresini sabit yazan testler, geliştirme ortamında yeşil yanan ama yavaş CI pipeline'ında kırmızı yanan klasik "works on my machine" sorununu üretir. Playwright'ın event-driven bekleme sistemi bu farkı ortadan kaldırır.
Auto-Wait — Playwright'ın Süper Gücü
click(), fill(), check() gibi TÜM aksiyonlar çağrılmadan önce Playwright şunu kontrol eder: Element DOM'da var mı? Görünür mü? Tıklanabilir mi? Stabil mi? (DOM değişiyor mu?) Hepsi hazır olunca aksiyon yapılır. Timeout aşılırsa TimeoutError fırlatır.
Micro Lab: Playwright — Locator secimi
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Adim Adim: Playwright — Locator secimi
Once getByRole, getByLabel, getByPlaceholder gibi semantic locator dene
Semantic bulamazsan getByText veya getByTestId kullan
CSS/XPath gerekiyorsa page.locator("css") veya page.locator("xpath=...") yaz
await expect(locator).toBeVisible() ile locatorin calistigini dogrula
Birden fazla element eslesiryorsa .first() / .nth() / .filter() ile daralt
Playwright locator secimi ve dogrulama sirasi nedir?
Auto-Wait — Playwright Aksiyondan Önce Ne Kontrol Eder?
"▶ Butona Tıkla" → Playwright tıklamadan önce 5 actionability check'i sırayla yapar. Tüm checkler yeşil olunca gerçek tıklama gerçekleşir. Sağda hangi check'in şu an yapıldığını izle.