mcpField
B
behat-skill

behat-skill

github.com/lambdatestテスト・品質384210 回インストール2 週間前に更新
リポジトリ

behat-skill について

behat-skillは、PHPでBehatのBDDテストを構築・実行するためのリファレンススキルです。Gherkinの機能ファイル、カスタムコンテキスト、Minkのブラウザ操作、リモートSelenium実行、CI/CDのパターンを扱います。

主な機能

  1. 01Gherkinの機能ファイルとシナリオ
  2. 02カスタムPHPコンテキストクラス
  3. 03Minkのナビゲーションとフォーム操作
  4. 04タグとBehat設定
  5. 05リモートSeleniumとCI/CDのガイド

活用シーン

  1. 01Gherkinでログイン動作を記述
  2. 02PHPコンテキストでカスタムステップを追加
  3. 03タグで対象シナリオを選んで実行
  4. 04リモートSeleniumでブラウザテストを実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lambdatest/agent-skills --skill behat-skill

インストール後、Claude Code で/behat-skillを入力して読み込まれたか確認します。

同梱ファイルreference/advanced-patterns.mdreference/playbook.md

詳細

Behat BDD スキル

コアパターン

フィーチャーファイル(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"
カスタムコンテキスト(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
    }
}
組み込みの MinkContext ステップ
# 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'
タグ
./vendor/bin/behat --tags=@smoke
./vendor/bin/behat --tags="@smoke&&~@slow"

セットアップ:composer require --dev behat/behat behat/mink-extension behat/mink-selenium2-driver

初期化:./vendor/bin/behat --init

TestMu AI でのクラウド実行

環境変数を設定します: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

実行:./vendor/bin/behat または ./vendor/bin/behat features/login.feature

高度なパターン

本番環境向けのパターンについては、reference/playbook.md を参照してください。

セクション内容
§1 プロジェクトのセットアップスイート、Mink 拡張機能、プロファイル、プロジェクト構成を含む behat.yml
§2 フィーチャーファイルScenario Outline、Background、TableNode データを含む Gherkin
§3 コンテキストクラスステップ定義、依存性注入、API コンテキスト、アサーション
§4 フックBeforeSuite/Scenario/Step、失敗時のスクリーンショット、トランザクションのロールバック
§5 ページオブジェクト要素マップと再利用可能なコンポーネントを備えたページオブジェクトパターン
§6 LambdaTest との統合リモート Selenium の設定、クラウドブラウザーのプロファイル
§7 カスタムフォーマッターHTML レポートフォーマッター、結果の収集
§8 CI/CD との統合MySQL、Selenium、JUnit レポートを使用した GitHub Actions
§9 デバッグ表12 のよくある問題と原因・解決策
§10 ベストプラクティス14 項目の BDD テストチェックリスト

コメント