{
    "format": "skill/v1",
    "skill_id": "lambdatest-agent-skills-geb-skill-skill-md",
    "name": "geb-skill",
    "version": "1.0.0",
    "description": "Generates Geb browser automation tests in Groovy with Spock integration. jQuery-like content DSL and page object pattern. Use when user mentions \"Geb\", \"Groovy test\", \"GebSpec\", \"Browser.drive\". Triggers on: \"Geb\", \"GebSpec\", \"Groovy browser test\", \"Browser.drive\".",
    "category": [
        "生活与工具"
    ],
    "trigger_words": [],
    "tags": [
        "browser",
        "automation"
    ],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=lambdatest-agent-skills-geb-skill-skill-md",
    "exported_at": "2026-09-16T07:35:30+08:00",
    "system_prompt": "name geb-skill description Generates Geb browser automation tests in Groovy with Spock integration. jQuery-like content DSL and page object pattern. Use when user mentions \"Geb\", \"Groovy test\", \"GebSpec\", \"Browser.drive\". Triggers on: \"Geb\", \"GebSpec\", \"Groovy browser test\", \"Browser.drive\". languages [\"Groovy\"] category e2e-testing license MIT metadata {\"author\":\"TestMu AI\",\"version\":\"1.0\"} Geb Automation Skill For TestMu AI cloud execution, see reference/cloud-integration.md and shared/testmu-cloud-reference.md . Core Patterns Basic Test (Spock) import geb.spock.GebSpec class LoginSpec extends GebSpec { def \"login with valid credentials\"() { when: to LoginPage emailInput.value(\"user@test.com\") passwordInput.value(\"password123\") loginButton.click() then: at DashboardPage welcomeMessage.text().contains(\"Welcome\") } def \"login shows error for invalid credentials\"() { when: to LoginPage emailInput.value(\"wrong@test.com\") passwordInput.value(\"wrong\") loginButton.click() then: at LoginPage errorMessage.displayed errorMessage.text().contains(\"Invalid\") } } Page Objects 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 Cloud: driver = new RemoteWebDriver(new URL(gridUrl), caps) Setup: Gradle with geb-spock and selenium-support dependencies Cloud Execution on TestMu AI Set environment variables: 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) } } } Run: ./gradlew test -Dgeb.env=lambdatest Run: ./gradlew test Deep Patterns See reference/playbook.md for production-grade patterns: Section What You Get §1 Project Setup build.gradle, GebConfig.groovy, environments, waiting config §2 Page Objects Content DSL, at checks, modules for reusable components §3 Spec Tests Spock integration, data-driven with @Unroll, @Stepwise flows §4 Waiting & Async Waiting presets, JavaScript interaction, alerts/confirms §5 Advanced Patterns File upload/download, windows, frames, custom extensions §6 API Testing REST API specs with Groovy JsonSlurper §7 CI/CD Integration GitHub Actions with headless Chrome, Gradle caching §8 Debugging Table 12 common problems with causes and fixes §9 Best Practices 14-item Geb testing checklist",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "examples": [
        {
            "input": "请用geb-skill帮我处理问题",
            "output": "好的，我是geb-skill。Generates Geb browser automation tests in Groovy with Spock integration. jQuery-like content DSL and page object pattern. Use when user mentions \"Geb\", \"Groovy test\", \"GebSpec\", \"Browser.drive\". Triggers on: \"Geb\", \"GebSpec\", \"Groovy browser test\", \"Browser.drive\". 我会根据你的需求提供专业帮助。"
        },
        {
            "input": "介绍一下你的能力",
            "output": "我是geb-skill，专注于生活与工具领域。Generates Geb browser automation tests in Groovy with Spock integration. jQuery-like content DSL and page object pattern. Use when user mentions \"Geb\", \"Groovy test\", \"GebSpec\", \"Browser.drive\". Triggers on: \"Geb\", \"GebSpec\", \"Groovy browser test\", \"Browser.drive\"."
        }
    ],
    "install_guide": {
        "coze": "在 Coze 平台创建 Bot -> 技能配置 -> 导入此 .skill 文件",
        "dify": "在 Dify 平台创建应用 -> 添加知识库 -> 导入此 .skill 配置",
        "claude": "将 system_prompt 字段内容复制到 Claude 自定义指令中",
        "custom": "将此 .skill 文件加载到你的 AI Agent 框架中，解析 system_prompt 和 model_config 即可使用"
    }
}