<< All versions
Deep Patterns →
Skill v1.0.1
currentLLM-judged scan95/100lambdatest/agent-skills/cucumber-skill
1 files
──Details
PublishedAugust 9, 2026 at 09:12 PM
Content Hashsha256:3348b02aaaf9ff00...
Git SHA0491a3a29aa1
Bump Typepatch
──Files
Files (1 file, 6.4 KB)
SKILL.md6.4 KBactive
SKILL.md · 234 lines · 6.4 KB
version: "1.0.1" 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 LoginAs a registered userI want to log into the applicationSo that I can access my dashboardBackground:Given I am on the login pageScenario: Successful loginWhen I enter "user@test.com" in the email fieldAnd I enter "password123" in the password fieldAnd I click the login buttonThen I should be redirected to the dashboardAnd I should see "Welcome" on the pageScenario: Invalid credentialsWhen I enter "wrong@test.com" in the email fieldAnd I enter "wrongpass" in the password fieldAnd I click the login buttonThen I should see an error message "Invalid credentials"Scenario Outline: Login with various usersWhen I enter "<email>" in the email fieldAnd I enter "<password>" in the password fieldAnd I click the login buttonThen I should see "<result>"Examples:| email | password | result || admin@test.com | admin123 | Dashboard || user@test.com | password | Dashboard || bad@test.com | 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 {@Beforepublic void setUp(Scenario scenario) {driver = new ChromeDriver();}@Afterpublic 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
@smokeFeature: Login@critical @fastScenario: Quick login...@slow @regressionScenario: Full login flow...
bash
# Run by tagmvn 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.javaChromeOptions 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 |