npx skills add https://github.com/sickn33/agentic-awesome-skills
lambdatest/agent-skills
cucumber-skill
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".
Installation
npx skills add lambdatest/agent-skills --skill cucumber-skill
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsConfigure Azure API Management as an AI Gateway for AI models, MCP tools, and agents. WHEN: sem…
566.3K installsAzure VM/VMSS router. WHEN: create / provision / deploy / spin-up VM, recommend VM size, compar…
510K installsPostgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill …
391.6K installsPrisma ORM CLI commands reference covering init, generate, migrate, db, dev, complete, studio, …
267K installsUse when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge F…
263K installsAlso in this package
Other skills from lambdatest/agent-skills · top by installs.
npx skills add lambdatest/agent-skills
More details
Agent compatibility
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Also listed on
Alternate registries and mirrors of this skill.
Repository health
main
Skill metadata
Parsed from SKILL.md frontmatter.
More metadata
- author
- TestMu AI
- version
- 1.0
Package contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md6,547 B -
docs
SUMMARY.md317 B
History
- First seen on skills.sh
- First recorded snapshot · 227 installs
SKILL.md
Cucumber BDD Skill
Core Patterns
Feature File (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
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
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
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
@smoke
Feature: Login
@critical @fast
Scenario: Quick login
...
@slow @regression
Scenario: Full login flow
...
# 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: LTUSERNAME, LTACCESS_KEY
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:
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 |