{"id":29368340,"url":"https://github.com/omarelsheikh1/cucumber-todo-testing-framework","last_synced_at":"2026-05-02T18:40:14.832Z","repository":{"id":303429077,"uuid":"1014758276","full_name":"OmarElsheikh1/cucumber-todo-testing-framework","owner":"OmarElsheikh1","description":"BDD testing framework for a Todo app using Cucumber and Selenium WebDriver. Supports Chrome, Firefox, and Edge with a clean Page Object Model. Integrates TestNG for parallel test runs, uses simple config files for different environments, and automates user login and task creation.","archived":false,"fork":false,"pushed_at":"2025-07-07T14:58:43.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-07T15:53:11.954Z","etag":null,"topics":["cucumber","feature-test","java","maven","selenium","testng-framework"],"latest_commit_sha":null,"homepage":"https://todo.qacart.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OmarElsheikh1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-07-06T11:06:01.000Z","updated_at":"2025-07-07T14:58:47.000Z","dependencies_parsed_at":"2025-07-07T15:53:14.873Z","dependency_job_id":"2a85cfb2-6f47-415f-a0ae-84e582598f47","html_url":"https://github.com/OmarElsheikh1/cucumber-todo-testing-framework","commit_stats":null,"previous_names":["omarelsheikh1/cucumber-todo-testing-framework"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OmarElsheikh1/cucumber-todo-testing-framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarElsheikh1%2Fcucumber-todo-testing-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarElsheikh1%2Fcucumber-todo-testing-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarElsheikh1%2Fcucumber-todo-testing-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarElsheikh1%2Fcucumber-todo-testing-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OmarElsheikh1","download_url":"https://codeload.github.com/OmarElsheikh1/cucumber-todo-testing-framework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarElsheikh1%2Fcucumber-todo-testing-framework/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264456031,"owners_count":23611069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cucumber","feature-test","java","maven","selenium","testng-framework"],"created_at":"2025-07-09T12:12:46.715Z","updated_at":"2026-05-02T18:40:14.778Z","avatar_url":"https://github.com/OmarElsheikh1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🥒 Cucumber Todo Testing Framework\n\n[![Java](https://img.shields.io/badge/Java-21-blue?logo=java)](https://docs.oracle.com/en/java/javase/21/)\n[![Selenium](https://img.shields.io/badge/Selenium-4.0-green?logo=selenium)](https://www.selenium.dev/documentation/)\n[![Cucumber](https://img.shields.io/badge/Cucumber-BDD-brightgreen?logo=cucumber)](https://cucumber.io/docs)\n[![TestNG](https://img.shields.io/badge/TestNG-Testing-red)](https://testng.org/)\n\nA robust UI automation framework for the [QACart Todo App](https://todo.qacart.com) using Java, Selenium WebDriver, Cucumber, and TestNG. Follows the Page Object Model (POM), supports multi-browser execution, and is optimized for maintainability and CI/CD pipelines.\n\n---\n\n## ✨ Key Features\n\n- ✅ **BDD Approach**: Gherkin scenarios for business-readable tests\n- 🌐 **Cross-Browser**: Chrome/Firefox/Edge support\n- ⚙️ **Environment Configs**: Local/Staging/Production setups\n- 🧵 **Thread-Safe**: Parallel execution ready\n- 📊 **CI/CD**: GitHub Actions integration\n- 📄 **Logging**: Detailed execution logs\n\n---\n\n## 🧩 Project Structure\n\n```bash\n📁 src/test\n├── 📁 java\n│   └── 📁 com.qacart.todo\n│       ├── 📁 base        # Core WebDriver setup\n│       ├── 📁 factory     # Browser instantiation\n│       ├── 📁 hooks       # Test lifecycle management\n│       ├── 📁 pages       # POM classes (LoginPage, TodoPage)\n│       ├── 📁 runners     # TestNG cucumber runners\n│       ├── 📁 steps       # Gherkin step implementations\n│       └── 📁 utils       # Config helpers\n└── 📁 resources\n    ├── 📁 features       # Business scenarios\n    └── 📁 properties     # Environment configs\n```\n\n## ⚡ Quick Start\n\n### ✅ Prerequisites\n\n- Java 21+\n- Maven 3.8+\n\n### ▶️ Run Tests\n```bash\n# Default: Chrome + STAGING\nmvn clean test\n\n# Custom environment and browser\nmvn test -Dbrowser=firefox -Denv=PRODUCTION\n```\n\n---\n\n## 🔧 Configuration\n\n### 1. Environment Setup\n\nEdit properties in:\n```text\nsrc/test/resources/properties/\n├── local.properties\n├── staging.properties\n└── production.properties\n```\n\n### 2. Browser Management\n\nSupported browsers via `-Dbrowser` flag:\n```bash\nchrome | firefox | edge \n```\n\n---\n\n## 🧪 Sample Test\nFeature File `(user.feature)`:\n\n```gherkin\nFeature: User Features\n\n  Scenario: User should be able to login\n    Given User is at the login page\n    When User fill the email and password and login\n    Then Welcome message should be displayed\n```\n\nStep Definition:\n\n```  java\n@Given(\"User is at the login page\")\n    public void userIsAtTheLoginPage() throws IOException {\n\n        // Initialize the WebDriver using the DriverFactory\n        driver = DriverFactory.getDriver();\n\n        // Navigate to the login page of the application\n        new LoginPage(driver).load(EnvUtils.getInstance().getUrl() + \"/login\");\n    }\n@When(\"User fill the email and password and login\")\n    public void userFillTheEmailAndPassword() throws IOException {\n\n        // Log in to the application by using the LoginPage class\n        new LoginPage(driver).login(EnvUtils.getInstance().getEmail(), EnvUtils.getInstance().getPassword());\n    }\n\n@Then(\"Welcome message should be displayed\")\n    public void welcomeMessageShouldBeDisplayed() {\n\n        // Verify that the welcome message is displayed after login\n        boolean isWelcomeDisplayed = new TodoPage(driver).isWelcomeMessageDisplayed();\n        Assert.assertTrue(isWelcomeDisplayed, \"Welcome message is not displayed\");\n    }\n```\n\n---\n\n## 🚦 CI/CD Pipeline\nRuns on push to `master` branch (`.github/workflows/test.yml`):\n\n```yaml\non:\n  push:\n    branches: [\"main\"]\n\njobs:\n  test:\n    runs-on: windows-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: actions/setup-java@v3\n        with:\n          java-version: '21'\n      - uses: browser-actions/setup-chrome@latest\n      - run: mvn clean test\n```\n\n---\n\n## 📈 Reporting \u0026 Logging\n\n- HTML Reports: target/cucumber-reports/\n- Logs: logs/ via Log4j2\n\n``` properties\n# Sample log output\n[DEBUG] Initializing ChromeDriver...\n[INFO] Loading PRODUCTION environment\n```\n\n---\n\n## 💡 Best Practices\n\n1. Page Object Model (POM): Each page = single class\n2. Environment abstraction via EnvUtils\n3. Reusable steps: Modular, easy to maintain\n4. Parallel execution with ThreadLocal WebDriver\n\n--- \n\n## 📜 License\nDistributed under the MIT License. See the LICENSE file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomarelsheikh1%2Fcucumber-todo-testing-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomarelsheikh1%2Fcucumber-todo-testing-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomarelsheikh1%2Fcucumber-todo-testing-framework/lists"}