Pratik Alıştırmalar & Hızlı Referans
Pratik Alıştırmalar & Hızlı Referans: Alıştırma 1 — TestCase Interface Tanımlama Enum ve Interface ile TestCase Oluştur LOW, MEDIUM, HIGH, CRITICAL değerlerine sahip `Priority` s
Alıştırma 1 — TestCase Interface Tanımlama
Enum ve Interface ile TestCase Oluştur
LOW, MEDIUM, HIGH, CRITICAL değerlerine sahip `Priority` string enum'u ve PASS, FAIL, SKIP, BLOCKED değerlerine sahip `TestStatus` string enum'u tanımlayın. `TestCase` interface'ini tanımlayın: id (number, readonly), title (string), description (isteğe bağlı string), status (TestStatus), priority (Priority), tags (string dizisi), durationMs (number) ve assignee (isteğe bağlı string). İki TestCase nesnesi oluşturun: biri başarılı bir login testi, diğeri başarısız bir ödeme testi için.
String enum'lar log ve raporlarda anlaşılmaz sayılar yerine okunabilir değerler ('PASS', 'CRITICAL') üretir. id üzerindeki readonly modifier, testlerin tanımlayıcıyı yanlışlıkla değiştirmesini önler. İsteğe bağlı alanlar (?) gereksiz kod yazmadan minimal test nesneleri oluşturmanıza olanak tanır.
Alıştırma 2 — Generic ApiResponse Sarmalayıcı
Type Guard ile Generic API Yanıtı Sarmalayıcısı
data (T | null), status (number), ok (boolean), error (string | null), requestId (string) alanlarına sahip generic `ApiResponse ` interface'i oluşturun. Veri ve durum kodu alan ve doğru doldurulmuş ApiResponse döndüren generic `createApiResponse ` factory fonksiyonu yazın. ok true ve data null değilse true döndüren `isSuccessResponse ` type guard fonksiyonu yazın. `ApiResponse ` alan ve bunun bir user olduğunu doğrulayan `parseUserResponse` fonksiyonu yazın.
Generic'ler tek bir `ApiResponse ` interface'inin veri alanını User, Product, Order veya herhangi başka bir tip olarak doğru şekilde tiplemesine izin verir. Type guard, kontrol sonrasında data'nın null olmadığını TypeScript'in bilmesi için tipi daraltır.
Alıştırma 3 — Tipli Playwright POM Base Class
Fixture'lı Generic Playwright POM Base Class
Constructor'ında Playwright'tan `Page` kabul eden abstract `PageObjectBase` class'ı oluşturun. Şunları içermeli: protected abstract `path` özelliği (string), `page.goto` çağıran `navigate()` metodu, generic `getElement (selector: string): T` metodu, protected `waitForSelector` yardımcısı ve `expectUrl` assertion yardımcısı. Ardından `LoginPage` somut class'ını oluşturun. Son olarak `test.extend ` kullanarak tipli fixture uzantısını gösterin.
Abstract class'lar her sayfanın kendi yolunu bildirmesini zorunlu kılar. Yardımcılarda ve locator'larda protected/private erişim, public API'yi temiz tutar — test kodu yalnızca navigate, login, getErrorText ve isLoggedIn gibi public metodları görür. Fixture uzantısı kalıbı, tipli page object'i onu manuel olarak oluşturmadan her testte kullanılabilir kılar.
Hızlı Referans: TypeScript Özellikleri
typescriptlang.org/play adresindeki TypeScript Playground'u yer imlerine ekleyin — herhangi bir kod parçasını yapıştırın ve derlenmiş JavaScript'i, tür hatalarını ve hover tiplerini anında görün. Proje kurmadan TypeScript kavramlarını denemenin en hızlı yoludur.