各関数・モジュール単位での試験項目を定義する。
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" |
HTML特殊文字をエスケープする関数のテスト。
| ID | 分類 | テスト内容 | 入力 | 期待結果 |
|---|---|---|---|---|
| UT-010 | 正常 | 通常の文字列 | "hello" |
"hello" |
| UT-011 | 異常 | scriptタグを含む | "<script>alert(1)</script>" |
HTMLエンティティにエスケープ |
| UT-012 | 異常 | HTMLタグ | "<b>bold</b>" |
"<b>bold</b>" |
| UT-013 | 正常 | アンパサンド | "A & B" |
"A & B" |
| UT-014 | 境界 | 空文字 | "" |
"" |
ミュート設定ページからユーザーリストをスクレイピングする関数のテスト。
| 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回目のリトライでリンクが出現 | 保存成功、同期通知表示 |
警告モーダルの表示に関するテスト。
| 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エスケープされて安全に表示 |
ポップアップからのユーザー手動追加のテスト。
| 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" |
正常に保存 |
ポップアップからのユーザー削除のテスト。
| ID | 分類 | テスト内容 | 前提条件 | 期待結果 |
|---|---|---|---|---|
| UT-050 | 正常 | ユーザーを削除 | ["user1", "user2"] 登録済み |
"user1" 削除後 ["user2"] |
| UT-051 | 正常 | 最後の1件を削除 | ["user1"] のみ登録 |
空配列、空メッセージ表示 |
| UT-052 | 正常 | 削除完了メッセージ | 削除実行 | 「@user1 を削除しました」表示 |
| ID | 分類 | テスト内容 | 前提条件 | 期待結果 |
|---|---|---|---|---|
| UT-060 | 正常 | URL変更時にmain()が再実行される | SPA遷移によりURLが変更 | 500ms後にmain()が呼ばれる |
| UT-061 | 正常 | 既存モーダルが削除される | モーダル表示中にSPA遷移 | モーダルがDOMから除去 |
| UT-062 | 正常 | URL未変更時はスキップ | DOM変更あるがURL同一 | main()は呼ばれない |