mcpField
S
specflow-skill

specflow-skill

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

specflow-skill について

specflow-skillは、SpecFlowと.NETによる振る舞い駆動テストのリファレンススキルです。Gherkinの機能ファイル、ステップバインディング、フック、依存性注入、レポートを扱います。

主な機能

  1. 01Gherkinの機能シナリオ
  2. 02C#ステップバインディング
  3. 03シナリオフック
  4. 04コンテキスト注入
  5. 05LivingDocのHTMLレポート
  6. 06クラウド実行の設定

活用シーン

  1. 01Gherkinでログインシナリオを記述
  2. 02ステップをC#コードに接続
  3. 03テストステップ間でコンテキストを共有
  4. 04SpecFlowレポートの生成

インストール

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

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

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

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

詳細

SpecFlow BDD スキル

基本パターン

フィーチャーファイル(Features/Login.feature)
Feature: User Login

  Scenario: Successful login
    Given I am on the login page
    When I enter "[email protected]" as email
    And I enter "password123" as password
    And I click the login button
    Then I should see the dashboard
    And the welcome message should contain "Welcome"

  Scenario: Invalid credentials
    Given I am on the login page
    When I enter "[email protected]" as email
    And I enter "wrong" as password
    And I click the login button
    Then I should see error "Invalid credentials"

  Scenario Outline: Login with various users
    Given I am on the login page
    When I enter "<email>" as email
    And I enter "<password>" as password
    And I click the login button
    Then I should see "<result>"

    Examples:
      | email          | password | result    |
      | [email protected] | admin123 | Dashboard |
      | [email protected]  | pass123  | Dashboard |
      | [email protected]   | wrong    | Error     |
ステップバインディング
using TechTalk.SpecFlow;
using NUnit.Framework;

[Binding]
public class LoginSteps
{
    private readonly ScenarioContext _context;
    private IWebDriver _driver;

    public LoginSteps(ScenarioContext context)
    {
        _context = context;
        _driver = (IWebDriver)_context["driver"];
    }

    [Given(@"I am on the login page")]
    public void GivenIAmOnTheLoginPage()
    {
        _driver.Navigate().GoTo("http://localhost:3000/login");
    }

    [When(@"I enter ""(.*)"" as email")]
    public void WhenIEnterEmail(string email)
    {
        _driver.FindElement(By.Id("email")).SendKeys(email);
    }

    [When(@"I enter ""(.*)"" as password")]
    public void WhenIEnterPassword(string password)
    {
        _driver.FindElement(By.Id("password")).SendKeys(password);
    }

    [When(@"I click the login button")]
    public void WhenIClickLogin()
    {
        _driver.FindElement(By.CssSelector("button[type='submit']")).Click();
    }

    [Then(@"I should see the dashboard")]
    public void ThenIShouldSeeDashboard()
    {
        Assert.That(_driver.Url, Does.Contain("/dashboard"));
    }

    [Then(@"I should see error ""(.*)""")]
    public void ThenIShouldSeeError(string error)
    {
        var element = _driver.FindElement(By.CssSelector(".error"));
        Assert.That(element.Text, Does.Contain(error));
    }
}
フック
[Binding]
public class Hooks
{
    private readonly ScenarioContext _context;

    public Hooks(ScenarioContext context) { _context = context; }

    [BeforeScenario]
    public void BeforeScenario()
    {
        var driver = new ChromeDriver();
        _context["driver"] = driver;
    }

    [AfterScenario]
    public void AfterScenario()
    {
        ((IWebDriver)_context["driver"]).Quit();
    }
}
依存性注入(コンテキスト注入)
// SpecFlow auto-injects ScenarioContext, FeatureContext, and custom POCOs
public class LoginSteps
{
    private readonly LoginPage _loginPage;
    public LoginSteps(LoginPage loginPage) { _loginPage = loginPage; }
}

セットアップ:dotnet add package SpecFlow.NUnit または SpecFlow.xUnit

実行:dotnet test

TestMu AI でのクラウド実行

環境変数を設定します:LT_USERNAME、LT_ACCESS_KEY

// Hooks.cs
[BeforeScenario]
public void Setup()
{
    var ltOptions = new Dictionary<string, object>
    {
        { "user", Environment.GetEnvironmentVariable("LT_USERNAME") },
        { "accessKey", Environment.GetEnvironmentVariable("LT_ACCESS_KEY") },
        { "build", "SpecFlow Build" },
        { "name", ScenarioContext.Current.ScenarioInfo.Title },
        { "platformName", "Windows 11" },
        { "video", true },
        { "console", true },
    };
    var options = new ChromeOptions();
    options.AddAdditionalOption("LT:Options", ltOptions);
    _driver = new RemoteWebDriver(
        new Uri("https://hub.lambdatest.com/wd/hub"), options);
}

レポート:リッチな HTML レポートを生成する SpecFlow+ LivingDoc 拡張機能

応用パターン

高度なパターン、デバッグガイド、CI/CD 統合、ベストプラクティスについては、 reference/playbook.md を参照してください。

コメント