Skip to content

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.properties file in src/main/resources/ (for test parameters)

Installation

  1. Clone the repository:
bash
git clone https://github.com/Wellysa/wellysa-automation-tests.git
cd wellysa-automation-tests
  1. Install Maven dependencies:
bash
mvn clean install -DskipTests
  1. Configure test environment:
    • Update src/main/resources/config.properties with 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

Running Tests

Run all tests:

bash
mvn clean test

Run 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 -d

Access 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.md

Test 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)

Wellysa Consigliere — internal use only.