Skip to content

feat: add VRT sharding API and speed up snapshot capture - #3

Merged
keigomichi merged 2 commits into
mainfrom
feat/showfase-test-sharding-and-perf
Jul 7, 2026
Merged

keigomichi merged 2 commits into
mainfrom
feat/showfase-test-sharding-and-perf

Conversation

@keigomichi

@keigomichi keigomichi commented Jul 7, 2026 •

Copy link
Copy Markdown
Owner

Summary

VRT の実行時間短縮のための 2 つの変更。スナップショット撮影から冗長な pumpAndSettle と runAsync を排除し(出力 PNG はバイト一致のまま高速化)、SnapshotShard によるシャーディングを本体 API として追加してテストファイル分割によるプロセス内並列と CI ジョブ分割(SHARD_INDEX/TOTAL_SHARDS)を可能にする。playbook_snapshot 1.3.0 との同条件ベンチマーク(1000 シナリオ)で、記録モード単体 −8%、CI 1 ジョブ相当(1/8 担当 + ジョブ内 8 並列)で −40% を確認済み。

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.

公開 API は SnapshotShard と testShowfase(shard:) の追加のみ。SnapshotSupport.startDevice のシグネチャ変更は src/ 内部 API(未 export)。

How was this tested?

  • flutter test in packages/showfase_test — 46 件全パス(シャード分割の和集合・collision suffix 安定性の golden テスト、SnapshotShard のユニットテスト 17 件を新規追加)
  • 性能変更の無劣化検証: 改善前後で --update-goldens の出力 PNG を diff -r — ローカルベンチ 1000 枚と packages/showfase/example の 13 枚がすべてバイト一致
  • 性能計測(ローカル 1000 シナリオ、playbook_snapshot 1.3.0 と同一ウィジェット・同一デバイスで比較): 記録モード 21.2s(playbook 22.4–23.3s)、8 テストファイル分割の単一 flutter test で 7.2s、SHARD_INDEX=1 TOTAL_SHARDS=4 の環境変数経路で正しく 1/4(250 件)が実行されることを確認
  • dart run melos run analyze / format:check / test:flutter すべてパス
  • macOS でのみ実行(新規 golden は既存同様 text-free ジオメトリのため OS 非依存)

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.

🤖 Generated with Claude Code

keigomichi and others added 2 commits July 7, 2026 16:38
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@keigomichi
keigomichi marked this pull request as ready for review July 7, 2026 07:42
@keigomichi
keigomichi merged commit 65a3110 into main Jul 7, 2026
4 checks passed
@keigomichi
keigomichi deleted the feat/showfase-test-sharding-and-perf branch July 7, 2026 07:42
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