Skip to content

MSagiroglu/Java_Playwright_Sample_Framework

Repository files navigation

Excellent Playwright Framework (Java 17 + Cucumber + TestNG)

Bu repo, FrameworkMusts.md dosyasındaki kurallara göre Java 17, Cucumber, TestNG ve Playwright kullanılarak oluşturulmuş, paralel ve cross-browser çalışabilen profesyonel bir test otomasyon framework'üdür. Tüm yapı src/test/ dizini altında konumlandırılmıştır.

Özellikler

  • Java 17, Cucumber (BDD), TestNG (paralel koşum)
  • Playwright Java ile hızlı, kararlı UI otomasyonu
  • POM (Page Object Model) mimarisi (src/test/java/pages/)
  • Cross-Browser: chromium, firefox, webkit (edge/safari varyantları webkit/chromium ile kapsanır)
  • Environment Yönetimi: stage-ui, stage, product (config üstünden)
  • StorageState Oturumu: @Login dışındaki senaryolarda storage kullanımı
  • Allure Raporlama: target/allure-results altına sonuçlar
  • CI/CD (GitHub Actions): Zamanlanmış günlük ve @Regression job’ları

Proje Yapısı

  • src/test/java/driver/Driver.java: Playwright, Browser, Context, Page ve Tracing yönetimi (viewport ekran çözünürlüğüne göre ayarlanır)
  • src/test/java/hooks/Hooks.java: TestNG @BeforeMethod/@AfterMethod, hata durumunda ekran görüntüsü ve trace ekleri
  • src/test/java/utilities/:
    • ConfigReader.java: configuration.properties okur
    • LoggerUtil.java: basit log ve JSON okuma
    • MailSender.java: SMTP ile rapor linki gönderimi (singleton)
    • ReusableMethods.java: tıklama, doldurma, upload, alert, sekme değişimi vb.
  • src/test/java/pages/LoginPage.java: Login sayfası için POM
  • src/test/java/stepdefinitions/LoginSteps.java: Login adımları
  • src/test/java/runners/TestRunner.java: Cucumber + TestNG koşucu (paralel)
  • src/test/resources/features/Login.feature: Örnek login senaryosu (@Login)
  • src/test/resources/configuration.properties: environment, credentials, browser ayarları
  • src/test/resources/state_*.json: storage state dosyaları
  • testng.xml: paralel koşum ve parametreler
  • .github/workflows/ci.yml: zamanlı koşum ve allure artefact yükleme

Kurulum

  1. Java 17 kurulu olduğundan emin olun.
  2. Maven bağımlılıklarını indirin:
    mvn -q -e -DskipTests dependency:resolve

Çalıştırma

  • Varsayılan ayarlar (product, chromium):
    mvn -q -e clean test
  • Farklı environment ve browser ile:
    mvn -q -e -Denv=stage -Dbrowser=firefox clean test
  • Sadece belirli tag’leri çalıştırmak için (ör. @Regression):
    mvn -q -e -Dcucumber.filter.tags="@Regression" clean test

Allure Raporu

  • Test sonrası sonuçlar target/allure-results altına yazılır.
  • Raporu lokalde görüntülemek için (Allure Commandline yüklü ise):
    allure serve target/allure-results

StorageState ve Giriş Kuralları

  • @Login senaryoları: StorageState KULLANMADAN .../Login URL’ine gider.
  • Diğer senaryolar: configuration.properties içindeki *.storageState dosyasını kullanır ve .../Main#/homepagedashboard URL’ine gider.

Not: Örnek olarak sadece Login.feature sağlanmıştır. Diğer senaryolar için de aynı kurgu ile tag tabanlı yönlendirme uygulanabilir.

Playwright Codegen Örnekleri

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen https://www.feedback4e.com/Login"
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --viewport-size=800,600"
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --device='iPhone 13'"
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --timezone='Europe/Rome' --geolocation='41.890221,12.492348' --lang='it-IT' bing.com/maps"
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen https://www.feedback4e.com/Login  --save-storage=login.json"
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen https://www.feedback4e.com/Login  --load-storage=login.json"

Versiyon Güncellemeleri (Maven Versions Plugin)

mvn versions:display-dependency-updates
mvn versions:use-latest-versions
mvn versions:display-plugin-updates
mvn versions:use-latest-plugins

CI (GitHub Actions)

  • Her gün 22:00 (TRT) günlük koşum
  • Cumartesi 08:00 (TRT) @Regression koşumu
  • Tüm environment ve browser kombinasyonlarında matrix koşum ve Allure sonuçlarının artefact olarak yüklenmesi
  • E-posta ile rapor linki gönderimi için MailSender örneği eklidir. Artefact linki/Allure yayınına göre bir “link” üretildikten sonra CI içinde küçük bir Java main ile MailSender.getInstance().sendReportLink(subject, link) çağrılabilir.

Notlar ve Uyumluluk

  • Tüm sınıflar Türkçe açıklama satırları içerir. Gerektikçe daha detaylı satır içi yorumlar eklenebilir.
  • Listener tanımı yapılmamıştır; test yaşam döngüsü hooks/Hooks.java üzerinden TestNG anotasyonları ile yönetilir. (Allure entegrasyonu, Cucumber plugin’i üzerinden rapor üretir.)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published