🔐 Auth & Session Yönetimi

Auth & Session Yönetimi: Playwright storageState mekanizması, bir kurumsal SSO (Single Sign-On) sisteminin test katmanındaki yansımasıdır: kimlik doğrulama bir kez yapılır, oturu

Playwright storageState mekanizması, bir kurumsal SSO (Single Sign-On) sisteminin test katmanındaki yansımasıdır: kimlik doğrulama bir kez yapılır, oturum token'ı merkezi bir depoya yazılır ve ardından gelen tüm istekler bu token'ı göstererek güvenli bölgelere erişir. Peki her testin kendi login adımını çalıştırması neden sorunludur? Login işlemi — UI formunu doldurmak, 2FA varsa göndermek, redirect'leri beklemek — her test için 3-5 saniye ekler. 200 testin her biri login yapıyorsa bu 10+ dakika ekstra süre, üstelik login endpoint'i rate limit uyguluyorsa test suite'in yarısı 429 hatası alabilir. Java'da Selenium ile bu sorunu çözmek için genellikle bir @BeforeSuite session kurulumu yapılır, ama browser context'leri arasında session paylaşmak elle yönetim gerektirir. Playwright'ta storageState: "./auth.json" tek satırla tüm worker'lara aynı session'ı dağıtır. QA gerçeği: MFA (Multi-Factor Authentication), OAuth ve SAML tabanlı giriş akışları test ortamında taklit etmek yerine gerçek servis ile test edildiğinde login adımı en kırılgan ve en yavaş test adımına dönüşür; storageState+globalSetup pattern bu kırılganlığı çözmenin production-grade yoludur.

Her testin başında UI'dan login olmak (email yaz, şifre yaz, butona tıkla, dashboard'u bekle) yavaştır ve kırılgandır: 2 saniyelik bir login'i 100 testte tekrarlarsan 200 saniye boşa gider, login ekranındaki herhangi bir küçük UI değişikliği TÜM testleri kırabilir. Çözüm: login'i SADECE BİR KERE test et (ayrı bir "login akışı" test grubunda), sonra diğer tüm testler için oturumu storageState ile sakla ve yeniden kullan.

Bu, Selenium'da bazı projelerde yaptığın "login'i API'den yap, sonra cookie'yi driver.manage().addCookie() ile enjekte et" hack'inin resmî, built-in versiyonudur. storageState({ path: "auth.json" }) → context.addCookies(...) + localStorage enjeksiyonunu birlikte, tek dosyada saklar. playwright.config.ts içindeki projects + dependencies yapısı, TestNG'deki @BeforeSuite ile bir kere login olup session'ı tüm sınıflara yaymaya benzer ama dosya tabanlı ve paralel-güvenlidir.

Login Akışını Bir Kere, İyice Test Et

Micro Lab: Playwright — Aksiyonlar

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Adim Adim: Playwright — Aksiyonlar

page.locator() veya getByRole() ile locatoru hazirla

Playwright'in auto-wait mantigini hatirla: actionable olana kadar bekler

click(), fill(), press(), selectOption() aksiyonunu gerceklestir

Aksiyon sonrasi DOM degisikligini takip et (yeni sayfa, modal, hata mesaji)

await expect(locator).toBeVisible() veya toHaveText() ile sonucu kanitla

Playwright ile UI aksiyonu ve dogrulama sirasi nedir?

3 Adımda storageState Kurulumu