SAKURUGのTokiです。
本記事ではPlaywrightを使用してNuxt3環境でのE2Eテスト待機処理についてステップバイステップでご紹介します!
今回はvitestを使用していません。Nuxt3環境でのE2Eテストのみ実行する為です。
総8回でNuxt3環境におけるPlaywrightを使用したE2Eテストについてご紹介してます。
1.環境構築
2.テスト生成
3.テスト実行
4.テスト結果確認
5.Basic認証
6.Cookie認証
8.Nuxt(SSR)に対応した待機処理 (本記事)
・waitForTimeout(1000) → 1秒待機
・watForLoadState('networkidle') → ネットワークが安定するまで待機(公式ドキュメントより非推奨)
DISCOURAGED consider operation to be finished when there are no network connections for at least
500
ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
DISCOURAGEDでは、少なくとも500ミリ秒の間ネットワーク接続がない場合、操作が終了したとみなす。 この方法をテストに使わないでください。代わりに、ウェブ・アサーションに頼って準備完了を評価してください。
参考 : Playwright - Page - waitForLoadState
・上記のアンチパターンを使用して、E2Eテストを作成している方
・Nuxt3環境でE2Eテストを行いたい方
・Nuxt特有のSSRやhydrationにより、Playwrightの待機処理で躓いている方
紹介すること : nuxt/test-utilsテストライブラリのインストール・Nuxt3に対応した待機処理方法
紹介しないこと : Playwrightの環境構築・テスト生成・テスト実行・テスト結果確認
※第1回~第4回の基本編でご紹介してます。
OS | Windows 11 |
---|---|
Node.js | 20.14.0 |
Nuxt.js | 38.1 |
Playwright / Tes | 1.45.1 |
nuxt / test-utils | 3.13.1 |
npm i --save-dev @nuxt/test-utils
"type": "module",
ES Modulesを使用する場合は、Node.jsにその情報を伝える必要があります。
そのために、package.json
に"type": "module"
を追加します。
このフィールドを指定することで、Node.jsがこのプロジェクトでES Modulesを使用することを認識し、
import
やexport
を正しく解釈できるようになります。
import { expect, test } from '@playwright/test';
test('test', async ({ page }) => {
await page.goto('/')
await waitForLoadstate('load')
await expect(page.getByRole('heading')).toHaveText('Welcome to Playwright!')
})
import { expect, test } from '@nuxt/test-utils/playwright'
test('test', async ({ page, goto }) => {
await goto('/', { waitUntil: 'hydration' })
await expect(page.getByRole('heading')).toHaveText('Welcome to Playwright!')
})
Nuxt 3はデフォルトでSSRを使用します。そのため、hydorationの完了を待機しないと、ボタンのクリックの際にVueコンポーネントが完全に実装されていない状態でテストが実行されてしまいます。その結果、テストが円滑に進行しません。
nuxt/test-utilsを追加することで、ページ遷移を行うgotoメソッドにwaitUntil:'hydration'
が追加されます。
本記事では、Nuxt3環境でのnuxt/test-utilsとPlaywrightを使用した待機処理についてご紹介しました。
Vue / Nuxt特有のSSRに対応した待機処理をnuxt/test-utilsを使用することで実行できます。
この記事を読んでいただきありがとうございます!
是非、他の記事も閲覧頂けますと幸いです。
1.環境構築
2.テスト生成
3.テスト実行
4.テスト結果確認
5.Basic認証
6.Cookie認証
8.Nuxt(SSR)に対応した待機処理 (本記事)