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 테스트 체크리스트 |