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

パスキーの自動テストはどこまでいけるのか

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for teamLab teamLab PRO
October 12, 2026

 パスキーの自動テストはどこまでいけるのか

このスライドはフロントエンドカンファレンス関西2026 の登壇に使用したスライドのアーカイブになります。

チームラボでは、フロントエンドエンジニアを募集しています。
少しでも、チームラボにご興味をお持ち頂けましたら、採用ページをご覧頂けますと幸いです。
https://www.team-lab.com/recruit/

Avatar for teamLab

teamLab PRO

October 12, 2026

More Decks by teamLab

Other Decks in Technology

Transcript

  1. 自己紹介 Shida Hiroto 志田 洋斗 所属| チームラボ パッケージチーム フロントエンド班 モアイが好き

    フロントエンドカンファレンス北海道2025でも パスキーの話をしました 意外と簡単!?フロントエンドでパスキー認証を実 現する WebAuthn © teamLab Inc. 2
  2. パスキー登録の流れ ユーザ 認証器 ブラウザ サーバ パスキー作成開始 登録に必要な情報 WebAuthn navigator.credentials.create() 端末でユーザ検証

    (指紋/顔/PIN) 鍵生成して 結果を送信 応答を検証し 公開鍵など保存 パスキー登録完了 ユーザ 認証器 ブラウザ © teamLab Inc. サーバ 6
  3. パスキー登録の流れ ユーザ 認証器 ブラウザ サーバ パスキー作成開始 登録に必要な情報 WebAuthn navigator.credentials.create() 端末でユーザ検証

    (指紋/顔/PIN) 鍵生成して 結果を送信 応答を検証し 公開鍵など保存 指紋や顔認証が必要なのに どうやって自動テストするの...? パスキー登録完了 ユーザ 認証器 ブラウザ © teamLab Inc. サーバ 7
  4. CDP (Chromium DevTools Protocol) の 仮想認証器 以前から Chromium 限定ではあるが WebAuthn

    の仮想認証器を使うことはできた WebAuthn タブから仮想認証器を 使うことも可能 Playwright の CDPSession を用いて 同様に仮想認証器を使うことも可能 © teamLab Inc. 10
  5. Playwright のパスキーの自動テストコード例 test('パスキーを登録してログインできる', async ({ page, context }) => {

    await context.credentials.install(); // 仮想認証器を有効化 await page.goto('https://*****.com/passkey/register'); await page.getByRole('button', { name: 'パスキーの作成をする' }).click(); await expect(page.getByRole('list', { name: 'パスキー一覧' })) .toContainText('登録したパスキー名'); await page.getByRole('button', { name: 'ログアウト' }).click(); await page.goto('https://*****.com/login'); await page.getByRole('button', { name: 'パスキーでログイン' }).click(); await expect(page.getByRole('button', { name: 'ログアウト' })) .toBeVisible(); }); © teamLab Inc. 11
  6. つまりどうなる? 一連の流れが、全て playwright のテストコードで実行可能に! ユーザ 認証器 ブラウザ サーバ Playwright パスキー作成開始

    仮想認証器 ブラウザ パスキー作成開始 登録に必要な情報 登録に必要な情報 WebAuthn navigator.credentials.create() WebAuthn navigator.credentials.create() 端末でユーザ検証 (指紋/顔/PIN) 実認証器のように 鍵生成して 結果を送信 鍵生成して 結果を送信 応答を検証し 公開鍵など保存 応答を検証し 公開鍵など保存 パスキー登録完了 ユーザ 認証器 サーバ パスキー登録完了 ブラウザ サーバ Playwright © teamLab Inc. 仮想認証器 ブラウザ サーバ 13
  7. たしかに自動テストはできる ・パスキーが一覧に表示されない Playwright ・登録したパスキーでログインできない 仮想認証器 ブラウザ サーバ パスキー作成開始 登録に必要な情報 ・認証後もログイン済み状態にならない

    WebAuthn navigator.credentials.create() といった不具合は検知できる ただ、認証器の実挙動を 担保してるわけではない 実認証器のように 鍵生成して 結果を送信 応答を検証し 公開鍵など保存 パスキー登録完了 Playwright © teamLab Inc. 仮想認証器 ブラウザ サーバ 18