Jest + Typescript + Babel 을 설정하는 방법을 경험했다면
이젠 Puppeteer 를 추가해보자
전제조건
설치
puppeteer 과 jest-puppeteer 설치
1
| npm i -D puppeteer jest-puppeteer
|
Types 설치
1
| npm i -D @types/puppeteer @types/jest-environment-puppeteer @types/expect-puppeteer
|
tsconfig.json 에 types 추가
tsconfig.json1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "compilerOptions": { .......... "types": [ "jest", "puppeteer", "jest-environment-puppeteer", "expect-puppeteer" ], .......... }, "exclude": [ "node_modules" ] }
|
jest.config.js 에 preset 설정 변경
ts-jest 와 jest-puppeteer 를 preset 으로 설정하기 위해서
두개를 합쳐주는 preset.js
파일을 먼저 만들어 줍니다.
preset.js1 2 3 4 5 6 7
| const ts_preset = require('ts-jest/jest-preset') const puppeteer_preset = require('jest-puppeteer/jest-preset')
module.exports = Object.assign( ts_preset, puppeteer_preset )
|
jest.config.js1 2 3 4 5 6
| - preset: "ts-jest", + preset: "./preset.js",
|
테스트
테스트 파일생성
./test/puppeteer.test.ts1 2 3 4 5 6 7 8 9
| describe('Google', () => { beforeAll(async () => { await page.goto('https://google.com') })
it('should display "google" text on page', async () => { await expect(page).toMatch('google') }) })
|
테스트 수행
Puppeteer 옵션 추가
puppeteer 옵션 파일 만들기
jest-puppeteer.config.js1 2 3 4 5 6
| module.exports = { launch: { headless: false, timeout: 20000, }, };
|
cross-env 설치
package.json test 스크립트 수정
package.json1 2 3 4 5 6 7
| "scripts": { .......... - "test": "jest --colors", + "test": "cross-env DEBUG=test JEST_PUPPETEER_CONFIG=./jest-puppeteer.config.js jest --colors --runInBand --detectOpenHandles --config=./jest.config.js" .......... },
|
테스트 실행
이제 웹브라우저 창이 보이고 테스트가 될 겁니다
에러날 경우
ReferenceError: page is not defined
Cannot find name ‘page’ 에러가 날 경우는 type 설정이 안되어서 그렇다.
위의
1 2
| Types 설치 tsconfig.json 에 types 추가
|
두 가지를 다시 한번 해보시기 바랍니다.
연관포스트