Framework Structure

The Tech Stack

ConcernChoice
Language / buildJava 21, Maven, surefire 3.5
Browser automationSelenium 4.25, Selenium Manager, Chrome/Firefox/Edge
Test runnerTestNG 7.10 (groups, DataProvider, parallel, listeners)
DesignPage Object Model with By fields, BasePage, components
Test dataAPI setup with REST Assured, CSV/Excel (Apache POI) for data-driven tests
ReportingExtent Reports 5 (mail) + Allure (CI history)
LoggingLog4j2, one log per thread name
Executionlocal, Docker Selenium Grid, BrowserStack for Safari
CIGitHub Actions: PR smoke, staging regression, nightly cross-browser

Folder Layout

shopease-ui-tests/
├── pom.xml
├── testng-smoke.xml  testng-regression.xml  testng-crossbrowser.xml
├── docker-compose.yml                     local Grid
├── .github/workflows/ui-tests.yml  nightly.yml
└── src/
    ├── main/java/com/shopease/
    │   ├── driver/   DriverFactory, BrowserType
    │   ├── pages/    BasePage, LoginPage, HomePage, SearchResultsPage, ProductPage,
    │   │             CartPage, CheckoutPage, OrderConfirmationPage, OrderHistoryPage, AdminProductsPage
    │   ├── components/ HeaderComponent, ProductCard, CartDrawer
    │   ├── api/      ShopEaseApi (REST Assured)
    │   ├── config/   ConfigReader
    │   └── utils/    WaitUtils, ScreenshotUtils, TestData, Retry
    └── test/
        ├── java/com/shopease/
        │   ├── base/       BaseTest
        │   ├── listeners/  TestListener, ExtentListener, RetryTransformer, SuiteSummaryListener
        │   └── tests/      auth/, search/, cart/, checkout/, orders/, admin/
        └── resources/  config/{qa,staging}.properties, testdata/, log4j2.xml