← ドキュメント一覧に戻る

単体試験仕様書

各関数・モジュール単位での試験項目を定義する。

1. content.js - getAuthorUsername()

URLパスからユーザー名を抽出する関数のテスト。

ID 分類 テスト内容 入力(URLパス) 期待結果
UT-001 正常 記事ページのユーザー名を取得 /catatsuy/articles/abc123 "catatsuy"
UT-002 正常 ユーザートップページ /example_user "example_user"
UT-003 正常 スクラップページ /testuser/scraps/xyz "testuser"
UT-004 異常 システムパス(settings) /settings/mutes null
UT-005 異常 システムパス(articles) /articles null
UT-006 異常 システムパス(search) /search null
UT-007 境界 ルートパス / null
UT-008 正常 ハイフン付きユーザー名 /my-user/articles/1 "my-user"

2. content.js - escapeHtml()

HTML特殊文字をエスケープする関数のテスト。

ID 分類 テスト内容 入力 期待結果
UT-010 正常 通常の文字列 "hello" "hello"
UT-011 異常 scriptタグを含む "<script>alert(1)</script>" HTMLエンティティにエスケープ
UT-012 異常 HTMLタグ "<b>bold</b>" "&lt;b&gt;bold&lt;/b&gt;"
UT-013 正常 アンパサンド "A & B" "A &amp; B"
UT-014 境界 空文字 "" ""

3. content.js - scrapeMutedUsers()

ミュート設定ページからユーザーリストをスクレイピングする関数のテスト。

ID 分類 テスト内容 前提条件 期待結果
UT-020 正常 ユーザーリンクが存在する DOM内に /username 形式リンク3件 3件がstorage.localに保存される
UT-021 正常 システムパスを除外する DOM内に /settings, /user1 ["user1"] のみ保存
UT-022 正常 重複を除去する DOM内に同一ユーザーリンク2件 1件のみ保存
UT-023 正常 大文字を小文字に変換 DOM内に /TestUser ["testuser"] として保存
UT-024 異常 ユーザーリンクが見つからない DOM内にユーザーリンクなし 20回リトライ後、失敗通知を表示
UT-025 正常 リトライで取得成功 3回目のリトライでリンクが出現 保存成功、同期通知表示

4. content.js - showMuteWarningModal()

警告モーダルの表示に関するテスト。

ID 分類 テスト内容 前提条件 期待結果
UT-030 正常 モーダルが生成される モーダル未表示 DOM内にoverlay要素が追加される
UT-031 正常 ユーザー名が表示される username = "catatsuy" モーダル内に @catatsuy が表示
UT-032 異常 二重表示の防止 モーダルが既に存在 新しいモーダルが生成されない
UT-033 正常 WAI-ARIA属性が設定される モーダル表示 role="dialog", aria-modal="true" あり
UT-034 正常 フォーカスが「戻る」ボタンに移動 モーダル表示直後 document.activeElement が戻るボタン
UT-035 正常 XSS対策 username = "<img onerror=alert(1)>" HTMLエスケープされて安全に表示

5. popup.js - addUser()

ポップアップからのユーザー手動追加のテスト。

ID 分類 テスト内容 入力 期待結果
UT-040 正常 正常なユーザー名の追加 "newuser" storageに追加、リスト再描画
UT-041 正常 大文字を小文字に変換して追加 "NewUser" "newuser" として保存
UT-042 正常 先頭の@を除去 "@testuser" "testuser" として保存
UT-043 異常 空文字の入力 "" 何も追加されない
UT-044 異常 スペースのみの入力 " " 何も追加されない
UT-045 異常 無効な文字を含む "user@name!" 「無効なユーザー名です」表示
UT-046 異常 重複するユーザー名 既に "testuser" 登録済み 「既に登録されています」表示
UT-047 境界 ハイフン・アンダースコア付き "my_user-name" 正常に保存

6. popup.js - removeUser()

ポップアップからのユーザー削除のテスト。

ID 分類 テスト内容 前提条件 期待結果
UT-050 正常 ユーザーを削除 ["user1", "user2"] 登録済み "user1" 削除後 ["user2"]
UT-051 正常 最後の1件を削除 ["user1"] のみ登録 空配列、空メッセージ表示
UT-052 正常 削除完了メッセージ 削除実行 「@user1 を削除しました」表示

7. content.js - SPA遷移検知(MutationObserver)

ID 分類 テスト内容 前提条件 期待結果
UT-060 正常 URL変更時にmain()が再実行される SPA遷移によりURLが変更 500ms後にmain()が呼ばれる
UT-061 正常 既存モーダルが削除される モーダル表示中にSPA遷移 モーダルがDOMから除去
UT-062 正常 URL未変更時はスキップ DOM変更あるがURL同一 main()は呼ばれない