behat-skill について
behat-skillは、PHPでBehatのBDDテストを構築・実行するためのリファレンススキルです。Gherkinの機能ファイル、カスタムコンテキスト、Minkのブラウザ操作、リモートSelenium実行、CI/CDのパターンを扱います。
主な機能
- 01Gherkinの機能ファイルとシナリオ
- 02カスタムPHPコンテキストクラス
- 03Minkのナビゲーションとフォーム操作
- 04タグとBehat設定
- 05リモートSeleniumとCI/CDのガイド
活用シーン
- 01Gherkinでログイン動作を記述
- 02PHPコンテキストでカスタムステップを追加
- 03タグで対象シナリオを選んで実行
- 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 テストチェックリスト |
コメント
Markdown 対応