Skip to content

CarlosArman/SeleniumBDD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SeleniumBDD Automation Framework

Version Architecture Selenium Cucumber Maven JUnit 6 Java 17 POM E2E Portfolio Ready

🌐 Language / Idioma

πŸ‡¬πŸ‡§ English Β  | Β  πŸ‡ͺπŸ‡Έ EspaΓ±ol

Java-based QA automation framework built with Selenium + Cucumber + JUnit 6, designed to demonstrate maintainable UI test architecture, Maven-driven execution, and bilingual documentation suitable for technical review and portfolio presentation.


🎯 Why This Project Matters

This repository is designed as a QA Automation portfolio project that demonstrates more than automated UI checks. It highlights how to structure a maintainable Selenium-based framework with clear execution flow, reusable automation design, and documentation that reflects engineering discipline.

It demonstrates practical QA automation concepts such as:

  • BDD with Cucumber for readable business scenarios
  • Page Object Model (POM) for maintainability and separation of concerns
  • Maven-driven execution for predictable local and CI-oriented runs
  • Structured reporting through maven-cucumber-reporting
  • Bilingual documentation for broader readability and stronger repository presentation
  • Framework evolution awareness, including the migration from JUnit 5 to JUnit 6

This project demonstrates QA automation best practices with Java, Selenium, Cucumber, and JUnit, including maintainable architecture, reusable automation design, clear documentation, and framework scalability.


πŸš€ Project Overview

This repository contains an end-to-end UI automation framework implemented with:

  • Java 17
  • Selenium WebDriver
  • Cucumber JVM
  • JUnit 6
  • Maven
  • maven-cucumber-reporting
  • Page Object Model (POM)
  • Reusable utilities, hooks, and structured project organization

πŸ”— Repository: https://github.com/CarlosArman/SeleniumBDD


✨ What This Framework Demonstrates

Engineering Practices

  • βœ… Page Object Model architecture
  • βœ… BDD-oriented scenario structure with Cucumber
  • βœ… Maven Wrapper-based execution
  • βœ… JUnit Platform execution with JUnit 6 dependencies
  • βœ… Report generation during Maven verify
  • βœ… Separation between hooks, pages, steps, data, and utilities
  • βœ… Bilingual documentation for maintainability and portfolio clarity

QA Portfolio Value

  • βœ… Maintainable automation design
  • βœ… Practical reporting strategy
  • βœ… Clear execution approach with Maven lifecycle integration
  • βœ… Documented framework evolution from JUnit 5 to JUnit 6
  • βœ… Clean project organization and cross-referenced documentation
  • βœ… Repository structure ready to grow into CI/CD workflows

πŸ— Project Structure

SeleniumBDD
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   └── test/
β”‚       β”œβ”€β”€ java/
β”‚       β”‚   β”œβ”€β”€ data/         # Test data readers, builders, and structured input helpers
β”‚       β”‚   β”œβ”€β”€ hooks/        # Lifecycle hooks, setup/teardown, and evidence handling
β”‚       β”‚   β”œβ”€β”€ modelos/      # Domain models used by the automation flows
β”‚       β”‚   β”œβ”€β”€ pages/        # Page Object Model classes and reusable UI interactions
β”‚       β”‚   β”œβ”€β”€ principal/    # Runner or bootstrap classes for execution
β”‚       β”‚   β”œβ”€β”€ steps/        # Step definitions that map Gherkin steps to automation logic
β”‚       β”‚   └── utilities/    # Helpers, waits, logging, and support logic
β”‚       └── resources/
β”‚           β”œβ”€β”€ features/     # Gherkin feature files and business-readable scenarios
β”‚           β”œβ”€β”€ data/         # External test data files
β”‚           └── junit-platform.properties
β”œβ”€β”€ .mvn/                     # Maven Wrapper support files
β”œβ”€β”€ docs/                     # Additional project documentation
β”œβ”€β”€ runSuite.sh               # Example local execution script
β”œβ”€β”€ openReport.sh             # Example script to open the generated report
β”œβ”€β”€ pom.xml                   # Project dependencies, plugins, and execution configuration
β”œβ”€β”€ CHANGELOG.md              # Project changelog in English
β”œβ”€β”€ CHANGELOG.es.md           # Historial de cambios en EspaΓ±ol
β”œβ”€β”€ CONTRIBUTING.md           # Contribution guide in English
β”œβ”€β”€ CONTRIBUTING.es.md        # GuΓ­a de contribuciΓ³n en EspaΓ±ol
β”œβ”€β”€ README.md                 # Main documentation in English
└── README.es.md              # Main documentation in Spanish

βš™ Quick Start

1. Clone the repository

git clone https://github.com/CarlosArman/SeleniumBDD.git
cd SeleniumBDD

2. Validate prerequisites

Make sure you have:

  • JDK 17
  • JAVA_HOME configured
  • Maven Wrapper available from the repository
  • A valid browser driver strategy (drivers on PATH, a driver manager approach, or an equivalent local setup)

For environment details, see:

3. Run tests

./mvnw clean test -Dgroups="regression" -Dbrowser="edge"

4. Generate the report

./mvnw verify

β–Ά Main Commands

The primary README should expose only the most important commands. For the full catalog, see docs/COMMANDS.md and docs/COMMANDS.es.md.

./mvnw clean test -Dgroups="regression" -Dbrowser="edge"
./mvnw verify
./runSuite.sh
./openReport.sh

πŸ“Š Reporting and Evidence

This framework documents a reporting strategy based on the current Maven configuration:

  • Cucumber HTML report generated through maven-cucumber-reporting
  • Maven verify phase used as the report generation step
  • Report output directory under target/site
  • Report project name configured as SeleniumBDD Automation Framework
  • Consistent evidence strategy expected through hooks/utilities when implemented

Expected HTML report path:

target/site/cucumber-html-reports/overview-features.html

If the effective generated file differs in your local run, update openReport.sh and the documentation to match the real output.


🧠 Architecture Snapshot

The framework is organized around separation of concerns:

  • features/ β†’ business-readable scenarios
  • steps/ β†’ step definitions
  • pages/ β†’ UI interaction abstraction
  • hooks/ β†’ execution lifecycle and evidence handling
  • data/ β†’ structured data support
  • utilities/ β†’ shared helpers and reusable logic
  • principal/ β†’ execution entry points or runner classes

For full architecture details, see:


πŸ”— Related Project

If you would like to see a related automation project built in another ecosystem, check out:

A related QA automation project implemented with:

  • Playwright
  • Cucumber
  • TypeScript
  • Allure Report
  • Page Object Model (POM)

This helps demonstrate the same automation mindset across different stacks: Java + Selenium + Cucumber + JUnit 6 in this repository and TypeScript + Playwright + Cucumber in the related one.


πŸ“š Documentation Index

Core docs

Repository docs


πŸ›£ Roadmap

  • Strengthen CI/CD integration
  • Refine reporting and evidence publication
  • Clarify runtime parameter handling for browser and execution grouping
  • Improve reusable automation modules and data support
  • Expand documentation as implementation details evolve

πŸ‘¨β€πŸ’» Author

Carlos R.
QA | Test Automation Engineer

πŸ”— GitHub: https://github.com/CarlosArman


⭐ Final Note

This project is intentionally documented and organized to reflect not only test automation capability, but also engineering maturity in QA automation design, including maintainable structure, reporting awareness, documentation discipline, and clear framework evolution.

About

End-to-end QA automation framework designed to demonstrate maintainable test architecture, Maven-driven execution, and structured reporting with Java, Selenium, Cucumber, and JUnit 6.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages