Skip to content

feat: add showfase_test package for golden testing (VRT) - #2

Merged
keigomichi merged 3 commits into
mainfrom
feat/showfase-test
Jul 6, 2026
Merged

keigomichi merged 3 commits into
mainfrom
feat/showfase-test

Conversation

@keigomichi

@keigomichi keigomichi commented Jul 6, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • 生成済みカタログ(showfasePreviews())を golden テストとして実行する新パッケージ showfase_test を追加
  • プレビュー × デバイスごとに個別の testWidgets を登録し、matchesGoldenFile で描画結果を検証する Visual Regression Test を実現
  • カタログのスナップショットは record-only 運用(CI が毎 PR 撮影して artifact 化。テキストのアンチエイリアスが OS 間でビット一致しないため golden はコミットしない。playbook-flutter / WinTicket と同方式)
  • パッケージ自身の self-test はクロス OS で完全一致するジオメトリのみの golden をコミットして比較
  • 役目を終えた設計ドキュメント DESIGN.md を削除

Related issue

N/A

Affected packages

  • showfase (runtime)
  • showfase_generator (build_runner)
  • showfase_annotation
  • showfase_test (golden testing)
  • packages/showfase/example
  • repo tooling / docs (melos, workspace, .github/, README)

Breaking change

  • Yes — this PR changes public API in a source-incompatible way.
  • No.

How was this tested?

  • melos run format:check / analyze / test / test:flutter / snapshot / build:verify すべて成功(macOS ローカル)
  • showfase_test の self-test 29 件(unit / リサイズ挙動 / 異常系 / ジオメトリ golden 比較)+ example のスナップショット撮影 13 件がすべて成功
  • golden PNG を意図的に破壊して比較が fail すること、復元後に pass することを確認(比較が実際に機能する証明)
  • flutter test --plain-name 'iPhone15 Buttons Simple button' で単一プレビューのみ実行できることを確認
  • 初回 CI でテキスト入り golden が Linux 上で 0.03% (20px) の diff で fail することを確認 → record-only 方式に切り替えて解消(テキストを含まないジオメトリ golden は Linux でも完全一致することを CI で実証済み)

確認事項:

  • CI の Take snapshots ステップが成功し、snapshots artifact に 13 プレビューの PNG が含まれること

Checklist

  • PR title follows Conventional Commits.
  • dart format . has been run.
  • dart analyze (or melos run analyze) passes locally.
  • dart test / flutter test passes locally in every affected package.
  • Public API additions/changes carry /// doc comments.
  • Generator changes: I re-ran dart run build_runner build in
    packages/showfase/example and committed the updated
    showfase.g.dart alongside the source change.
  • CHANGELOG.md in every affected package updated under an
    ## Unreleased heading.

keigomichi and others added 3 commits July 7, 2026 05:52
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… diffs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@keigomichi
keigomichi marked this pull request as ready for review July 6, 2026 21:12
@keigomichi
keigomichi merged commit 2083903 into main Jul 6, 2026
4 checks passed
@keigomichi
keigomichi deleted the feat/showfase-test branch July 6, 2026 21:13
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.

1 participant