How to create cucumber BDD framework from scratch: Practical example

In this post, I’ll walk you through the complete workflow of my Cucumber BDD Framework project, which I developed to automate test scenarios for the website Automation Practice. You can explore the full project here: GitHub Repository .

1. Project Overview

This project is a hybrid automation framework based on Cucumber BDD using Java, Selenium WebDriver, and Maven. It supports Page Object Model (POM), and integrates with Jenkins CI/CD and GitHub for version control.

2. Folder Structure

📋 Folder Summary Table

Folder/File Purpose
.vscode/IDE-specific settings and preferences.
.mvn/Maven runtime configurations.
src/main/java/comCore reusable framework classes.
factory/WebDriver setup and initialization.
pages/Page Object Model (POM) design classes.
utilities/Helper functions and utilities.
src/test/java/Step definitions, hooks, and test runners.
resources/comFeature files and test configurations.
target/Compiled outputs and reports (auto-generated).
test-output/Execution reports and logs.
pom.xmlDependency and build management (Maven).
README.mdDocumentation for GitHub viewers.

3. Key Dependencies (pom.xml)

<dependencies>
  <dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>7.11.0</version>
  </dependency>
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.12.1</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
  </dependency>
</dependencies>

Maven handles dependency management, test execution, and report generation through the maven-surefire-plugin.

4. Cucumber BDD Workflow

  1. Business requirements are written as Gherkin feature files under src/test/resources/com/features.
  2. Each scenario is linked to a corresponding Step Definition class in stepDefinitions/.
  3. Step definitions interact with Page Objects to perform UI actions using Selenium.
  4. Hooks initialize the browser before tests and close it afterward.
  5. Reports are generated automatically post-execution.

5. CI/CD Integration (Jenkins + GitHub)

The project integrates with Jenkins using a webhook from GitHub. Whenever code is pushed to the repository:

  • GitHub triggers a Jenkins build automatically.
  • Maven downloads dependencies and runs Cucumber tests.
  • Jenkins publishes HTML/JSON reports.

This setup ensures Continuous Integration and Continuous Testing for each code change.

6. Reports

Reports are generated using the Cucumber HTML Plugin and stored under the reports/ directory. These reports summarize scenario execution status, steps passed/failed, and screenshots for failed cases.

7. Version Control (GitHub)

The entire project is version-controlled with Git. Typical commands used during workflow:

git init
git add .
git commit -m "Initial Cucumber BDD setup"
git push origin main

8. Conclusion

This project demonstrates a professional-level Cucumber BDD automation framework integrating all key QA components — from test design to CI/CD. You can explore and clone the complete framework from my GitHub repository:

9. Flow Diagram

👉 GitHub: AutomationPracticeWebsiteCucumberProject

---

Comments

Popular posts from this blog

Difference Between Smoke, Sanity & Regression Testing (With Examples)

Top 10 Selenium Interview Questions and Answers for QA Engineers (2025 Update)

How Selenium Works for Web Automation