{"id":27962168,"url":"https://github.com/cihat-kose/cucumber-practice-lessons","last_synced_at":"2026-04-22T04:32:06.471Z","repository":{"id":291272130,"uuid":"622016040","full_name":"cihat-kose/cucumber-practice-lessons","owner":"cihat-kose","description":"Created for QA learners: Realistic Cucumber BDD lessons using Selenium, TestNG and data-driven techniques with clear reporting and structure.","archived":false,"fork":false,"pushed_at":"2025-11-22T16:58:23.000Z","size":291,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-24T03:34:44.596Z","etag":null,"topics":["apache-poi","cucumber","java","java-selenium-testng-cucumber-maven","maven","selenium","testng","ui-test-automation"],"latest_commit_sha":null,"homepage":"http://zero.webappsecurity.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cihat-kose.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-31T22:34:18.000Z","updated_at":"2026-01-08T21:34:18.000Z","dependencies_parsed_at":"2025-06-04T14:23:35.446Z","dependency_job_id":"eff56e25-5522-498d-93d9-11467d15d67f","html_url":"https://github.com/cihat-kose/cucumber-practice-lessons","commit_stats":null,"previous_names":["cihat-kose/cucumber-practice-lessons"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cihat-kose/cucumber-practice-lessons","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cihat-kose%2Fcucumber-practice-lessons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cihat-kose%2Fcucumber-practice-lessons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cihat-kose%2Fcucumber-practice-lessons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cihat-kose%2Fcucumber-practice-lessons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cihat-kose","download_url":"https://codeload.github.com/cihat-kose/cucumber-practice-lessons/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cihat-kose%2Fcucumber-practice-lessons/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32120940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-poi","cucumber","java","java-selenium-testng-cucumber-maven","maven","selenium","testng","ui-test-automation"],"created_at":"2025-05-07T19:14:37.380Z","updated_at":"2026-04-22T04:32:06.447Z","avatar_url":"https://github.com/cihat-kose.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cucumber Practice Lessons\n\n![Cucumber](https://img.shields.io/badge/Cucumber-23D96C?style=for-the-badge\u0026logo=cucumber\u0026logoColor=white)\n![Selenium](https://img.shields.io/badge/Selenium-43B02A?style=for-the-badge\u0026logo=selenium\u0026logoColor=white)\n![TestNG](https://img.shields.io/badge/TestNG-FF7300?style=for-the-badge\u0026logo=testng\u0026logoColor=white)\n![Maven](https://img.shields.io/badge/Maven-C71A36?style=for-the-badge\u0026logo=apache-maven\u0026logoColor=white)\n![Java](https://img.shields.io/badge/Java-ED8B00?style=for-the-badge\u0026logo=java\u0026logoColor=white)\n\n## Table of Contents\n1. [About the Project](#about-the-project)\n2. [Key Benefits](#key-benefits)\n3. [Features](#features)\n4. [Application Under Test](#application-under-test)\n5. [Reporting](#reporting)\n6. [Installation](#installation)\n7. [Configuration](#configuration)\n8. [Usage](#usage)\n9. [Parallel Testing](#parallel-testing)\n10. [Folder Structure](#folder-structure)\n11. [Dependencies](#dependencies)\n12. [Contributing](#contributing)\n13. [License](#license)\n14. [Contact](#contact)\n\n## About the Project\n\nThis repository contains step-by-step lessons for automating the [ZeroBank demo site](http://zero.webappsecurity.com) using **Selenium WebDriver**, **Cucumber**, and **TestNG**. It demonstrates common UI automation tasks such as logging in, adding payees and buying foreign currency. The examples follow the Page Object Model (POM) pattern and integrate data-driven testing with Apache POI.\n\n## Key Benefits\n\n- **Hands-On Practice** – Small scenarios focusing on essential automation concepts.\n- **Behavior-Driven Development** – Feature files written in Gherkin provide clear, readable requirements.\n- **Data-Driven** – Test data can be pulled from Excel files, and test results are logged back for tracking.\n- **Rich Reporting** – Generates HTML, JSON, and ExtentReports output for easy analysis.\n\n## Features\n\n- **Login** – Validates login both with inline data and with credentials pulled from `ZeroBankData.xlsx`.\n- **Add New Payee** – Demonstrates a data table with multiple payee inputs.\n- **Purchase Foreign Currency** – Exercises the currency conversion workflow for several currencies.\n- **Hooks and Utilities** – Capture screenshots on failure and record scenario results in Excel.\n\n## Application Under Test\n\nThe lessons use the [ZeroBank demo application](http://zero.webappsecurity.com/login.html) to practice common banking tasks such as account login, paying bills and purchasing foreign currency.\n\n## Reporting\n\n- **Pretty Output** – All TestNG runners include the `pretty` plugin for clean console logs.\n- **HTML/JSON Reports** – `TestRunnerSmokeWithHtmlAndJson` outputs HTML and JSON files in `target/reports`.\n- **Extent Reports** – `TestRunnerExtentReport` creates a rich interactive report under `testReports/`.\n- **Excel Logging** – `Hooks` writes scenario names, status and browser to `ScenarioResults.xlsx`.\n\n## Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone \u003crepository-url\u003e\n   ```\n2. **Install Java and Maven** – Java 21 and Maven must be available on your `PATH`.\n3. **Download WebDriver binaries** for the browsers you wish to test (e.g. ChromeDriver or GeckoDriver) and ensure they are on the `PATH`.\n\n## Configuration\n\n- **extent.properties**\n  ```properties\n  extent.reporter.spark.start=true\n  extent.reporter.spark.out=test-output/SparkReport/Spark.html\n  ```\n- Adjust browser selection in `DriverManager.java` if you want a different default.\n\n## Usage\n\nRun any of the runner classes with Maven:\n```bash\nmvn test -Dtest=TestRunnerAll\n```\nOther available runners: `TestRunnerSmoke`, `TestRunnerRegression`, `TestRunnerWithPlugin`, `TestRunnerSmokeWithHtmlAndJson`, and `TestRunnerExtentReport`.\n\n## Parallel Testing\n\nTestNG XML files (e.g. `ParallelTest.xml`) can be used for parallel execution. Right‑click the XML in your IDE and run it to start tests on multiple browsers.\n\n## Folder Structure\n\n```\nsrc/test/java\n├── apachePOI/       # Excel data files\n├── features/        # Gherkin feature files\n├── pages/           # Page Object classes\n├── runners/         # TestNG runner classes\n├── stepDefinitions/ # Glue code for features\n└── utilities/       # Driver and Excel helpers\nsrc/test/resources\n└── extent.properties\n```\nExtent reports and HTML outputs are stored under `testReports/`, `target/`, or `test-output/`.\n\n## Dependencies\n\nDependencies are declared in `pom.xml`, including Selenium, Cucumber, TestNG, Apache POI and ExtentReports.\n\n## Contributing\n\n1. Fork the project.\n2. Create a new branch (`git checkout -b feature-branch`).\n3. Commit your changes (`git commit -m 'Add feature'`).\n4. Push and open a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE).\n\n## Contact\n\nPlease open an issue for any questions or feedback.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcihat-kose%2Fcucumber-practice-lessons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcihat-kose%2Fcucumber-practice-lessons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcihat-kose%2Fcucumber-practice-lessons/lists"}