This framework provides a scalable, maintainable, mobile automation solution.
It is built using Appium, Java, and TestNG, following standard best practices:
- Page Object Model (POM) design pattern.
- Reusable Base classes for common actions.
- Clear naming conventions and consistent structure.
- Add an expense using the main expense button.
- Add an expense by selecting a category icon.
- Validate that the balance is updated after adding an expense.
- Add income using the main income button and select a category.
- Add income by selecting a category icon.
- Validate that the balance is updated after adding income.
- Navigate to Settings via the overflow menu.
- Change the currency from USD to EUR.
- Verify that the currency update reflects both in Settings and on the Home Page balance.
-
Page Object Model (POM):
Each app screen is represented by a Page Object class contains element locators and interaction methods. -
BasePage Abstraction:
Common methods (clicks, waits, number entry) are abstracted to theBasePageclass for reuse. -
Reusable Test Structure:
Test classes (AddExpenseTest,AddIncomeTest,SettingTest) focus only on test logic, not UI actions. -
Easy Configurations:
Appium driver capabilities are configured inBaseTest.javaand easily adjustable for different devices or emulators.
- Java JDK 11+
- Maven 3.6+
- Android SDK & Emulator or a real Android device
- Appium Server v2+
Install globally using:npm install -g appium
- Clone the project:
git clone https://github.com/yourusername/monefy-automation.git cd monefy-automation - Run:
mvn clean install
- Start Appium Server
- Run Appium in a separate terminal window:
appium
- Start Android Emulator (or connect a real device)
- Ensure your emulator/device is listed with:
adb devices
- Run Tests via Maven
- Execute all tests:
mvn clean test
monefy-automation
├── apk
│ └── monefy.apk # Monefy app APK
├── src
│ ├── main
│ │ └── java
│ │ └── pages
│ │ ├── BasePage.java
│ │ ├── ExpensePage.java
│ │ ├── HomePage.java
│ │ ├── IncomePage.java
│ │ ├── OnboardingPage.java
│ │ └── SettingsPage.java
│ └── test
│ └── java
│ └── tests
│ ├── AddExpenseTest.java
│ ├── AddIncomeTest.java
│ └── SettingTest.java
└── target
└── allure-report
