Skip to content

test: lib の純粋アルゴに vitest characterization テストを導入 + CI (#38)#41

Merged
kako-jun merged 3 commits into
mainfrom
38-lib-tests
Jun 15, 2026
Merged

test: lib の純粋アルゴに vitest characterization テストを導入 + CI (#38)#41
kako-jun merged 3 commits into
mainfrom
38-lib-tests

Conversation

@kako-jun

Copy link
Copy Markdown
Owner

closes #38

概要

lib/OpenCV 非依存の純ロジック関数 に対し、現状挙動を golden master として固定する characterization テストを導入。テスト基盤 (vitest) と最小 CI を追加した。本番コード (lib の実装) は一切変更していない

対象関数とテスト観点

関数 ファイル 観点 件数
detectLineInApp lib/detectLineInApp.ts LINE Android/iOS 判定、Line/<digit> 境界、lookalike 除外、Android が iOS より先に評価される quirk、未対応プラットフォーム=null 13
orderPoints lib/opencv/paper-detection.ts 4点を [左上,右上,右下,左下] に並べ替え、y→x ソート、先頭4点のみ消費、y 同値時の安定ソート quirk、負座標 6
cornersToMat lib/opencv/paper-detection.ts cv.matFromArray(4,1,CV_32FC2,[x0,y0,...]) の配列レイアウトを stub cv で検証 1
formatSaveDate lib/storage.ts YYYY/MM/DD HH:mm 整形、ゼロ詰め、年は非パディングの quirk、秒/ミリ秒切り捨て (TZ=UTC pin) 5

24 テスト・全緑 (npm test = vitest run)。

対象外 (OpenCV / canvas / DOM 依存で純ロジックでない)

  • drawMeshWarp / drawTexturedTriangle (mesh-warp.ts) — Canvas 2D context 依存
  • image-utils.ts 全般 — canvas / Image / WebCodecs / DOM 依存
  • applyPerspectiveTransform / splitImage (image-transform.ts) — 実 cv.* 計算依存
  • findBoundingQuad / detectPaperContour (paper-detection.ts) — 実 cv.* (Canny/findContours 等) 依存
  • getImageSize / resizeImage / isWebCodecsSupported — DOM/ブラウザ API 依存

備考: 仕様にあった getPhaseStep は本リポに存在しないため対象外。

基盤・CI

  • vitest (devDependency) 導入、package.json"test": "vitest run" を追加
  • vitest.config.ts: @/* パスエイリアス解決、node 環境、TZ=UTC で日付テストを決定的に
  • .github/workflows/ci.yml: push main / PR で Node 22・npm cinpm testHUSKY: 0permissions: contents: read
  • lockfile は gitignore 対象外 (既に追跡済み)

現状挙動 pin (quirk)

  • detectLineInApp: Android ブランチが iOS より先 → 両方含む UA は 'android'
  • orderPoints: y 同値時は Array.sort の安定性に依存して先頭2点=top / 末尾2点=bottom に分割
  • formatSaveDate: 月日時分はゼロ詰めするが年はパディングしない

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 15, 2026

Copy link
Copy Markdown

Deploying machigai-salad with  Cloudflare Pages  Cloudflare Pages

Latest commit: 8cb7571
Status: ✅  Deploy successful!
Preview URL: https://49f88db7.machigai-salad.pages.dev
Branch Preview URL: https://38-lib-tests.machigai-salad.pages.dev

View logs

@kako-jun
kako-jun merged commit 773e5fe into main Jun 15, 2026
2 checks passed
@kako-jun
kako-jun deleted the 38-lib-tests branch June 15, 2026 06:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test: lib/ の純粋アルゴに vitest を導入する

1 participant