mcpField
L
lettuce-skill

lettuce-skill

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

lettuce-skill について

lettuce-skillは、レガシーなLettuceのPython BDDテスト向けリファレンススキルです。Gherkinのフィーチャー、ステップ定義、セットアップと後処理を扱い、Lettuceはほぼ保守されていないため新規プロジェクトではBehaveを検討するよう案内します。

主な機能

  1. 01Gherkinフィーチャーファイルのパターン
  2. 02Pythonステップ定義の例
  3. 03terrain.pyによるシナリオの準備と後処理
  4. 04Seleniumブラウザーテストの例
  5. 05Behaveへの移行ガイド

活用シーン

  1. 01既存のLettuce BDDテストの保守
  2. 02シナリオの作成とPythonステップへの接続
  3. 03LettuceからBehaveへの移行計画

インストール

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

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

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

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

詳細

Lettuce BDD スキル(レガシー)

注: Lettuce はほとんどメンテナンスされていません。新しい Python BDD プロジェクトでは、代わりに Behave を使用してください。

コアパターン

フィーチャーファイル(features/login.feature)
Feature: User Login
  Scenario: Successful login
    Given I navigate to the login page
    When I enter "[email protected]" as email
    And I enter "password123" as password
    And I click login
    Then I should see the dashboard

  Scenario: Invalid login
    Given I navigate to the login page
    When I enter "[email protected]" as email
    And I enter "wrong" as password
    And I click login
    Then I should see "Invalid credentials"
ステップ定義(features/steps.py)
from lettuce import step, world
from selenium import webdriver
from selenium.webdriver.common.by import By

@step(r'I navigate to the login page')
def navigate_to_login(step):
    world.browser = webdriver.Chrome()
    world.browser.get(world.base_url + '/login')

@step(r'I enter "([^"]*)" as email')
def enter_email(step, email):
    el = world.browser.find_element(By.ID, 'email')
    el.clear()
    el.send_keys(email)

@step(r'I enter "([^"]*)" as password')
def enter_password(step, password):
    el = world.browser.find_element(By.ID, 'password')
    el.clear()
    el.send_keys(password)

@step(r'I click login')
def click_login(step):
    world.browser.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()

@step(r'I should see the dashboard')
def see_dashboard(step):
    assert '/dashboard' in world.browser.current_url

@step(r'I should see "([^"]*)"')
def see_text(step, text):
    assert text in world.browser.page_source
Terrain(セットアップ/ティアダウン — terrain.py)
from lettuce import before, after, world

@before.all
def setup():
    world.base_url = 'http://localhost:3000'

@before.each_scenario
def before_scenario(scenario):
    pass

@after.each_scenario
def cleanup(scenario):
    if hasattr(world, 'browser'):
        world.browser.quit()

@after.all
def teardown(total):
    print(f"Ran {total.scenarios_ran} scenarios")

セットアップ:pip install lettuce selenium

実行:lettuce または lettuce features/login.feature

TestMu AI でのクラウド実行

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

# terrain.py
from selenium import webdriver
import os

@before.all
def setup():
    lt_options = {
        "user": os.environ["LT_USERNAME"],
        "accessKey": os.environ["LT_ACCESS_KEY"],
        "build": "Lettuce Build",
        "platformName": "Windows 11",
        "video": True,
        "console": True,
    }
    options = webdriver.ChromeOptions()
    options.set_capability("LT:Options", lt_options)
    world.browser = webdriver.Remote(
        command_executor=f"https://{os.environ['LT_USERNAME']}:{os.environ['LT_ACCESS_KEY']}@hub.lambdatest.com/wd/hub",
        options=options,
    )

移行:積極的にメンテナンスされている behave への切り替えをご検討ください

高度なパターン

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

コメント