Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Storybookのインタラクションテストで UIの仕様をテストする
Search
kentaro ishida
January 30, 2026
36
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Storybookのインタラクションテストで UIの仕様をテストする
kentaro ishida
January 30, 2026
More Decks by kentaro ishida
See All by kentaro ishida
UXから考えるクライアントサイドのパフォーマンス監視設計
ishida2002
0
44
Renovateを(できるだけ)ノールックマージする
ishida2002
0
20
JavaScriptの便利な構文に潜む罠
ishida2002
0
25
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Rails Girls Zürich Keynote
gr2m
96
14k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Tell your own story through comics
letsgokoyo
1
1.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
How to make the Groovebox
asonas
2
2.5k
Skip the Path - Find Your Career Trail
mkilby
1
260
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Transcript
Storybookのインタラクションテストで UIの仕様をテストする 石田健太郎 2026年1月30日
自己紹介 石田 健太郎(いしだ けんたろう) 2002年生まれの23歳 株式会社kubell 新卒2年目のフロントエンドエンジニア 「Chatwork」のブラウザ版・デスクトップ版の 開発を担当
今回のテーマはStorybook
Storybook UIコンポーネントのカタログツール コンポーネントを独立した環境で開発・表示 ドキュメント化と視覚的な確認が可能 チーム全体でコンポーネントの状態を共有 こんなことに使える コンポーネントの視覚的な確認 Propsのバリエーション管理 デザインシステムのドキュメント化
今回はデモがあります
デモアプリ こんなアプリを作ってきました
デモタイム
デモアプリ ざっくりこんな感じ プロフィールを編集できるアプリ インライン編集的なことができるコンポーネントがコア これをStorybookで見てみましょう
デモタイム
コンポーネントの仕様 仕様はざっくりこんな感じ 編集ボタンを押すと編集モードに移行する 編集モードではテキストを編集できる 編集モードでキャンセルを押すと破棄される 編集モードで保存を押すとテキストが更新される 保存されたらフィードバックが表示される 3秒後にフィードバックが消える
コンポーネントの仕様 もし仕様変更があったら? 編集ボタンを押すと編集モードに移行する 本文をクリックでも編集モードに移行したいな〜 編集モードではテキストを編集できる 編集モードでキャンセルを押すと破棄される 確認ダイアログ出したいな〜 編集モードで保存を押すとテキストが更新される 保存されたらフィードバックが表示される 3秒後にフィードバックが消える
短いから5秒にしたいな〜
テスト、したくないですか?
できます! (しかも結構簡単に)
インタラクションテスト for Storybook Storybook上でユーザー操作をシミュレートして、UIの動作を検証できる機能 何が嬉しいのか ストーリー(表示例)がそのままテストになる Play関数で操作を書くだけ Storybook UI上で実行結果が見える 詳しくは公式をご覧ください
https://storybook.js.org/docs/writing-tests/interaction-testing
デモタイム
便利!
どうやって書くの?
Play関数の基本 主に3つのAPIを利用 1. within() 対象要素のスコープを指定 コンポーネント内の要素を検索 2. userEvent ユーザー操作のシミュレーション click,
type, hover など 3. expect() 検証 UIの状態が期待通りか確認
Play関数のコード こんな感じ export const WithInteractionTest = { play: async ({
canvasElement }) => { const canvas = within(canvasElement); // 編集ボタンをクリック await userEvent.click(canvas.getByText('編集')); // テキストを入力 await userEvent.type(canvas.getByRole('textbox'), 'New Text'); // 保存ボタンをクリック await userEvent.click(canvas.getByText('保存')); // 保存成功メッセージを検証 await expect(canvas.getByText('保存しました!')).toBeInTheDocument(); } }
CIでも動かせる
テストの自動実行 @storybook/addon-vitest を導入して以下のコマンドを実行するだけ vitest run 何が起こるか ストーリーがそのままテストケースになる playで記述したテストが実行される テスト結果が表示される ストーリーで書いたインタラクションがそのままテストとして機能
まとめ
まとめ Storybookのインタラクションテストを使えばUIの仕様をテストできる Play関数でユーザー操作をシミュレート within , userEvent , expect の3つのAPIで記述 ストーリーがそのままテストケースになる
ドキュメントとテストの一石二鳥 CIで自動実行できる @storybook/addon-vitest を導入するだけ ストーリーで書いたインタラクションがテストとして機能 ぜひ使ってみてください
終わりに デモアプリをGitHubで公開しています https://github.com/ishida-0622/storybook-play-demo 今回紹介した内容はVitest環境を前提としています 参考 Storybook https://storybook.js.org/docs/writing-tests/interaction-testing https://storybook.js.org/docs/writing-tests/integrations/vitest-addon
None