Skills Plugins MCP Prompt Model 博客 我的中心
Development #javascript

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".

DeepseekModel Curated skill Quality Excellent · 78 v1.0.0

Get

https://deepseekmodel.com/api/download.php?id=lambdatest-agent-skills-cucumber-skill-skill-md&format=skill
Download .skill Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
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) 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 "user@test.com" 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 "wrong@test.com" 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 | | admin@test.com | admin123 | Dashboard | | user@test.com | password | Dashboard | | bad@test.com | 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: LT_USERNAME , LT_ACCESS_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
Keywords that activate this skill. Click one to copy it.

This skill does not provide trigger words.

The downloaded .skill package contains the following fields.
Field Description
formatFormat tag (skill/v1)
skill_idUnique skill ID
nameSkill name
versionVersion
descriptionDescription
categoryCategories (array)
trigger_wordsTrigger words
tagsTags
sourceSource
source_urlSource URL (this page)
exported_atExported at (set per download)
system_promptSystem prompt body
model_configModel config: provider / model / temperature / max_tokens / top_p
examplesExamples
install_guideImport guide for Coze / Dify / Claude / custom frameworks
The same skill can be exported in different platform formats.
.skill Standard format with system_prompt and model_config, ready for any agent framework Download
.skillpro Enhanced format with scripts, tools, dependencies and hooks Download
.json Plain JSON export with system_prompt and model parameters only Download
Coze Markdown with frontmatter, for Coze platform import Download
Dify Dify DSL, import directly after creating an app Download

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。