Back to Marketplace
FREE
Unvetted
Make Money
Trending
Best Seller

Cucumber BDD Skill

>

2,150 total installs
323 this week
No reviews yet
2,150 installs
🤖 Claude Code Cursor💻 Codex🦞 OpenClaw
FREE

Free to install — no account needed

Copy the command below and paste into your agent.

Instant access • No coding needed • No account needed

What you get in 5 minutes

  • Full skill code ready to install
  • Works with 4 AI agents
  • Lifetime updates included
Secure2150+ users

Description

--- name: cucumber-skill description: > Generates Cucumber BDD tests with Gherkin feature files and step definitions in Java, JavaScript, or Ruby. Use when user mentions "Cucumber", "Gherkin", "Feature/Scenario", "Given/When/Then", "BDD". Triggers on: "Cucumber", "Gherkin", "BDD", "Feature file", "Given/When/Then", "step definitions". languages: - Java - JavaScript - Ruby - TypeScript category: bdd-testing license: MIT metadata: author: TestMu AI version: "1.0" --- # Cucumber BDD Skill ## Core Patterns ### Feature File (Gherkin) ```gherkin Feature: User Login As a registered user I want to log into the application So that I can access my dashboard Background: Given I am on the login page Scenario: Successful login When I enter "[email protected]" in the email field And I enter "password123" in the password field And I click the login button Then I should be redirected to the dashboard And I should see "Welcome" on the page Scenario: Invalid credentials When I enter "[email protected]" in the email field And I enter "wrongpass" in the password field And I click the login button Then I should see an error message "Invalid credentials" Scenario Outline: Login with various users When I enter "<email>" in the email field And I enter "<password>" in the password field And I click the login button Then I should see "<result>" Examples: | email | password | result | | [email protected] | admin123 | Dashboard | | [email protected] | password | Dashboard | | [email protected] | wrong | Error | ``` ### Step Definitions — Java ```java import io.cucumber.java.en.*; import static org.junit.jupiter.api.Assertions.*; public class LoginSteps { private LoginPage loginPage; private DashboardPage dashboardPage; @Given("I am on the login page") public void iAmOnTheLoginPage() { loginPage = new LoginPage(driver); loginPage.navigate(); } @When("I enter {string} in the email field") public void iEnterEmail(String email) { loginPage.enterEmail(email); } @When("I enter {string} in the password field") public void iEnterPassword(String password) { loginPage.enterPassword(password); } @When("I click the login button") public void iClickLogin() { dashboardPage = loginPage.clickLogin(); } @Then("I should be redirected to the dashboard") public void iShouldBeOnDashboard() { assertTrue(driver.getCurrentUrl().contains("/dashboard")); } @Then("I should see {string} on the page") public void iShouldSeeText(String text) { assertTrue(dashboardPage.getPageSource().contains(text)); } } ``` ### Step Definitions — JavaScript ```javascript const { Given, When, Then } = require('@cucumber/cucumber'); const { expect } = require('chai'); Given('I am on the login page', async function() { await this.page.goto('/login'); }); When('I enter {string} in the email field', async function(email) { await this.page.fill('#email', email); }); When('I click the login button', async function() { await this.page.click('button[type="submit"]'); }); Then('I should see {string} on the page', async function(text) { const content = await this.page.textContent('body'); expect(content).to.include(text); }); ``` ### Hooks ```java import io.cucumber.java.*; public class Hooks { @Before public void setUp(Scenario scenario) { driver = new ChromeDriver(); } @After public void tearDown(Scenario scenario) { if (scenario.isFailed()) { byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); scenario.attach(screenshot, "image/png", "failure-screenshot"); } driver.quit(); } } ``` ### Tags ```gherkin @smoke Feature: Login @critical @fast Scenario: Quick login ... @slow @regression Scenario: Full login flow ... ``` ```bash # Run by tag mvn test -Dcucumber.filter.tags="@smoke" mvn test -Dcucumber.filter.tags="@smoke and not @slow" ``` ### Anti-Patterns | Bad | Good | Why | |-----|------|-----| | UI details in Gherkin | Business language | Readability | | One step per line of code | Meaningful business steps | Abstraction | | No Background for shared steps | Use Background | DRY | | Imperative steps | Declarative steps | Maintainable | ### Cloud Execution on TestMu AI Set environment variables: `LT_USERNAME`, `LT_ACCESS_KEY` **Java:** ```java // CucumberHooks.java ChromeOptions browserOptions = new ChromeOptions(); HashMap<String, Object> ltOptions = new HashMap<>(); ltOptions.put("user", System.getenv("LT_USERNAME")); ltOptions.put("accessKey", System.getenv("LT_ACCESS_KEY")); ltOptions.put("build", "Cucumber Build"); ltOptions.put("name", scenario.getName()); ltOptions.put("platformName", "Windows 11"); ltOptions.put("video", true); browserOptions.setCapability("LT:Options", ltOptions); driver = new RemoteWebDriver(new URL("https://hub.lambdatest.com/wd/hub"), browserOptions); ``` **JavaScript:** ```javascript const driver = new Builder() .usingServer(`https://${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}@hub.lambdatest.com/wd/hub`) .withCapabilities({ browserName: 'chrome', 'LT:Options': { user: process.env.LT_USERNAME, accessKey: process.env.LT_ACCESS_KEY, build: 'Cucumber Build', platformName: 'Windows 11', video: true }}).build(); ``` ## Quick Reference | Task | Command | |------|---------| | Run all (Java) | `mvn test` with cucumber-junit-platform-engine | | Run all (JS) | `npx cucumber-js` | | Run tagged | `--tags "@smoke"` | | Dry run | `--dry-run` | | Generate snippets | Run undefined steps | ## Deep Patterns → `reference/playbook.md` | § | Section | Lines | |---|---------|-------| | 1 | Project Setup & Configuration | Maven, runner, rerun | | 2 | Feature Writing Patterns | Background, outlines, DataTable | | 3 | Step Definitions | Typed steps, DI injection | | 4 | Dependency Injection & Shared State | PicoContainer, ScenarioContext | | 5 | Hooks (Lifecycle Management) | Before/After ordering, screenshots | | 6 | Custom Parameter Types | Transformers, DocString | | 7 | Parallel Execution | Thread-safe, TestNG parallel | | 8 | Reporting | Allure, masterthought, JSON | | 9 | CI/CD Integration | GitHub Actions, tag matrix | | 10 | Debugging Quick-Reference | 10 common problems | | 11 | Best Practices Checklist | 13 items |

Preview in:

Security Status

Unvetted

Not yet security scanned

Related AI Tools

More Make Money tools you might like