메인 컨텐츠로 건너뛰기

기능

기능(capability)은 원격 인터페이스에 대한 정의입니다. 이는 WebdriverIO가 어떤 브라우저나 모바일 환경에서 테스트를 실행할지 이해하는 데 도움이 됩니다. 기능은 로컬에서 테스트를 개발할 때는 대부분 하나의 원격 인터페이스에서 실행하기 때문에 덜 중요하지만, CI/CD에서 대규모 통합 테스트를 실행할 때는 더 중요해집니다.

정보

기능 객체의 형식은 WebDriver 명세에 의해 잘 정의되어 있습니다. 사용자 정의 기능이 해당 명세를 준수하지 않으면 WebdriverIO 테스트러너는 초기에 실패합니다.

커스텀 기능​

고정된 정의된 기능의 수는 매우 적지만, 누구나 자동화 드라이버나 원격 인터페이스에 특화된 커스텀 기능을 제공하고 수용할 수 있습니다:

브라우저 특정 기능 확장​

  • goog:chromeOptions: Chromedriver 확장, Chrome에서 테스트하는 경우에만 적용 가능
  • moz:firefoxOptions: Geckodriver 확장, Firefox에서 테스트하는 경우에만 적용 가능
  • ms:edgeOptions: EdgeOptions Chromium Edge를 테스트하기 위해 EdgeDriver 사용 시 환경을 지정하는 옵션

클라우드 벤더 기능 확장​

자동화 엔진 기능 확장​

브라우저 드라이버 옵션을 관리하기 위한 WebdriverIO 기능​

WebdriverIO는 브라우저 드라이버의 설치 및 실행을 관리합니다. WebdriverIO는 드라이버에 매개변수를 전달할 수 있는 커스텀 기능을 사용합니다.

wdio:chromedriverOptions​

Chromedriver를 시작할 때 전달되는 특정 옵션.

wdio:geckodriverOptions​

Geckodriver를 시작할 때 전달되는 특정 옵션.

wdio:edgedriverOptions​

Edgedriver를 시작할 때 전달되는 특정 옵션.

wdio:safaridriverOptions​

Safari를 시작할 때 전달되는 특정 옵션.

wdio:maxInstances​

특정 브라우저/기능에 대해 병렬로 실행되는 최대 작업자 수. maxInstances 및 maxInstancesPerCapability보다 우선합니다.

타입: number

wdio:specs​

해당 브라우저/기능에 대한 테스트 실행을 위한 스펙을 정의합니다. 일반 specs 구성 옵션과 동일하지만 특정 브라우저/기능에 적용됩니다. specs보다 우선합니다.

타입: (String | String[])[]

wdio:exclude​

해당 브라우저/기능에 대한 테스트 실행에서 스펙을 제외합니다. 일반 exclude 구성 옵션과 동일하지만 특정 브라우저/기능에 적용됩니다. 전역 exclude 구성 옵션이 적용된 후에 제외됩니다.

타입: String[]

wdio:enforceWebDriverClassic​

기본적으로 WebdriverIO는 WebDriver Bidi 세션을 설정하려고 시도합니다. 이를 선호하지 않는 경우 이 플래그를 설정하여 이 동작을 비활성화할 수 있습니다.

타입: boolean

공통 드라이버 옵션​

모든 드라이버는 구성을 위한 다양한 매개변수를 제공하지만, WebdriverIO가 이해하고 드라이버나 브라우저를 설정하는 데 사용하는 몇 가지 공통 옵션이 있습니다:

cacheDir​

캐시 디렉토리의 루트 경로. 이 디렉토리는 세션을 시작하려고 할 때 다운로드되는 모든 드라이버를 저장하는 데 사용됩니다.

타입: string
기본값: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary​

커스텀 드라이버 바이너리의 경로. 설정하면 WebdriverIO는 드라이버를 다운로드하지 않고 이 경로에서 제공하는 드라이버를 사용합니다. 드라이버가 사용 중인 브라우저와 호환되는지 확인하세요.

이 경로는 CHROMEDRIVER_PATH, GECKODRIVER_PATH 또는 EDGEDRIVER_PATH 환경 변수를 통해 제공할 수 있습니다.

타입: string

주의

드라이버 binary가 설정되면, WebdriverIO는 드라이버를 다운로드하지 않고 이 경로에서 제공하는 드라이버를 사용합니다. 드라이버가 사용 중인 브라우저와 호환되는지 확인하세요.

브라우저 특정 드라이버 옵션​

드라이버에 옵션을 전달하기 위해 다음과 같은 커스텀 기능을 사용할 수 있습니다:

  • Chrome 또는 Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Edge: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions
adbPort​

ADB 드라이버가 실행되어야 하는 포트.

예: 9515

타입: number

urlBase​

명령어에 대한 기본 URL 경로 접두사, 예: wd/url.

예: /

타입: string

logPath​

서버 로그를 stderr 대신 파일에 쓰고, 로그 레벨을 INFO로 높입니다.

타입: string

logLevel​

로그 레벨 설정. 가능한 옵션은 ALL, DEBUG, INFO, WARNING, SEVERE, OFF입니다.

타입: string

verbose​

자세하게 로깅 (이는 --log-level=ALL과 동일)

타입: boolean

silent​

아무것도 로깅하지 않음 (이는 --log-level=OFF와 동일)

타입: boolean

appendLog​

로그 파일을 다시 쓰는 대신 추가합니다.

타입: boolean

replayable​

자세하게 로깅하고 긴 문자열을 잘라내지 않아 로그를 재생할 수 있게 합니다(실험적).

타입: boolean

readableTimestamp​

로그에 읽기 쉬운 타임스탬프를 추가합니다.

타입: boolean

enableChromeLogs​

브라우저의 로그를 표시합니다(다른 로깅 옵션을 덮어씁니다).

타입: boolean

bidiMapperPath​

커스텀 bidi 매퍼 경로.

타입: string

allowedIps​

EdgeDriver에 연결할 수 있는 원격 IP 주소의 쉼표로 구분된 허용 목록.

타입: string[]
기본값: ['']

allowedOrigins​

EdgeDriver에 연결할 수 있는 요청 출처의 쉼표로 구분된 허용 목록. 모든 호스트 출처를 허용하기 위해 *를 사용하는 것은 위험합니다!

타입: string[]
기본값: ['*']

spawnOpts​

드라이버 프로세스에 전달할 옵션.

타입: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
기본값: undefined

특정 사용 사례를 위한 특별 기능​

이것은 특정 사용 사례를 달성하기 위해 적용해야 하는 기능을 보여주는 예제 목록입니다.

헤드리스 브라우저 실행​

헤드리스 브라우저를 실행한다는 것은 윈도우나 UI 없이 브라우저 인스턴스를 실행하는 것을 의미합니다. 이것은 주로 디스플레이가 사용되지 않는 CI/CD 환경에서 사용됩니다. 헤드리스 모드에서 브라우저를 실행하려면 다음 기능을 적용하세요:

{
browserName: 'chrome', // 또는 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

다양한 브라우저 채널 자동화​

아직 안정 버전으로 출시되지 않은 브라우저 버전(예: Chrome Canary)을 테스트하려면 기능을 설정하고 시작하려는 브라우저를 지정하여 수행할 수 있습니다:

Chrome에서 테스트할 때 WebdriverIO는 정의된 browserVersion에 기반하여 원하는 브라우저 버전과 드라이버를 자동으로 다운로드합니다:

{
browserName: 'chrome', // 또는 'chromium'
browserVersion: '116' // 또는 '116.0.5845.96', 'stable', 'dev', 'canary', 'beta', 'latest' (이는 'canary'와 동일)
}

수동으로 다운로드한 브라우저를 테스트하려면 브라우저의 바이너리 경로를 다음과 같이 제공할 수 있습니다:

{
browserName: 'chrome', // 또는 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

또한, 수동으로 다운로드한 드라이버를 사용하려면 다음과 같이 드라이버의 바이너리 경로를 제공할 수 있습니다:

{
browserName: 'chrome', // 또는 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

커스텀 기능 확장​

특정 기능에 대한 테스트 내에서 사용할 임의의 데이터를 저장하기 위해 자신만의 기능 세트를 정의하려면 다음과 같이 설정할 수 있습니다:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// 커스텀 구성
}
}]
}

기능 이름 지정에 있어서는 구현 특정 네임스페이스를 나타내는 : (콜론) 문자를 요구하는 W3C 프로토콜을 따르는 것이 좋습니다. 테스트 내에서 다음과 같이 커스텀 기능에 접근할 수 있습니다:

browser.capabilities['custom:caps']

타입 안전성을 보장하기 위해 WebdriverIO의 기능 인터페이스를 다음과 같이 확장할 수 있습니다:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot