Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンポーネントテストの手法と その効果を考える

nus3
September 20, 2024

コンポーネントテストの手法と その効果を考える

nus3

September 20, 2024
Tweet

More Decks by nus3

Other Decks in Technology

Transcript

  1. Vitest € Vite-nativeなテストフレームワーy € Viteと同じ設定でテストを実行できI € Jestとの互換性を意識したインターフェーQ € Testing Libraryを使えI

    € Browser Mode(experimental)ができたことで、
 コンポーネントをブラウザ上にレンダリングし、
 テストを実行できる
  2. R コンポーネントの開発環境E R R コンポーネントの開発フロー(Chromatic$ R コンポーネントのテス6 R Chromatic 、@storybook/test-runnerを使い、


    play関数に書いた内容をブラウザ上でテストできる コンポーネントのドキュメントE Interaction Testみたいな呼び方もあった気がしたけど、 新しいドキュメントではComponent testで統一されていたでござる
  3. R コンポーネントをブラウザ上にレンダリングし、
 テストを実行できX R 公式ではReact、Angular、Vue、Svelteに対1 R R Cypress Cloudというエンタープライズ向けのSaaSがあX R

    テストの解析やテストの並列化など、テストに関する 機能を提供 別ライブラリに対応するためのAPIも公開してそƒ
  4. Safetest `s あらかじめアプリケーションを起動しておく
 (npm run devなどW Ts Node.js: テストの中でrender関数が呼ばれるとブラウザ上でアプリケーション の画面に遷移しようとすE

    as ブラウザ: bootstarpが呼ばれると、importGlobで指定され、バンドルされた モジュール(コンポーネント)とテストケースがマッピン™ s ブラウザ: render関数で指定されたコンポーネント(モジュール)を
 importし、ブラウザ上にレンダリン™ 8s Node.js側に戻り、render関数以降のテストがPlaywright実行 多分、こんな流れのはず
  5. 計測したライブラリ 8 Vitest + jsdoE 8 Vitest (Browser Mode) +

    Playwrigh( 8 Vitest (Browser Mode) + WebdriverIA 8 WebdriverIA 8 Storybook (@storybook/test-runner! 8 Safetest 今回実装した内容は以下のリポジトリにあるヨ (⁨⁩色々整ってないけど、許してネ) https://github.com/nus3/benchmark-component-test
  6. WebDriver BiDi c 新しいプロトコルで仕様の策定が進められていF c WebDriverの遅さ、CDPのChromium依存という
 両ライブラリの問題点を解消したプロトコX c c c

    Chrome、Edge、Firefoxでの実装が進んでF Puppeteer v23でFirefoxを操作する際に
 WebDriver BiDiがデフォルト€ WebDriverIOでもv9からWebDriver BiDiがデフォルトに
  7. ブラウザを使ったコンポーネントテスト s クロスブラウザ対応はWebDriver BiDiの動向が気になˆ s 仕様の策定がどう進んでいくg s 各ブラウザ、テストツールはどう対応するのg s 現状、experimentalなものが多t

    s ドキュメントや導入事例が十分ではないことT s E2Eほどではないが、実行時間はjsdomと比べて長そ7 s 全てのコンポーネントをブラウザ上で
 レンダリングし、テストする必要はない
  8. Next.jsとコンポーネントテスト ‚ Next.js(App Router)とコンポーネントテストの関係が
 どうなっていくのかワタシキニナリマQ ‚ Client ComponentをテストするのはイメージできI ‚ Suspense使ってる(SSR

    Streaming)コンポーネントを 対象にブラウザを使ったコンポーネントテストは
 できるの8 ‚ コンポーネントテスト側でも同じ挙動が
 再現できるのか