기능
기능(capability)은 원격 인터페이스에 대한 정의입니다. 이는 WebdriverIO가 어떤 브라우저나 모바일 환경에서 테스트를 실행할지 이해하는 데 도움이 됩니다. 기능은 로컬에서 테스트를 개발할 때는 대부분 하나의 원격 인터페이스에서 실행하기 때문에 덜 중요하지만, CI/CD에서 대규모 통합 테스트를 실행할 때는 더 중요해집니다.
기능 객체의 형식은 WebDriver 명세에 의해 잘 정의되어 있습니다. 사용자 정의 기능이 해당 명세를 준수하지 않으면 WebdriverIO 테스트러너는 초기에 실패합니다.
커스텀 기능
고정된 정의된 기능의 수는 매우 적지만, 누구나 자동화 드라이버나 원격 인터페이스에 특화된 커스텀 기능을 제공하고 수용할 수 있습니다:
브라우저 특정 기능 확장
goog:chromeOptions: Chromedriver 확장, Chrome에서 테스트하는 경우에만 적용 가능moz:firefoxOptions: Geckodriver 확장, Firefox에서 테스트하는 경우에만 적용 가능ms:edgeOptions: EdgeOptions Chromium Edge를 테스트하기 위해 EdgeDriver 사용 시 환경을 지정하는 옵션
클라우드 벤더 기능 확장
sauce:options: Sauce Labsbstack:options: BrowserStacktb:options: TestingBotLT:Options: LambdaTest- 및 더 많은 옵션...
자동화 엔진 기능 확장
브라우저 드라이버 옵션을 관리하기 위한 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
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- 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
모든 Geckodriver 옵션은 공식 드라이버 패키지에서 확인할 수 있습니다.
모든 Edgedriver 옵션은 공식 드라이버 패키지에서 확인할 수 있습니다.
모든 Safaridriver 옵션은 공식 드라이버 패키지에서 확인할 수 있습니다.
특정 사용 사례를 위한 특별 기능
이것은 특정 사용 사례를 달성하기 위해 적용해야 하는 기능을 보여주는 예제 목록입니다.
헤드리스 브라우저 실행
헤드리스 브라우저를 실행한다는 것은 윈도우나 UI 없이 브라우저 인스턴스를 실행하는 것을 의미합니다. 이것은 주로 디스플레이가 사용되지 않는 CI/CD 환경에서 사용됩니다. 헤드리스 모드에서 브라우저를 실행하려면 다음 기능을 적용하세요:
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // 또는 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
Safari는 헤드리스 모드에서 실행을 지원하지 않는 것으로 보입니다.
다양한 브라우저 채널 자동화
아직 안정 버전으로 출시되지 않은 브라우저 버전(예: Chrome Canary)을 테스트하려면 기능을 설정하고 시작하려는 브라우저를 지정하여 수행할 수 있습니다:
- Chrome
- Firefox
- Microsoft Edge
- Safari
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'
}
}
Firefox에서 테스트할 때 WebdriverIO는 정의된 browserVersion에 기반하여 원하는 브라우저 버전과 드라이버를 자동으로 다운로드합니다:
{
browserName: 'firefox',
browserVersion: '119.0a1' // 또는 'latest'
}
수동으로 다운로드한 버전을 테스트하려면 브라우저의 바이너리 경로를 다음과 같이 제공할 수 있습니다:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
또한, 수동으로 다운로드한 드라이버를 사용하려면 다음과 같이 드라이버의 바이너리 경로를 제공할 수 있습니다:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
Microsoft Edge에서 테스트할 때 원하는 브라우저 버전이 머신에 설치되어 있는지 확인하세요. WebdriverIO에게 실행할 브라우저를 다음과 같이 지정할 수 있습니다:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIO는 정의된 browserVersion에 기반하여 원하는 드라이버 버전을 자동으로 다운로드합니다:
{
browserName: 'msedge',
browserVersion: '109' // 또는 '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
또한, 수동으로 다운로드한 드라이버를 사용하려면 다음과 같이 드라이버의 바이너리 경로를 제공할 수 있습니다:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
Safari에서 테스트할 때 머신에 Safari Technology Preview가 설치되어 있는지 확인하세요. WebdriverIO에게 해당 버전을 다음과 같이 지정할 수 있습니다:
{
browserName: 'safari technology preview'
}
커스텀 기능 확장
특정 기능에 대한 테스트 내에서 사용할 임의의 데이터를 저장하기 위해 자신만의 기능 세트를 정의하려면 다음과 같이 설정할 수 있습니다:
export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// 커스텀 구성
}
}]
}
기능 이름 지정에 있어서는 구현 특정 네임스페이스를 나타내는 : (콜론) 문자를 요구하는 W3C 프로토콜을 따르는 것이 좋습니다. 테스트 내에서 다음과 같이 커스텀 기능에 접근할 수 있습니다:
browser.capabilities['custom:caps']
타입 안전성을 보장하기 위해 WebdriverIO의 기능 인터페이스를 다음과 같이 확장할 수 있습니다:
declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}