Community코딩 & 개발github.com

LambdaTest/agent-skills

AI 코딩 어시스턴트가 브라우저와 플랫폼 전반에서 프로덕션 등급의 테스트 자동화를 작성하도록 가르치는 큐레이션된 Agent Skills(TestMu AI) 모음입니다.

agent-skills란 무엇인가요?

이 스킬은 AI 코딩 어시스턴트(예: Claude Code, Cursor, Codex)가 Geb(그루비 기반 브라우저 자동화 프레임워크)으로 테스트를 작성하고 실행할 수 있도록 안내합니다. 핵심 패턴으로는 Spock 기반의 기본 테스트, 페이지 객체 모델, Navigator API 사용법을 제공합니다. 로컬 Gradle 환경뿐만 아니라 TestMu AI 클라우드에서도 실행 가능하며, `LT_USERNAME`과 `LT_ACCESS_KEY` 환경 변수로 간단히 연결할 수 있습니다. 또한 `reference/playbook.md`를 통해 프로덕션 등급의 프로젝트 설정, 대기 및 비동기 처리, CI/CD 통합, 디버깅 표 등 9개 섹션의 심층 가이드를 제공합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add LambdaTest/agent-skills

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Geb Automation Skill

TestMu AI 클라우드 실행은 reference/cloud-integration.md 및 shared/testmu-cloud-reference.md를 참조하세요.

핵심 패턴

기본 테스트 (Spock)

import geb.spock.GebSpec

class LoginSpec extends GebSpec {
    def "유효한 자격 증명으로 로그인"() {
        when:
        to LoginPage
        emailInput.value("[email protected]")
        passwordInput.value("password123")
        loginButton.click()

        then:
        at DashboardPage
        welcomeMessage.text().contains("Welcome")
    }

    def "잘못된 자격 증명으로 로그인 시 오류 표시"() {
        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)        // 첫 번째 일치
$("div.items li").size()     // 개수

// 액션
element.click()
element.value("text")
element << "text"            // 텍스트 추가
element.text()
element.displayed
element.@href                // 속성

클라우드: driver = new RemoteWebDriver(new URL(gridUrl), caps)

설정: Gradle에 geb-spock 및 selenium-support 의존성 추가

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 모범 사례14개 항목의 Geb 테스트 체크리스트

관련 스킬