컴포넌트 테스팅
WebdriverIO의 브라우저 러너를 사용하면 실제 데스크톱이나 모바일 브라우저에서 테스트를 실행하면서 WebdriverIO와 WebDriver 프로토콜을 사용하여 페이지에 렌더링된 내용을 자동화하고 상호작용할 수 있습니다. 이 접근 방식은 JSDOM에서만 테스트를 허용하는 다른 테스트 프레임워크와 비교했을 때 많은 장점이 있습니다.
어떻게 작동하나요?
브라우저 러너는 Vite를 사용하여 테스트 페이지를 렌더링하고 브라우저에서, 테스트를 실행하기 위한 테스트 프레임워크를 초기화합니다. 현재는 Mocha만 지원하지만 Jasmine과 Cucumber는 로드맵에 있습니다. 이를 통해 Vite를 사용하지 않는 프로젝트에서도 모든 종류의 컴포넌트를 테스트할 수 있습니다.
Vite 서버는 WebdriverIO 테스트러너에 의해 시작되며, 일반 e2e 테스트에 사용했던 모든 리포터와 서비스를 사용할 수 있도록 구성됩니다. 또한 페이지의 모든 요소와 상호작용할 수 있는 WebdriverIO API의 하위 집합에 접근할 수 있는 browser 인스턴스를 초기화합니다. e2e 테스트와 유사하게 글로벌 스코프에 연결된 browser 변수를 통해 또는 injectGlobals 설정 방식에 따라 @wdio/globals에서 가져와서 해당 인스턴스에 접근할 수 있습니다.
WebdriverIO는 다음 프레임워크에 대한 기본 지원을 제공합니다:
- Nuxt: WebdriverIO의 테스트러너는 Nuxt 애플리케이션을 감지하고 자동으로 프로젝트 컴포저블을 설 정하고 Nuxt 백엔드를 모킹하는 데 도움을 줍니다. 자세한 내용은 Nuxt 문서를 참조하세요.
- TailwindCSS: WebdriverIO의 테스트러너는 TailwindCSS를 사용하고 있는지 감지하고 테스트 페이지에 환경을 적절히 로드합니다.
설정
브라우저에서 단위 또는 컴포넌트 테스트를 위해 WebdriverIO를 설정하려면 다음과 같이 새 WebdriverIO 프로젝트를 초기화하세요:
npm init wdio@latest ./
# 또는
yarn create wdio ./
구성 마법사가 시작되면, 단위 및 컴포넌트 테스트를 실행하기 위해 browser를 선택하고 원하는 경우 사전 설정 중 하나를 선택하거나, 기본 단위 테스트만 실행하려면 _"Other"_를 선택하세요. 프로젝트에서 이미 Vite를 사용하고 있다면 사용자 정의 Vite 구성을 설정할 수도 있습니다. 자세한 정보는 모든 러너 옵 션을 확인하세요.
참고: WebdriverIO는 기본적으로 CI 환경에서 헤드리스 모드로 브라우저 테스트를 실행합니다(예: CI 환경 변수가 '1' 또는 'true'로 설정된 경우). 러너의 headless 옵션을 사용하여 이 동작을 수동으로 구성할 수 있습니다.
이 과정이 끝나면 다양한 WebdriverIO 구성이 포함된 wdio.conf.js 파일을 찾을 수 있으며, 여기에는 runner 속성이 포함됩니다. 예:
loading...
서로 다른 capabilities를 정의하여 다양한 브라우저에서 테스트를 실행할 수 있으며, 원하는 경우 병렬로 실행할 수 있습니다.
모든 것이 어떻게 작동하는지 아직 확실하지 않다면, WebdriverIO에서 컴포넌트 테스팅을 시작하는 방법에 대한 다음 튜토리얼을 시청하세요:
테스트 하네스
테스트에서 무엇을 실행하고 어떻게 컴포넌트를 렌더링할지는 전적으로 사용자의 선택입니다. 그러나 React, Preact, Svelte 및 Vue와 같은 다양한 컴포넌트 프레임워크용 플러그인을 제공하는 Testing Library를 유틸리티 프레임워크로 사용하는 것을 권장합니다. 이는 테스트 페이지에 컴포넌트를 렌더링하는 데 매우 유용하며 각 테스트 후 자동으로 이러한 컴포넌트를 정리합니다.
원하는 대로 Testing Library 기본 요소와 WebdriverIO 명령을 혼합하여 사용할 수 있습니다. 예:
loading...
참고: Testing Library의 렌더 메서드를 사용하면 테스트 간에 생성된 컴포넌트를 제거하는 데 도움이 됩니다. Testing Library를 사용하지 않는 경우 테스트 사이에 정리되는 컨테이너에 테스트 컴포넌트를 연결했는지 확인하세요.
설정 스크립트
Node.js 또는 브라우저에서 임의의 스크립트를 실행하여 테스트를 설정할 수 있습니다. 예를 들어, 스타일 주입, 브라우저 API 모킹 또는 제3자 서비스에 연결하는 등의 작업이 가능합니다. WebdriverIO 훅은 Node.js에서 코드를 실행하는 데 사용할 수 있고, mochaOpts.require는 테스트가 로드되기 전에 브라우저로 스크립트를 가져올 수 있게 해줍니다. 예:
export const config = {
// ...
mochaOpts: {
ui: 'tdd',
// 브라우저에서 실행할 설정 스크립트 제공
require: './__fixtures__/setup.js'
},
before: () => {
// Node.js에서 테스트 환경 설정
}
// ...
}