geb-skill について
Geb と Spock によるブラウザーおよび Web テストのリファレンスです。Groovy のテスト作成者向けに、ページオブジェクト、セレクター、クラウド実行、API テスト、CI のパターンを扱います。
主な機能
- 01Geb と Spock のテストパターン
- 02ページオブジェクトとコンテンツ DSL
- 03セレクターとブラウザー操作
- 04TestMu AI クラウド実行の設定
- 05Groovy による API テスト
- 06CI/CD とデバッグのガイド
活用シーン
- 01ページオブジェクトを使ったブラウザーテスト作成
- 02TestMu AI クラウドでのテスト実行
- 03Groovy による REST API テスト
- 04CI ワークフローへのテスト統合
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill geb-skillインストール後、Claude Code で/geb-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/advanced-patterns.mdcloud-integration.mdplaybook.md詳細
Geb Automation スキル
TestMu AI のクラウド実行については、reference/cloud-integration.md と shared/testmu-cloud-reference.md を参照してください。
基本パターン
基本テスト(Spock)
import geb.spock.GebSpec
class LoginSpec extends GebSpec {
def "login with valid credentials"() {
when:
to LoginPage
emailInput.value("[email protected]")
passwordInput.value("password123")
loginButton.click()
then:
at DashboardPage
welcomeMessage.text().contains("Welcome")
}
def "login shows error for invalid credentials"() {
when:
to LoginPage
emailInput.value("[email protected]")
passwordInput.value("wrong")
loginButton.click()
then:
at LoginPage
errorMessage.displayed
errorMessage.text().contains("Invalid")
}
}
ページオブジェクト
class LoginPage extends geb.Page {
static url = "/login"
static at = { title == "Login" }
static content = {
emailInput { $("#email") }
passwordInput { $("#password") }
loginButton { $("button[type='submit']") }
errorMessage(required: false) { $(".error") }
}
}
class DashboardPage extends geb.Page {
static url = "/dashboard"
static at = { $(".dashboard").displayed }
static content = {
welcomeMessage { $(".welcome") }
userName { $(".user-name") }
}
}
Navigator API
$("css-selector")
$("div", class: "active")
$("input", name: "email")
$("div.items li", 0) // First match
$("div.items li").size() // Count
// Actions
element.click()
element.value("text")
element << "text" // Append text
element.text()
element.displayed
element.@href // Attribute
クラウド:driver = new RemoteWebDriver(new URL(gridUrl), caps)
セットアップ:geb-spock と selenium-support の依存関係を含む Gradle
TestMu AI でのクラウド実行
環境変数 LT_USERNAME、LT_ACCESS_KEY を設定します。
// GebConfig.groovy
environments {
lambdatest {
driver = {
def ltOptions = [
user: System.getenv("LT_USERNAME"),
accessKey: System.getenv("LT_ACCESS_KEY"),
build: "Geb Build",
name: "Geb Test",
platformName: "Windows 11",
video: true,
console: true,
network: true,
]
def caps = new ChromeOptions()
caps.setCapability("LT:Options", ltOptions)
new RemoteWebDriver(
new URL("https://hub.lambdatest.com/wd/hub"), caps)
}
}
}
実行:./gradlew test -Dgeb.env=lambdatest
実行:./gradlew test
応用パターン
本番環境向けのパターンについては、reference/playbook.md を参照してください。
| セクション | 内容 |
|---|---|
| §1 プロジェクトのセットアップ | build.gradle、GebConfig.groovy、環境、待機設定 |
| §2 ページオブジェクト | Content DSL、at チェック、再利用可能なコンポーネント向けモジュール |
| §3 Spec テスト | Spock との統合、@Unroll によるデータ駆動テスト、@Stepwise フロー |
| §4 待機と非同期処理 | 待機プリセット、JavaScript インタラクション、アラート/確認ダイアログ |
| §5 高度なパターン | ファイルのアップロード/ダウンロード、ウィンドウ、フレーム、カスタム拡張 |
| §6 API テスト | Groovy JsonSlurper を使った REST API の仕様 |
| §7 CI/CD 統合 | ヘッドレス Chrome を使った GitHub Actions、Gradle キャッシュ |
| §8 デバッグ表 | よくある問題12件と原因、解決方法 |
| §9 ベストプラクティス | Geb テストの14項目チェックリスト |
コメント
Markdown 対応