Appearance
Wellysa Automation Tests
Mobile end-to-end test automation suite for the Wellysa Android application using Appium, Selenium, and Cucumber BDD framework.
Tech Stack
- Java: 21 (with preview features enabled)
- Build Tool: Maven 3.x
- Mobile Automation: Appium Java Client 9.4.0 + Selenium 4.32.0
- Test Framework: TestNG 7.11.0
- BDD Framework: Cucumber 7.22.1
- Reporting: ExtentReports Cucumber7 Adapter 1.14.0
- Logging: Apache Log4j 2.24.3
- Email Verification: Jakarta Mail 2.0.1 + MailSlurp Client 15.19.22
- CI/CD: Jenkins (via Docker Compose)
- Additional: Apache Commons Codec 1.18.0
Prerequisites
- Java Development Kit (JDK) 21 or higher
- Maven 3.6+ installed and configured
- Android SDK with appropriate platform tools
- Appium Server 2.x installed globally or managed programmatically
- Docker & Docker Compose (for Jenkins CI/CD setup)
- Android Emulator or physical device configured for testing
- Valid
config.propertiesfile insrc/main/resources/(for test parameters)
Installation
- Clone the repository:
bash
git clone https://github.com/Wellysa/wellysa-automation-tests.git
cd wellysa-automation-tests- Install Maven dependencies:
bash
mvn clean install -DskipTests- Configure test environment:
- Update
src/main/resources/config.propertieswith your test environment settings - Ensure Android emulator is created and accessible (or physical device connected)
- Start Appium server if not managed programmatically by the framework
- Update
Running Tests
Run all tests:
bash
mvn clean testRun specific test suite:
bash
mvn clean test -Dcucumber.filter.tags="@tag_name"Parallel execution:
Tests are configured to run in parallel (2 threads, method-level parallelization) via Maven Surefire Plugin. Configuration can be adjusted in pom.xml or testng.xml.
CI/CD with Jenkins:
bash
docker-compose up -dAccess Jenkins at http://localhost:8080. The Jenkinsfile in the root directory defines the pipeline configuration.
Project Structure
wellysa-automation-tests/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── enums/ # Enumerations (Gender, etc.)
│ │ │ └── utils/ # Core utilities and managers
│ │ │ ├── CapabilitiesManager.java
│ │ │ ├── DriverManager.java
│ │ │ ├── EmailHelper.java
│ │ │ ├── EmulatorManager.java
│ │ │ ├── GlobalParams.java
│ │ │ ├── PropertyManager.java
│ │ │ ├── ReportManager.java
│ │ │ ├── ServerManager.java
│ │ │ ├── TestLifecycleManager.java
│ │ │ ├── TestUtils.java
│ │ │ └── VideoManager.java
│ │ └── resources/
│ │ ├── config.properties # Test configuration
│ │ └── log4j2.xml # Logging configuration
│ └── test/
│ ├── java/
│ │ ├── pages/ # Page Object Model classes
│ │ │ ├── BasePage.java
│ │ │ ├── LoginPage.java
│ │ │ ├── MainPage.java
│ │ │ ├── NewAccountFormPage.java
│ │ │ ├── QuestionairePage.java
│ │ │ ├── ProductPurchasePage.java
│ │ │ ├── CommunicationAgreementPage.java
│ │ │ └── ConfirmationOfAccountCreationPage.java
│ │ ├── runners/ # Test runners
│ │ │ └── MyRunnerTest.java
│ │ ├── stepDefinitions/ # Cucumber step definitions
│ │ │ ├── Hooks.java
│ │ │ └── LoginStepDef.java
│ │ └── util/
│ │ └── DeviceMonitor.java
│ └── resources/ # Feature files & reporting config
│ ├── *.feature # BDD test scenarios
│ ├── extent-config.xml
│ └── extent.properties
├── pom.xml
├── docker-compose.yml
├── Jenkinsfile
└── README.mdTest Scenarios
The suite covers the following functional areas (based on Cucumber feature files):
- Login (
login.feature) — User authentication flows - Account Creation (
createAccount.feature) — New user registration process - Content Check (
contentCheck.feature) — UI content verification - Questionnaire (
fillQuestionare.feature) — Health questionnaire completion - Medical Test Results (
medicalTestResults.feature) — Test results viewing/interaction - Service Purchase (
purchaseService.feature) — Product/service purchasing flows
Reporting
Test execution reports are generated using ExtentReports Cucumber7 Adapter. Reports are available in the target/ directory after test execution:
- HTML reports:
target/ExtentReports/ - TestNG XML reports:
target/surefire-reports/ - Logs: Device-specific directories (e.g.,
Android_Pixel_9/Application.log)
Video recording capabilities are managed via VideoManager.java (configuration required in config.properties).
Key Features
- Page Object Model (POM) architecture for maintainability
- Parallel test execution (configurable thread count)
- Email verification support via MailSlurp integration
- Device monitoring utilities for test stability
- Emulator lifecycle management (start/stop automation)
- Appium server management (programmatic control)
- Comprehensive logging with Log4j2
- Video recording for failed test debugging (unverified — confirm configuration)
- Jenkins CI/CD integration ready
Configuration
Update src/main/resources/config.properties with environment-specific values:
- Platform name (Android/iOS)
- Device/emulator identifiers
- App package and activity names
- Appium server URL and port
- Test data and credentials
- Email verification settings (MailSlurp API key)
Troubleshooting
- Appium connection issues: Verify Appium server is running and accessible at configured URL
- Emulator startup failures: Check Android SDK installation and AVD configuration
- Parallel execution conflicts: Ensure multiple emulators/devices are available or reduce thread count
- Email verification timeouts: Verify MailSlurp API key validity and network connectivity
Contributing
(unverified — confirm with team)
License
(unverified — confirm with team)