Skip to content

TestlumFramework/Demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Testlum DEMO APP

Testlum Image Status

Image Linux amd64 Linux arm64 Windows amd64 Branch Last Updated Mobile Tests
latest main 2026/03/20
1.0.2 main 2026/03/20

A comprehensive end-to-end testing application that serves as both a test target and a validation suite for the Testlum testing framework.

Overview

The project consists of three main components:

  • TEST-API — Spring Boot backend exposing REST, GraphQL, and WebSocket endpoints across multiple integrations
  • TEST-UI — Vue 3 frontend dashboard used as a target for UI automation tests
  • REGRESSION — Testlum-based test suite covering all supported integration types

Tech Stack

Layer Technologies
Frontend Vue 3, Vite, TypeScript, Tailwind CSS, CoreUI
Backend Spring Boot 2.5.4, Spring Security, Spring Data
Databases PostgreSQL, MySQL, Oracle, ClickHouse, MongoDB, DynamoDB
Caching Redis
Message Queues Kafka, RabbitMQ, AWS SQS
Cloud AWS (Lambda, S3, DynamoDB, SQS, SES) via LocalStack
APIs REST, GraphQL, WebSocket
Testing Testlum Framework, Selenium Grid
Infrastructure Docker, Docker Compose, HashiCorp Vault
Authentication JWT, Basic Auth

Prerequisites

  • Docker and Docker Compose
  • (Optional) Android emulator for mobile testing

Running the Application

A single script orchestrates the full stack:

./run-app

This will:

  1. Validate Docker is installed and running
  2. Create the e2e_network Docker network
  3. Start all integration services (databases, queues, cloud emulators)
  4. Initialize HashiCorp Vault
  5. Start Selenium Grid
  6. Build and start TEST-API and TEST-UI

To also launch the Android emulator for mobile testing:

./run-app --mobile
# or
./run-app -m

Project Structure

mega-test-app/
├── TEST-API/          # Spring Boot backend
├── TEST-UI/           # Vue 3 frontend
├── REGRESSION/        # Testlum test suite
│   └── resources/
│       ├── scenarios/ # Test scenario definitions (XML)
│       ├── locators/  # UI element locators
│       ├── data/      # Test data (JSON)
│       └── config/    # Execution configurations
├── docker/            # Docker Compose files and init scripts
├── run-app            # Main orchestration script
└── run-android-device # Android emulator setup

Test Coverage

The REGRESSION suite covers:

  • HTTP — REST APIs, Basic Auth, JWT, GraphQL, WebSocket, multipart uploads
  • Databases — MySQL, PostgreSQL, Oracle, ClickHouse, MongoDB, DynamoDB
  • Message Queues — Kafka, RabbitMQ, SQS
  • Storage — Redis, S3
  • UI — Web browser, mobile browser, native Android
  • Mail — SendGrid, SES, SMTP, Twilio
  • Shell — Shell command execution
  • Core — Conditions, assertions, variables, data variations

Integration Services

The following services are started via Docker Compose:

Service Purpose
PostgreSQL (×2) Relational DB and auth DB
MySQL Relational DB
Oracle XE 18.4 Relational DB
MongoDB 4.2 Document store
Elasticsearch 7.12 Search engine
ClickHouse Analytics DB
Redis 7 Cache / key-value store
DynamoDB Local AWS DynamoDB emulator
Kafka Message streaming
RabbitMQ 3.6 Message broker
LocalStack AWS services (Lambda, S3, SQS, SES)
HashiCorp Vault Secrets management
Selenium Grid Distributed browser automation

Running Tests

Test execution is configured via XML files in REGRESSION/resources/config/:

  • config-local.xml — Local development execution
  • config-ci-regression.xml — CI pipeline execution
  • config-ci-regression-mobile.xml — Mobile CI execution

run-regression script

The run-regression script runs the Testlum Docker container against the local test resources.

Usage:

./run-regression

By default it uses the pre-defined values:

  • Image: ghcr.io/testlumframework/testlum
  • Config: -c=config-local.xml
  • Path: -p=<project-root>/REGRESSION/resources

To use dynamic arguments, edit the script and switch to the commented-out dynamic params section, then call:

./run-regression <image-name> -c=<config>.xml -p=<path-to-resources>

Arguments:

# Argument Format Description
1 Docker image name <image>:<tag> Testlum Docker image to run
2 Config file -c=<file>.xml or --config=<file>.xml Test configuration file
3 Path to resources -p=<path> or --path=<path> Path to the REGRESSION/resources directory

Example:

./run-regression testlum:1.0.2 -c=config-local.xml -p=/home/user/mega-test-app/REGRESSION/resources

The script validates that Docker is running, all arguments are in the correct format, and the specified resources path exists before launching the container.

Building Individually

Backend (TEST-API):

cd TEST-API
mvn clean package

Frontend (TEST-UI):

cd TEST-UI
pnpm install
pnpm dev      # development server
pnpm build    # production build