mcpField
G
geb-skill

geb-skill

github.com/lambdatest测试与质量384205 次安装2 周前更新
代码仓库

关于 geb-skill

为使用 Geb 和 Spock 进行浏览器及 Web 测试提供参考,面向 Groovy 测试编写者,涵盖页面对象、选择器、云端执行、API 测试和 CI 模式。

主要功能

  1. 01Geb 与 Spock 测试模式
  2. 02页面对象与内容 DSL
  3. 03选择器和浏览器交互
  4. 04TestMu AI 云端执行配置
  5. 05使用 Groovy 进行 API 测试
  6. 06CI/CD 与调试指南

适用场景

  1. 01使用页面对象编写浏览器测试
  2. 02在 TestMu AI 云端运行测试
  3. 03使用 Groovy 测试 REST API
  4. 04将测试集成到 CI 工作流

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/geb-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
advanced-patterns.md
cloud-integration.md
playbook.md

详细介绍

Geb 自动化技能

有关 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 规范测试Spock 集成、使用 @Unroll 的数据驱动测试、@Stepwise 流程
§4 等待与异步等待预设、JavaScript 交互、警告框/确认框
§5 高级模式文件上传/下载、窗口、框架、自定义扩展
§6 API 测试使用 Groovy JsonSlurper 的 REST API 规范
§7 CI/CD 集成使用无头 Chrome 的 GitHub Actions、Gradle 缓存
§8 调试表12 个常见问题及其原因和解决方法
§9 最佳实践14 项 Geb 测试检查清单

评论

支持 Markdown