This project is a Selenium Test Automation Framework built in Java (JDK 16) using TestNG for parallel execution and Extent Reports for advanced HTML reporting.
It automates hotel search and booking flow on Booking.com — including destination search, date selection, guest and room configuration.
| Component | Tool |
|---|---|
| Programming Language | Java 16 |
| Build Tool | Maven |
| Test Framework | TestNG |
| UI Automation | Selenium WebDriver |
| Reporting | Extent Reports |
| Driver Management | WebDriverManager |
| Configuration | Config.properties |
| Parallel Execution | TestNG XML |
| IDE | IntelliJ IDEA Community |
BookingTests/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── models/ → Element locators
│ │ │ ├── pages/ → Page classes (POM)
│ │ │ └── utils/ → Utilities (DriverFactory, ConfigReader, ExtentManager)
│ │ └── resources/
│ │ └── Config.properties → Browser and URL settings
│ └── test/
│ └── java/
│ └── Tests/
│ ├── BookingReservationTest.java
│ └── HomePage_Verification_Test.java
├── testng.xml → Defines suite & parallel execution
├── pom.xml → Maven dependencies
├── README.md → Project documentation
└── test-Report/ → HTML reports (Extent)
Define your preferred browser and base URL:
browser=chrome
url=https://www.booking.comSupported browsers:
🟢 Chrome | 🦊 Firefox | 🟦 Edge | 🧭 Safari
Utility class that loads configuration values automatically.
String browser = ConfigReader.get("browser");
String url = ConfigReader.get("url");Uses switch-case to launch browsers dynamically:
switch (browser) {
case "chrome":
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
driver = new FirefoxDriver();
break;
case "edge":
WebDriverManager.edgedriver().setup();
driver = new EdgeDriver();
break;
case "safari":
driver = new SafariDriver();
break;
default:
throw new RuntimeException("Invalid browser in Config.properties");
}Run tests in parallel using multiple threads for faster execution:
<suite name="Booking Parallel Suite" parallel="classes" thread-count="2" verbose="1">
<test name="Booking Automation Tests">
<packages>
<package name="Tests"/>
</packages>
</test>
</suite>
After execution, HTML reports are generated automatically in:
test-Report/Booking_Report_<timestamp>.html
Each report includes:
- Test status (PASS/FAIL/SKIP)
- Screenshots (optional)
- Execution timeline
- Environment and browser info
Right-click on testng.xml → Run 'testng.xml'
mvn clean testJust edit your Config.properties:
browser=edge✅ Parallel test execution
✅ Dynamic browser configuration
✅ Extent HTML reporting
✅ Thread-safe WebDriver instance
✅ Clear POM-based architecture
✅ Configurable URL and environment
Ata Farivar — QA Automation Engineer
📎 LinkedIn Profile
This project is intended for educational and professional QA automation portfolio use.