Playwright on Dockerをセットアップする(2022)
jestでの利用が非推奨になっていた
関連記事:
DockerのPlaywrightにGoogle Chrome(とEdge)を追加する
Docker Playwrightのスリム化を考える
ChromeでPlaywright codegenを行う方法
------------------- ↓ 前書はここから ↓-------------------
E2EについてはSeleniumばっかり扱っていたので、
Playwrightはちょっとご無沙汰。
久々に実行してみると、
すっかり動かなくなっていた。
(^_^;) なんでやねん
Jest経由で設置していたのだが、
どうやらテストランナーがPlaywright本体に移り、
インストール方法なども変わっていた。
「 We recommend the official Playwright test-runner (@playwright/test)」
It's more flexible, lightweight, optimized for Playwright, and has TypeScript support out of the box. This doesn't mean, that we stop with maintaining this package.
https://github.com/playwright-community/jest-playwright
メンテは続けるけど本家使ってねてところか。
( ̄ー ̄) もう一回最初からやってみるか。
ということで再度セットアップから整理してみることにした。
決して焼き直し記事ではない。断じて!
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
プロジェクト作成
Playwright側にテンプレートがあるので、
それを使ってプロジェクトを作成する
npm init playwright@latest pw-project
Initializing project in 'pw-project'
✔ Do you want to use TypeScript or JavaScript? · TypeScript
✔ Where to put your end-to-end tests? · tests
✔ Add a GitHub Actions workflow? (Y/n) · false
✔ Install Playwright operating system dependencies (requires sudo / root - can be done manually via sudo npx playwright install-deps')? (y/N) · false
npx playwright test
Dockerfile作成
docker経由で使うので、
ビルドのためのDockerfileを作る。
touch Dockerfile
# Prebuilt MS image
FROM mcr.microsoft.com/playwright:focal
ENV PWUSER pwuser
# Install aws-lambda-ric build dependencies
#RUN echo 'nameserver 1.1.1.1' | tee /etc/resolv.conf
RUN apt-get update && apt-get install -y sudo bash-completion less nano wget curl\
&& usermod -aG sudo $PWUSER\
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' | tee -a /etc/sudoers\
&& npm i -g npm\
&& npx playwright install msedge
USER $PWUSER
WORKDIR /home/$PWUSER/app
RUN sudo chown -R $PWUSER:$PWUSER /home/$PWUSER/app
COPY . .
RUN npm init -y\
&& npm i -D playwright @playwright/test dotenv
# ENTRYPOINT ["node", "./sample.js"]
touch Dockerfile
touch .env
npm init -y
npm i -D playwright @playwright/test dotenv
docker-compose.yml作成
コマンド長くなるのでdocker-composeも使えるようにする
version: "3"
services:
pw:
container_name: pw
image: pw:1.0
build:
context: .
dockerfile: ./Dockerfile
# tty: true
user: 1000:1000
dns:
- 1.1.1.1
- 8.8.8.8
volumes:
- ./:/home/pwuser/app/
working_dir: /home/pwuser/app
entrypoint: npx playwright test
Playwright起動
docker-compose run --rm pw
Running 75 tests using 1 worker
Slow test file: [firefox] › example.spec.ts (36s)
Slow test file: [webkit] › example.spec.ts (30s)
Slow test file: [chromium] › example.spec.ts (23s)
Consider splitting slow test files to speed up parallel execution
75 passed (2m)
To open last HTML report run:
npx playwright show-report
(・∀・) テストかんりょー
firefox, webkit, chromiumでテストされているのがわかる
------------------- ↓ 後書きはここから ↓-------------------
Edgeを使う
IEのサポートがあと3ヶ月で終わる今日この頃(令和4年3月18日現在)
IEに変わるWindows標準としてMSEdgeとなるが、
テストでも必須になるだろう。
そこで先のテストにedgeを追加する。
上記、Dockerfile上ではインストールされているので、
テストランナーにegdeを追加する
/* Test against branded browsers. */
- // {
- // name: 'Microsoft Edge',
- // use: {
- // channel: 'msedge',
- // },
- // },
+ {
+ name: 'Microsoft Edge',
+ use: {
+ channel: 'msedge',
+ },
+ },
Discussion