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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for nus3 nus3
September 20, 2024

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

Avatar for nus3

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 ‚ コンポーネントテスト側でも同じ挙動が
 再現できるのか