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.
- 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-resultsaltına sonuçlar - CI/CD (GitHub Actions): Zamanlanmış günlük ve @Regression job’ları
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 eklerisrc/test/java/utilities/:ConfigReader.java:configuration.propertiesokurLoggerUtil.java: basit log ve JSON okumaMailSender.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 POMsrc/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
- Java 17 kurulu olduğundan emin olun.
- Maven bağımlılıklarını indirin:
mvn -q -e -DskipTests dependency:resolve
- 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
- Test sonrası sonuçlar
target/allure-resultsaltına yazılır. - Raporu lokalde görüntülemek için (Allure Commandline yüklü ise):
allure serve target/allure-results
@Loginsenaryoları: StorageState KULLANMADAN.../LoginURL’ine gider.- Diğer senaryolar:
configuration.propertiesiçindeki*.storageStatedosyasını kullanır ve.../Main#/homepagedashboardURL’ine gider.
Not: Örnek olarak sadece
Login.featuresağlanmıştır. Diğer senaryolar için de aynı kurgu ile tag tabanlı yönlendirme uygulanabilir.
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"mvn versions:display-dependency-updates
mvn versions:use-latest-versions
mvn versions:display-plugin-updates
mvn versions:use-latest-plugins- 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 ileMailSender.getInstance().sendReportLink(subject, link)çağrılabilir.
- 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.)