This document serves as a comprehensive guide for using the AppiumAutomationDemo repository, tailored exclusively for Android mobile automation. It covers setup, framework architecture, and the benefits of adopting this solution for your projects.
- 👋 Introduction
- 🛠️ Framework Overview
- 🗂️ Repository Structure
- ⚙️ Setup Instructions
▶️ Running Tests- 🧩 Component Usage
- 🔌 Extending the Framework
- 🆘 Troubleshooting & FAQs
- 🤝 Contributing
- 📄 License
AppiumAutomationDemo is a modular, scalable automation framework built for Android mobile application testing using Appium. The framework is designed for easy onboarding, rapid test development, and maintainability.
Note: This repository focuses exclusively on Android automation. Components and configurations for iOS are not yet included or supported. 🟢🤖
- Appium 🟢: Industry-standard tool for automating Android mobile apps (native, hybrid, and web).
- Java ☕: Primary programming language for test scripting and framework components.
- TestNG 🧪: Popular Java testing framework for organizing and running test suites.
- Maven 📦: Dependency and build management tool.
- Android-Only Focus 🤖: Optimized for Android devices and emulators, reducing complexity.
- Modular Design 🧩: Uses Page Object Model (POM) and utility classes for reusable, maintainable code.
- Scalable 📈: Easily add new test cases or components without disrupting the existing structure.
- Comprehensive Reporting 📊: Generate detailed test reports with screenshots and execution logs.
- CI/CD Ready 🔄: Seamless integration with Jenkins, GitHub Actions, and other CI/CD tools.
- Community Support 🌐: Built on widely adopted tools for reliability and troubleshooting.
AppiumAutomationDemo/
├── src/
│ ├── main/
│ │ └── java/
│ │ ├── pages/ # Page Object Model classes (Android screens) 📄
│ │ ├── utils/ # Utility classes (driver management, actions, logging, configuration, readers) 🛎️
│ │ └── resources/ # Config files, test data 🗃️
│ └── test/
│ └── java/
│ ├── tests/ # Test case classes 📝
│ └── resources/ # Test-specific data/config 🗃️
├── pom.xml # Build configuration files 📦
├── README.md # Project documentation 📜
└── .github/ # GitHub workflow files for CI/CD 🤖
- Java JDK (version 21 or higher) ☕
- Node.js & npm 🟢
- Appium Server 🚀
- Android Studio (with emulator/device setup) 🤖
- Maven 📦
- Clone the repository:
git clone https://github.com/omarelbably/AppiumAutomationDemo.git cd AppiumAutomationDemo - Install dependencies:
- Using Maven:
mvn clean install
- Using Maven:
- Start Appium Server:
- Install Appium:
npm install -g appium
- Run Appium:
appium
- Install Appium:
- Update device and platform details in
src/main/resources/config.propertiesor relevant config files. - Specify Android capabilities (device name, platform version, app path, etc.) as needed for your local or CI environment.
- Using Maven:
mvn test
Contains all automated test cases, organized by feature or module. Test scripts interact with page objects and utilize utility classes.
Implements the Page Object Model for representing individual screens and user flows within your Android app.
Reusable helper classes for driver management, logging, configuration handling, and more.
- Add New Test Cases: Place new test classes under
src/test/java/tests/. 📝 - Add New Page Objects: Create new page classes in
src/main/java/pages/. 📄 - Enhance Utilities: Extend or add helper methods in
src/main/java/utils/. 🛎️ - Reporting: Configure additional reporting options in your build file or reporting utility. 📊
- Appium server not running: Ensure Appium is installed and started before test execution. 🚀
- Android device not detected: Verify device/emulator connection and update capability configuration. 🤖
- Build issues: Check Java, Node.js, and dependency versions for compatibility. ☕🟢
Pull requests are welcome! For major changes, please open an issue to discuss ideas first.
- Fork the repository 🍴
- Create your feature branch (
git checkout -b feature/fooBar) 🌱 - Commit your changes (
git commit -am 'Add new feature') 📝 - Push to the branch (
git push origin feature/fooBar) 🚀 - Open a Pull Request 🔃