Cucumber BDD Skill
>
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
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 |
Security Status
Unvetted
Not yet security scanned
Related AI Tools
More Make Money tools you might like
Insert instructions below
FreeReplace with description of the skill and when Claude should use it.
Marketing Skills Division
Free"42 marketing agent skills and plugins for Claude Code, Codex, Gemini CLI, Cursor, OpenClaw, and 6 more coding agents. 7 pods: content, SEO, CRO, channels, growth, intelligence, sales. Foundation context + orchestration router. 27 Python tools (stdli
Engineering Team Skills
Free"23 engineering agent skills and plugins for Claude Code, Codex, Gemini CLI, Cursor, OpenClaw, and 6 more tools. Architecture, frontend, backend, QA, DevOps, security, AI/ML, data engineering, Playwright, Stripe, AWS, MS365. 30+ Python tools (stdlib-
Business & Growth Skills
Free"4 business growth agent skills and plugins for Claude Code, Codex, Gemini CLI, Cursor, OpenClaw. Customer success (health scoring, churn), sales engineer (RFP), revenue operations (pipeline, GTM), contract & proposal writer. Python tools (stdlib-onl
C-Level Advisory Ecosystem
Free"10 C-level advisory agent skills and plugins for Claude Code, Codex, Gemini CLI, Cursor, OpenClaw. CEO, CTO, COO, CPO, CMO, CFO, CRO, CISO, CHRO, Executive Mentor. Multi-role board meetings, strategy routing, structured recommendations. For founders
NotebookLM Automation
FreeComplete API for Google NotebookLM - full programmatic access including features not in the web UI. Create notebooks, add sources, generate all artifact types, download in multiple formats. Activates on explicit /notebooklm or intent like "create a p