agentsclimarketplace

Behat skill

Skill Pyfagorass/bookofspells/skills/lambdatest/behat-skill

Generates Behat BDD tests for PHP with Gherkin feature files and MinkContext for browser testing. Use when user mentions "Behat", "PHP BDD", "Mink", "behat.yml". Triggers on: "Behat", "PHP BDD", "Mink", "behat.yml", "FeatureContext PHP".From its SKILL.md

Install
npx -y skills add Pyfagorass/bookofspells --skill behat-skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.7 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

Behat BDD Skill

Core Patterns

Feature File (features/login.feature)

Feature: User Login
  As a user I want to log in

  Scenario: Successful login
    Given I am on "/login"
    When I fill in "email" with "[email protected]"
    And I fill in "password" with "password123"
    And I press "Login"
    Then I should see "Dashboard"
    And I should be on "/dashboard"

  Scenario: Invalid credentials
    Given I am on "/login"
    When I fill in "email" with "[email protected]"
    And I fill in "password" with "wrong"
    And I press "Login"
    Then I should see "Invalid credentials"

Custom Context (features/bootstrap/LoginContext.php)

<?php
use Behat\MinkExtension\Context\MinkContext;
use Behat\Behat\Context\Context;

class LoginContext extends MinkContext implements Context
{
    /**
     * @When I login as :email with password :password
     */
    public function iLoginAs(string $email, string $password): void
    {
        $this->visit('/login');
        $this->fillField('email', $email);
        $this->fillField('password', $password);
        $this->pressButton('Login');
    }

    /**
     * @Then I should see the dashboard
     */
    public function iShouldSeeTheDashboard(): void
    {
        $this->assertSession()->addressEquals('/dashboard');
        $this->assertSession()->pageTextContains('Welcome');
    }

    /**
     * @Then the response time should be under :ms milliseconds
     */
    public function responseUnder(int $ms): void
    {
        // Custom performance assertion
    }
}

Built-in MinkContext Steps

# Navigation
Given I am on "/path"
When I go to "/path"
When I reload the page

# Forms
When I fill in "field" with "value"
When I select "option" from "select"
When I check "checkbox"
When I uncheck "checkbox"
When I press "button"
When I attach the file "path" to "field"

# Assertions
Then I should see "text"
Then I should not see "text"
Then I should be on "/path"
Then the response status code should be 200
Then the "field" field should contain "value"
Then I should see an "css-selector" element
Then print current URL

behat.yml

default:
  suites:
    default:
      contexts:
        - LoginContext
        - Behat\MinkExtension\Context\MinkContext
  extensions:
    Behat\MinkExtension:
      base_url: 'http://localhost:3000'
      sessions:
        default:
          selenium2:
            browser: chrome
            wd_host: 'http://localhost:4444/wd/hub'

Tags

./vendor/bin/behat --tags=@smoke
./vendor/bin/behat --tags="@smoke&&~@slow"

Setup: composer require --dev behat/behat behat/mink-extension behat/mink-selenium2-driver

Init: ./vendor/bin/behat --init

Cloud Execution on TestMu AI

Set environment variables: LT_USERNAME, LT_ACCESS_KEY

# behat.yml
default:
  extensions:
    Behat\MinkExtension:
      base_url: 'https://your-app.com'
      selenium2:
        wd_host: 'https://hub.lambdatest.com/wd/hub'
        capabilities:
          browser: 'chrome'
          extra_capabilities:
            'LT:Options':
              user: '%env(LT_USERNAME)%'
              accessKey: '%env(LT_ACCESS_KEY)%'
              build: 'Behat Build'
              name: 'Behat Test'
              platformName: 'Windows 11'
              video: true
              console: true
              network: true

Run: ./vendor/bin/behat or ./vendor/bin/behat features/login.feature

Deep Patterns

See reference/playbook.md for production-grade patterns:

SectionWhat You Get
§1 Project Setupbehat.yml with suites, Mink extension, profiles, project structure
§2 Feature FilesGherkin with Scenario Outline, Background, TableNode data
§3 Context ClassesStep definitions, dependency injection, API context, assertions
§4 HooksBeforeSuite/Scenario/Step, screenshot on failure, transaction rollback
§5 Page ObjectsPage Object pattern with elements map, reusable components
§6 LambdaTest IntegrationRemote Selenium config, cloud browser profiles
§7 Custom FormattersHTML report formatter, result collection
§8 CI/CD IntegrationGitHub Actions with MySQL, Selenium, JUnit reports
§9 Debugging Table12 common problems with causes and fixes
§10 Best Practices14-item BDD testing checklist

What ships with it: 2 files

22.9 KB alongside SKILL.md

reference/

Keep looking

Skills are one crate of 326,834. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.