NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Approval Tests implementation in Dart (Flutter). Inspired by ApprovalTests.
Last release 5 days ago
02 Oct 2026
Release timing varies
gaps range from 2 weeks to 8 months
Most releases are documented
notes for 13 of 15 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
15 releases · first in 2024
Adds the approval-tests-flutter-widget-testing package skill for AI agents writing widget, semantics, and golden tests. The skill includes capture set
Adds the approval-tests-flutter-widget-testing package skill for AI agents writing widget, semantics, and golden tests. The skill includes capture setup, working examples, baseline review, and CI guidance.
Install it from a project that depends on this package:
dart run skills@ get -p approval_tests_flutterNo runtime API or snapshot format changes.
approval-tests-flutter-widget-testing consumer skill with
widget, semantics, and golden examples, capture setup, and baseline review.dart run skills@ get.approval_tests_flutter 1.5.1
One column per month.
approval_tests_flutter 1.5.1
Widget-name cache writes are now atomic. flutter test runs test files in parallel processes that share one cache file, so the previous single write wa
flutter test runs test files in
parallel processes that share one cache file, so the previous single write
was observable by another process as a truncated file — a short read drops
names, which silently drops lines from a snapshot.ArgumentError on Windows.
AnalysisContextCollection rejects a path that is not absolute and
normalized; the lib and Dart SDK paths were built by string concatenation.setUpAll.listSync / createSync / writeAsStringSync calls inside the
async setup path are now awaited.printExpects(widgetTypes: ...) no longer ignores its argument after the
first call. A one-shot latch meant only the first set was ever registered.pathToStrings changes. Its "already
loaded" flag was checked but never set, so the file was re-read on every
call, and a different path could never win.ApprovalWidgets.tearDownAll(), which discards that session. It is
optional: omitting it reproduces the previous behaviour exactly. Add it
when one test file has groups with different registrations, since a
registerTypes call otherwise stays in effect for every later group in the
file and changes their snapshots.registerTypes keeps its signature but now writes into the current session.printExpects(widgetNames: ...) adds to the session's registered names
instead of replacing them, so a narrower set no longer hides names discovered
by setUpAll. This affects console output only, never an approved file.path as a direct dependency; it was already resolved transitively.loadWidgetNames() and the StringApprovedExtension.endWithNewline helper
in src/common.dart, both unused after the discovery rewrite. Neither was
exported from the package's public API.Snapshot output is unchanged. No *.approved.txt needs re-approving.
Deprecated tapWidget(shouldPumpAndSettle: ...). Existing calls still settle by default throughout 1.x; migrate to the explicit pumpPolicy parameter.
WidgetActionPumpPolicy so tapWidget() callers can explicitly choose no pump, one pump, a fixed-duration pump, or bounded settling.tapWidget(shouldPumpAndSettle: ...). Existing calls still settle by default throughout 1.x; migrate to the explicit pumpPolicy parameter.Fix (behavior change): approvalTest() now writes a full, self-contained snapshot of the widget tree on every call. Previously a second call in the sam
approvalTest() now writes a full, self-contained snapshot of the widget tree on every call. Previously a second call in the same test emitted only the delta from the prior call, producing snapshots that could not be reviewed in isolation. Existing approved files that relied on the old delta output must be re-approved.tester.approvalSemantics() — approval testing of the rendered accessibility (semantics) tree (labels, values, hints, tooltips, identifiers, actions); geometry is omitted so output is stable across platforms.tester.approvalGolden(finder) — golden/pixel approvals named to sit alongside the text approvals; run flutter test --update-goldens to (re)create the image.expectWidget / tapWidget / findBy finder helpers and registerTypes, and exposed widgetTypes / widgetNames on tester.printExpects().flutter --version subprocess; the Dart SDK is now resolved from FLUTTER_ROOT, making widget-name extraction faster and not dependent on flutter being on PATH.match dependency.Completer/.then wrappers with async/await (failures now propagate instead of hanging to timeout), guarded the analyzer parse-result cast, fixed the stale Approved.initialize() setup hint, and stopped tracking the generated .approval_tests/ cache.Raised the analyzer constraint to >=12.0.0 <14.0.0 to resolve a version conflict with flutter_test on current Flutter/Dart SDKs, whose pinned test/tes
analyzer constraint to >=12.0.0 <14.0.0 to resolve a version conflict with flutter_test on current Flutter/Dart SDKs, whose pinned test/test_api require analyzer 12+.ClassDeclaration.namePart.typeName), replacing the removed name token getter.Fixed loadWidgetNames to return an empty string when the widget cache file is missing, avoiding LateInitializationError.
loadWidgetNames to return an empty string when the widget cache file is missing, avoiding LateInitializationError.loadEnStringReverseLookup.WidgetMeta.hashCode to match its equality semantics, ensuring set/map deduplication works as intended.WidgetMeta equality.<4.0.0) to satisfy pub publishing requirements.example/main.dart showcasing a widget approval test.approval_tests now targets 1.3.3) to stay aligned with upstream packages.ContextLocator replaced by AnalysisContextCollectionNothing published for this version
Nothing published for this version
Upgraded all dependencies to actuals.
Updated README.md file: fix links.
Added CLI additional options: Usage: dart run approval_tests:review [arguments]
dart run approval_tests:review [arguments]
--help Print this usage information.--list Print a list of project .received.txt files.<index> Review an .received.txt file indexed by --list.<path/to/.received.txt> Review an .received.txt file.- Updated README.md file.
Added new reporter: GitReporter. It allows you to use git to view the differences between the received and approved files.
GitReporter. It allows you to use git to view the differences between the received and approved files.dart run approval_tests:review- Initial major release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →