Closed2
Vite でマルチページを Playwright でテストする
モチベーション
- ドキュメントに載せるサンプルコードを E2E テストできるようにしたい
-
Vite でマルチページ使いたい
- index.html と main.ts の組み合わせ
- Playwright で E2E テストを実行したい
戦略
- src/index.html でそれぞれのサンプルに飛べるようにしたい
-
env.loca
l で必要な設定を指定できるようにしたい- VITE_ を使う
- src/spam や src/egg とサンプル毎に細かく index.html と main.ts を用意したい
-
vite
時はいいが、vite build
時に困るので対応する必要がある -
vite.config.js
で rollupOptions の input を設定をする必要がある
-
- エントリーポイントを src/ 以下にしたい
- root で設定する
-
.env
のパスは root を変更するとそこに影響されてしまうので vite.config.js の envDir で指定する
- GitHub Actions でも検証したい
結果
- src 以下に好きにディレクトリを切ってその下に main.ts と index.html を置く
vite.config.js
import { resolve } from "path";
import { defineConfig } from "vite";
export default defineConfig({
root: resolve(__dirname, "src"),
build: {
rollupOptions: {
input: {
index: resolve(__dirname, "index.html"),
spam: resolve(__dirname, "src/spam/index.html"),
egg: resolve(__dirname, "src/egg/index.html"),
},
},
},
envDir: resolve(__dirname, "./"),
});
資料
Playwright
-
pnpm run dev
して、そこに対して playwright のテスト書きたい- vite --port でポート指定ができる
-
webServer
に指定する- https://playwright.dev/docs/test-webserver
-
command
にpnpm run dev
とかで実行するようにする- ここはブロッキングしないので気にしなくてイイ
-
url
に指定するところがステータスコードを返してくるとテストを開始する- localhost と 127.0.0.1 で挙動がなぜか異なるので、ちゃんと pnpm run dev で実行されるのにする
- vite --port でポート番号を固定できるのでポート番号固定する
- tests ディレクトリ以下に spam.spec.ts のようにファイルを置く
playwright.config.ts
import { defineConfig } from '@playwright/test'
export default defineConfig({
// Run your local dev server before starting the tests
webServer: {
command: 'pnpm run dev --port 9000',
url: 'http://localhost:9000/',
reuseExistingServer: !process.env.CI,
stdout: 'pipe',
stderr: 'pipe',
},
projects: [
{
testDir: 'tests',
},
],
})
このスクラップは2ヶ月前にクローズされました