← All projects

Featured project 1 · Java · UI, API, database

Enterprise Test Automation Framework

A production-style test automation platform: UI, API, database, integration and end-to-end tests of one application, with parallel execution, evidence-rich reporting, Docker + Selenium Grid and GitHub Actions pipelines.

Live CI status of Enterprise Test Automation Framework

View source code View documentation View latest CI runs View test report

Purpose

Shows how a test platform for a real product is designed, built, documented and operated, not just a test suite. It tests ShopEase Admin, a small shop back office kept in the same repository, so one business record can be checked through the UI, the REST API and the database. It is a portfolio project, not a framework running in a company.

Technology stack

AreaTools
Language / buildJava 17, Maven (multi-module)
Test runnerTestNG 7.12
UISelenium 4 (local and Selenium Grid)
APIREST Assured 6, Jackson, JSON Schema validation
DatabaseJDBC (H2), parameterised queries
Assertions / dataAssertJ, Datafaker, JSON and CSV files
Logging / reportingSLF4J + Logback per thread and test; Allure 3
ContainersDocker, docker compose, Selenium Grid (hub + Chrome, Firefox, Edge nodes)
CI/CDGitHub Actions, Dependabot, dependency review, Checkstyle

Architecture overview

Layers depend downwards only: tests contain no Selenium, HTTP or SQL. The repository documents the architecture in docs/architecture.md and 21 architecture decision records in docs/adr.

Layers and responsibilities

LayerResponsibilityExamples
TestsWhat is checked, in business terms; no Selenium, HTTP or SQLtests/api, tests/ui, tests/db, tests/integration, tests/e2e
Pages, API services, DB queriesOne class per screen, API resource or query area; the only place that knows locators, endpoints and SQLpage objects, service objects, query classes
Components and clientsReusable UI components, the REST client, the query executor, waits on real stateApiClient, QueryExecutor, components
Driver and configurationBrowser per thread (local or Grid), layered configuration, secrets from the environmentDriverFactory, configuration loader
Execution and evidenceRetry policy for infrastructure failures, logging, Allure steps and attachmentslisteners, SecretMasker, Allure

Configuration and execution

Settings are layered: defaults, an environment (-Denv=qa), then system properties, so the same tests run on a laptop, in Docker, against Grid or in CI without edits. Examples: -Dbrowser=firefox, -Dthreads=4, -Dsuite=smoke, -Dexecution=remote -Dgrid.url=....

Parallel execution: one browser per thread, unique data per test, per-thread clean-up and logs; the full suite took about 242 s serial, 171 s with 2 threads and 148 s with 4 (clean clone).

Retries: only transient infrastructure failures (browser start-up, lost sessions, refused connections) are retried, for test methods and for browser start-up; assertion failures and wait timeouts never are, and every retry is visible in the report.

Reporting: Allure shows every UI action, API call (request and response attached) and SQL query as a step; failed UI tests get screenshot, URL, page source and browser console; failures are categorised (configuration, infrastructure, timeout, authentication, database, UI, API, assertion); logs mask secrets.

Key engineering decisions

Implemented features

Setup and execution

mvn clean test                                   # full suite, local app, Chrome
mvn clean test -Dsuite=smoke -Dheadless=true     # one suite
mvn clean test -Dbrowser=firefox -Dthreads=4     # another browser, 4 threads
docker compose -f docker/docker-compose.yml up --build --abort-on-container-exit --exit-code-from tests

Requirements: JDK 17+, Maven 3.9+, Chrome or Edge; Node.js for the Allure CLI. Full instructions in the README.

Sample test results

Allure overview of a smoke run
Allure overview of a smoke run with one deliberately failing demo check.
Selenium Grid console with Chrome, Firefox and Edge nodes
The Docker Selenium Grid used by the nightly run.

CI workflow

Five workflows: CI on pull requests (compile with warnings as errors, Checkstyle, unit tests, smoke, dependency review), Main on every push (API, UI, smoke on Edge), Nightly (full suite on Chrome, regression on Firefox and Edge, and regression on Docker + Grid), plus report publishing and a manual suite runner.

Nightly workflow with every job green
A nightly run: every job green, including Docker + Selenium Grid.

Known limitations and future improvements

Limitations

Next steps