π 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.
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.
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
- β 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
- β 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
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 Spanishgit clone https://github.com/CarlosArman/SeleniumBDD.git
cd SeleniumBDDMake 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:
./mvnw clean test -Dgroups="regression" -Dbrowser="edge"./mvnw verifyThe 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.shThis framework documents a reporting strategy based on the current Maven configuration:
- Cucumber HTML report generated through
maven-cucumber-reporting - Maven
verifyphase 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.shand the documentation to match the real output.
The framework is organized around separation of concerns:
features/β business-readable scenariossteps/β step definitionspages/β UI interaction abstractionhooks/β execution lifecycle and evidence handlingdata/β structured data supportutilities/β shared helpers and reusable logicprincipal/β execution entry points or runner classes
For full architecture details, see:
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.
- docs/COMMANDS.md β Commands reference (English)
- docs/COMMANDS.es.md β Commands reference (Spanish)
- docs/ENVIRONMENT.md β Environment guide (English)
- docs/ENVIRONMENT.es.md β Environment guide (Spanish)
- docs/ARCHITECTURE.md β Architecture guide (English)
- docs/ARCHITECTURE.es.md β Architecture guide (Spanish)
- CHANGELOG.md β Project changelog (English)
- CHANGELOG.es.md β Historial de cambios (EspaΓ±ol)
- CONTRIBUTING.md β Contribution guide (English)
- CONTRIBUTING.es.md β GuΓa de contribuciΓ³n (EspaΓ±ol)
- 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
Carlos R.
QA | Test Automation Engineer
π GitHub: https://github.com/CarlosArman
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.