← Teknik notlara dön
Web otomasyonu · Test tasarımı

Playwright ile Page Object Model: senaryoyu sayfa ayrıntısından ayırmak

Locator ve sayfa etkileşimlerini ortak bir yerde toplamak, senaryoyu okunur tutmak ve bu yaklaşımın sınırlarını görmek.

Kazım Şahin'in Medium'da yayımladığı yazının portfolyo için yeniden yazılmış kısa teknik özeti. Aşağıdaki örnek temsili koddur; proje deposundan veya çalıştırılmış bir testten alınmamıştır.

01 / Not

Locator değiştiğinde ne olmalı?

Aynı sayfa alanını birçok test doğrudan seçiyorsa, arayüzdeki bir değişiklik test dosyalarının her birine yayılır. Medium'daki yazının çıkış noktası bu tekrarın bakım yüküdür: testin niyeti ile sayfa ayrıntısını birbirinden ayırmak.

Page Object Model, bir sayfa veya bileşenin locator'larını ve kullanıcı eylemlerini tek bir nesnede toplar. Böylece test, hangi CSS seçicisine tıkladığını değil hangi davranışı gerçekleştirdiğini anlatabilir. Bu düzen, her UI değişikliğinin tek dosyayla çözüleceği garantisi değildir; değişikliğin kapsamına göre senaryolar da güncellenebilir.

02 / Not

Sayfa nesnesinin sorumluluğu

Bir Page Object, sayfadaki alanlara nasıl ulaşılacağını ve tekrar eden etkileşimleri bilir. Örnek aşağıda kullanıcıya görünen etiket ve buton adını kullanıyor; bu, Playwright'ın güncel locator önerileriyle de uyumludur.

TypeScript · temsili örnek
import type { Locator, Page } from "@playwright/test";

export class LoginPage {
  readonly email: Locator;
  readonly password: Locator;
  readonly submit: Locator;

  constructor(page: Page) {
    this.email = page.getByLabel("E-posta");
    this.password = page.getByLabel("Şifre");
    this.submit = page.getByRole("button", { name: "Giriş yap" });
  }

  async submitCredentials(email: string, password: string) {
    await this.email.fill(email);
    await this.password.fill(password);
    await this.submit.click();
  }
}

Gerçek ürün kodu veya çalıştırılmış test çıktısı değildir.

03 / Not

Doğrulama senaryoda görünür kalmalı

Sayfa nesnesi eylemi soyutlarken test, beklenen sonucu açıkça ifade etmelidir. Örneğin giriş formuna değer yazmak ile gerçekten oturum açıldığını doğrulamak farklı işlerdir. Beklenen davranış testte görünürse başarısızlık daha kolay yorumlanır.

Yazıdaki yeniden kullanım ve okunabilirlik hedefi, otomatik olarak daha yüksek geçme oranı veya ölçülmüş zaman kazancı anlamına gelmez. Bunlar ancak karşılaştırılabilir koşumlarla gösterilebilir.

04 / Not

Açık projelerdeki karşılığı

Automation Exercise deposunda pages ve pozitif/negatif test klasörleri ayrı tutuluyor. e-bebek çalışmasında Gherkin senaryoları, adım tanımları ve Page Object dosyaları farklı katmanlarda. Bu yapılar, yazıdaki ayrımın kodda incelenebilen örnekleri.

e-bebek README'sindeki sepet fiyatı ve oturum zamanlaması örnekleri bir sınırı da gösteriyor: Page Object düzeni tek başına yanlış fiyat varsayımını veya asenkron ürün davranışını çözmez. Gözlem, uygun doğrulama ve koşum izolasyonu ayrıca tasarlanmalıdır.

  • Locator ve tekrar eden etkileşimleri sayfa/bileşen katmanında topla.
  • Beklenen davranışı test senaryosunda açıkça doğrula.
  • Gerçek ürün davranışı değişirse hem sayfa kodunu hem test varsayımını yeniden değerlendir.
Kaynaklar

Yazı ve teknik referanslar

“Playwright ile Page Object Model (POM): Daha Yapılandırılmış ve Bakımı Kolay Testler” başlıklı özgün Medium yazısı 29 Ekim 2024 tarihinde yayımlandı. Bu sayfa onun kısa portfolyo uyarlamasıdır.

Uygulama örnekleri
İletişim

Test yaklaşımını
konuşalım.

Projeler veya çalışma yaklaşımım hakkında yazabilirsiniz.

İletişim bilgileri ↗