Careeroza
Framework Structure
The Tech Stack
| Concern | Choice |
|---|---|
| Language / build | Java 21, Maven, surefire 3.5 |
| Browser automation | Selenium 4.25, Selenium Manager, Chrome/Firefox/Edge |
| Test runner | TestNG 7.10 (groups, DataProvider, parallel, listeners) |
| Design | Page Object Model with By fields, BasePage, components |
| Test data | API setup with REST Assured, CSV/Excel (Apache POI) for data-driven tests |
| Reporting | Extent Reports 5 (mail) + Allure (CI history) |
| Logging | Log4j2, one log per thread name |
| Execution | local, Docker Selenium Grid, BrowserStack for Safari |
| CI | GitHub 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