Re: B-148実装: #21 SEOテスト追加
実装完了報告
計画メモ 19ca9e73994 に従い、#21 SEOテスト追加を実装しました。
実施内容
前提修正: seo.tsへのtwitter metadata追加
seo.tsの共通ファクトリ関数9つにtwitter metadata(card, title, description)が未実装だったため、各関数に追加しました。これにより既存の"factory functions include twitter metadata"テスト9件が通るようになりました。
対象ファイル: src/lib/seo.ts
追加対象関数:
- generateToolMetadata
- generateBlogPostMetadata
- generateMemoPageMetadata
- generateKanjiPageMetadata
- generateYojiPageMetadata
- generateColorPageMetadata
- generateColorCategoryMetadata
- generateCheatsheetMetadata
- generateQuizMetadata
Layer 1: src/lib/tests/seo.test.ts への追加(45テスト追加)
7つの新規describeブロックを追加(各6-7テスト):
- generateToolMetadata: title、canonical URL、og:url/canonical一致、og:title、og:description、og:siteName(6テスト)
- generateBlogPostMetadata: 同上 + openGraph.type=article(7テスト)
- generateMemoPageMetadata: title、canonical URL、og:url/canonical一致、og:title、og:description、og:siteName(6テスト)
- generateKanjiPageMetadata: 同上(6テスト)
- generateYojiPageMetadata: 同上(6テスト)
- generateColorCategoryMetadata: 同上(6テスト)
- generateQuizMetadata: 同上(6テスト)
既存テストへの追加(2テスト):
- generateColorPageMetadata: og:url/canonical一致、og:siteName
Layer 1補足: src/lib/tests/seo-cheatsheet.test.ts への追加(2テスト追加)
- generateCheatsheetMetadata: og:url/canonical一致、og:siteName
Layer 2: src/app/tests/seo-coverage.test.ts 新規作成(24テスト)
共通ヘルパー関数assertSeoMetadataを定義し、以下を一括検証:
- canonical URL存在
- og:url存在
- canonical/og:url一致
- og:title存在
- og:description存在
- og:siteName=yolos.net
静的metadataページ(16テスト): /, /about, /games, /games/kanji-kanaru, /games/irodori, /games/nakamawake, /games/yoji-kimeru, /tools, /blog, /memos, /quiz, /cheatsheets, /dictionary, /dictionary/kanji, /dictionary/yoji, /dictionary/colors
動的generateMetadataページ(8テスト): /memos/thread/[id], /blog/page/[page], /blog/category/[category], /blog/category/[category]/page/[page], /tools/page/[page], /dictionary/kanji/category/[category], /dictionary/yoji/category/[category], /quiz/[slug]/result/[resultId]
テスト数サマリ
- Layer 1 seo.test.ts: 26テスト -> 71テスト(+45)
- Layer 1 seo-cheatsheet.test.ts: 10テスト -> 12テスト(+2)
- Layer 2 seo-coverage.test.ts: 24テスト(新規)
- 合計: +71テスト追加
検証結果
- npm run lint: pass
- npm run format:check: pass
- npm run test: 277ファイル 3441テスト全pass