|
1 | | -# 📱 Selenium Java Automation Framework |
| 1 | +# Selenium Java Automation Framework |
| 2 | + |
| 3 | +A compact web test automation framework built with Java, Selenium WebDriver, Maven, and TestNG. |
| 4 | + |
| 5 | +This project demonstrates a practical starter framework for browser-based test automation with reusable setup, externalized configuration, and data-driven execution using Excel. |
| 6 | + |
| 7 | +## What I Built |
| 8 | + |
| 9 | +- Automated website login flow testing with Selenium WebDriver |
| 10 | +- Config-driven browser and URL setup using properties files |
| 11 | +- Externalized UI locators for easier maintenance |
| 12 | +- Data-driven test execution with TestNG and Apache POI |
| 13 | +- Reusable base test class for browser lifecycle management |
| 14 | +- Default TestNG reporting for test execution results |
| 15 | + |
| 16 | +## Tech Stack |
| 17 | + |
| 18 | +- Java |
| 19 | +- Selenium WebDriver |
| 20 | +- TestNG |
| 21 | +- Maven |
| 22 | +- Apache POI |
| 23 | +- WebDriverManager |
| 24 | + |
| 25 | +## Project Structure |
| 26 | + |
| 27 | +```text |
| 28 | +TestAutomationFramework/ |
| 29 | +|-- pom.xml |
| 30 | +|-- testrunner/ |
| 31 | +| `-- testng.xml |
| 32 | +|-- src/test/java/ |
| 33 | +| |-- base/ |
| 34 | +| | `-- BaseTest.java |
| 35 | +| |-- testcase/ |
| 36 | +| | `-- MyFirstTestFW.java |
| 37 | +| `-- utilities/ |
| 38 | +| |-- ReadXLSdata.java |
| 39 | +| `-- readpropertyFile.java |
| 40 | +`-- src/test/resources/ |
| 41 | + |-- configfiles/ |
| 42 | + | |-- config.properties |
| 43 | + | `-- locators.properties |
| 44 | + `-- testdata/ |
| 45 | + `-- testdata.xlsx |
| 46 | +``` |
2 | 47 |
|
3 | | -A **modular web test automation framework** built using **Selenium, Java, Maven, and TestNG**. |
4 | | -The framework follows **Page Object Model (POM)** design pattern, enabling **scalable, maintainable, and reusable** automation for Android and iOS apps. |
5 | | -It supports **data-driven testing, parallel execution, CI/CD pipelines, and structured reporting**. |
| 48 | +## Framework Highlights |
6 | 49 |
|
7 | | ---- |
| 50 | +### BaseTest |
8 | 51 |
|
9 | | -## 📂 Project Structure |
| 52 | +The base layer initializes the browser, loads configuration files, opens the target application, and handles teardown after test execution. |
10 | 53 |
|
11 | | -``` |
| 54 | +### Data-Driven Testing |
12 | 55 |
|
13 | | -AppiumAutomationFramework |
14 | | -│── pom.xml # Maven build configuration & dependencies |
15 | | -│── src/test/java |
16 | | -│ ├── base/BaseTest.java # Driver setup & common hooks |
17 | | -│ ├── pages/ # Page Object Model classes for app screens |
18 | | -│ ├── tests/ # TestNG test classes |
19 | | -│ ├── utilities/ # Reusable helpers (data, waits, config, screenshots) |
20 | | -│ ├── config/ConfigManager.java # Loads app & device capabilities from properties file |
21 | | -│── src/test/resources |
22 | | -│ ├── testdata/ # Test data files (Excel/JSON) |
23 | | -│ ├── capabilities.properties # Appium server & device config |
24 | | -│ ├── testng.xml # TestNG suite definitions |
25 | | -│── reports/ # Test reports (TestNG/Allure/Extent) |
26 | | -
|
27 | | -```` |
28 | | -
|
29 | | ---- |
30 | | -
|
31 | | -## ⚡ Key Features |
32 | | -
|
33 | | -- **Page Object Model (POM):** Structured page classes for app screens. |
34 | | -- **TestNG Integration:** Parallel execution, groups, priorities, and reporting. |
35 | | -- **Appium Capabilities Management:** Configurable via `capabilities.properties`. |
36 | | -- **Data-Driven Testing:** Support for Excel/JSON/CSV test data. |
37 | | -- **Reusable Utilities:** |
38 | | - - Wait strategies (explicit, fluent waits) |
39 | | - - Screenshot capture on failure |
40 | | - - Property/config loader |
41 | | -- **Cross-Platform Support:** Android & iOS readiness. |
42 | | -- **CI/CD Friendly:** Easily integrated with Jenkins/GitHub Actions. |
43 | | -- **Reporting:** TestNG reports with support for Allure/Extent. |
44 | | -
|
45 | | ---- |
46 | | -
|
47 | | -## 🛠️ Tech Stack |
48 | | -
|
49 | | -- **Language:** Java |
50 | | -- **Mobile Automation:** Appium |
51 | | -- **Testing Framework:** TestNG |
52 | | -- **Build Tool:** Maven |
53 | | -- **Data Handling:** Apache POI (Excel) / JSON |
54 | | -- **Device Support:** Android Emulator, Real Devices, iOS Simulator |
55 | | -- **CI/CD:** Jenkins / GitHub Actions |
56 | | -
|
57 | | ---- |
58 | | -
|
59 | | -## ▶️ Getting Started |
60 | | -
|
61 | | -### Prerequisites |
62 | | -- Java JDK 8+ |
63 | | -- Maven 3+ |
64 | | -- Node.js & Appium Server |
65 | | -- Android SDK (for Android) / Xcode (for iOS) |
66 | | -- Device or Emulator/Simulator |
67 | | -
|
68 | | -### Setup |
69 | | -```bash |
70 | | -# Clone repository |
71 | | -git clone <repo-url> |
72 | | -cd AppiumAutomationFramework |
| 56 | +Test data is stored in Excel and supplied to TestNG tests through a reusable data provider built with Apache POI. |
| 57 | + |
| 58 | +### Externalized Configuration |
| 59 | + |
| 60 | +Application URL, browser selection, and element locators are separated from test logic through `.properties` files for easier updates. |
73 | 61 |
|
74 | | -# Install dependencies |
75 | | -mvn clean install |
76 | | -```` |
| 62 | +## Run The Tests |
77 | 63 |
|
78 | | -### Run Tests |
| 64 | +From the `TestAutomationFramework` folder: |
79 | 65 |
|
80 | 66 | ```bash |
81 | | -# Run all tests |
82 | 67 | mvn test |
83 | | -
|
84 | | -# Run a specific suite |
85 | | -mvn test -DsuiteXmlFile=testng.xml |
86 | 68 | ``` |
87 | 69 |
|
88 | | ---- |
89 | | - |
90 | | -## 📊 Reporting |
| 70 | +You can also run the suite from: |
91 | 71 |
|
92 | | -* **Default TestNG Reports:** Generated under `/test-output`. |
93 | | -* **Allure Reports (optional):** |
| 72 | +```text |
| 73 | +TestAutomationFramework/testrunner/testng.xml |
| 74 | +``` |
94 | 75 |
|
95 | | - ```bash |
96 | | - mvn allure:serve |
97 | | - ``` |
98 | | -* **Extent Reports (optional):** For detailed execution logs & screenshots. |
| 76 | +## Configuration Example |
99 | 77 |
|
100 | | ---- |
101 | | ---- |
| 78 | +```properties |
| 79 | +browser=firefox |
| 80 | +testurl=https://www.zoho.com/ |
| 81 | +``` |
102 | 82 |
|
103 | | -## 🎯 Highlights for Portfolio |
| 83 | +## Why This Project |
104 | 84 |
|
105 | | -* Demonstrates **mobile automation expertise** with Appium & Java. |
106 | | -* Showcases **reusable automation architecture** with POM & utilities. |
107 | | -* Ready for **cross-platform execution (Android/iOS)**. |
108 | | -* Includes **data-driven testing & structured reporting**. |
| 85 | +This project showcases my understanding of: |
109 | 86 |
|
110 | | -``` |
| 87 | +- Selenium-based web automation |
| 88 | +- Java test framework structuring |
| 89 | +- TestNG data providers and execution flow |
| 90 | +- Maintainable test configuration using external files |
| 91 | +- Building a reusable foundation for future automation scaling |
0 commit comments