🔐 Sanal Auth & Gelişmiş Özellikler
Sanal Auth & Gelişmiş Özellikler: Virtual Authenticator, WebAuthn (FIDO2/Passkey) akışlarını test etmek için Selenium'un CI ortamına enjekte ettiği yazılım tabanlı bir donanım si
Virtual Authenticator, WebAuthn (FIDO2/Passkey) akışlarını test etmek için Selenium'un CI ortamına enjekte ettiği yazılım tabanlı bir donanım simülatörüdür — tıpkı Java testlerinde gerçek veritabanı yerine H2 in-memory DB kullanmak gibi: arayüz aynı, alttaki implementasyon test için değiştirilmiş. Peki Mockito ile servis katmanını mock'layabiliyorken neden tarayıcı testinde fiziksel donanım simülasyonu gerekiyor? Çünkü Passkey doğrulaması uygulama kodunda değil, tarayıcının WebAuthn API'sinde gerçekleşir; bu API'yi Mockito ile mock'layamazsın, tarayıcıya "sanal bir authenticator var" demen gerekir. Java'da addVirtualAuthenticator(options) ile eklenen bu sanal cihaz, gerçek USB key yerine geçer ve FIDO2 akışını uçtan uca tetikler. QA açısından kritik senaryo: şirket "password'ları kaldırıyoruz, Passkey geçiyoruz" kararını uygulamaya koyduğunda, giriş akışının regresyon testi artık fiziksel USB dongle olmadan CI pipeline'ında otomatik çalışabilir — Virtual Authenticator olmadan bu test sadece manuel yapılabilir, otomasyon boşluğu kalır.
Selenium 4, WebAuthn (Passkeys, FIDO2) testlerini desteklemek için Virtual Authenticator API sunar. Ayrıca tarayıcı pencerelerini PDF olarak kaydetmeyi sağlayan Print API'si ve hassas mouse-wheel/stylus eylemleri için Pen & Wheel Actions API'si bu sürümle gelen diğer gelişmiş özelliklerdir.
1. Virtual Authenticator (WebAuthn / Passkeys)
Sanal bir kimlik doğrulayıcı ekleyerek iki adımlı güvenlik (2FA) veya Passkey giriş akışlarını simüle edebiliriz. Java'da `HasVirtualAuthenticator` arayüzü ile yönetilir.
Java — Virtual Authenticator Kurulumu
Micro Lab: Selenium — UI Aksiyonlari
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Adim Adim: Selenium — UI Aksiyonlari
Locator ile elementi bul (By.ID, By.CSS veya By.XPath)
WebDriverWait ile elementin tiklanabilir oldugunu dogrula
click() / sendKeys() / select() aksiyonunu gerceklestir
DOM degisikligini izle
Aksiyon sonrasi DOM degisikligini gozlemle (alert, yeni sayfa, renk vs.)
assertEquals / assertTrue ile beklenen durumu kanitla