locale_sweep 0.6.1
locale_sweep: ^0.6.1 copied to clipboard
A CI quality gate for Flutter localization. Runs app flows across locales, device sizes, text scales, and RTL modes, then reports broken screens with screenshot proof.
0.6.1 #
- Truncation findings no longer fail direct tests — truncation issues are now advisory in
flutter testruns. They are recorded inSweepResultfor the CLI's--fail-on truncationto handle, preventing unexpected test failures in existing suites after upgrading to 0.6.0.
0.6.0 #
- Text truncation detection — after every
pumpAndSettle(), walks the render tree to findRenderParagraphnodes where text is silently truncated byellipsis,clip, orfadeoverflow modes. Reports the text, locale, overflow mode, available vs. desired width, and maxLines. Catches localization bugs that overflow detection misses — translated strings that fit the container but lose content. --fail-on truncation— new category for the--fail-onflag. Truncation findings are included in Markdown, HTML, and JSON reports alongside overflows and ARB issues.- Report improvements — Markdown and HTML locale summary tables include a Truncations column. HTML report adds a Truncations summary card. CLI summary line includes truncation count.
- Backwards compatible —
truncationsfield defaults to empty; existing JSON results without it deserialize cleanly.
0.5.1 #
- Reliable exit codes — ARB-only findings now mark variants as failed and respect
--fail-on; unexpected test, setup, compilation, and result-read failures always return a non-zero exit, even with--fail-on none. - Consistent reports — Markdown, HTML, JSON, CLI summaries, and process exit codes now derive pass/fail state from the same result model. Reports also expose execution errors when a run is incomplete.
- Current-run isolation — every CLI invocation writes to a unique results directory, so stale files cannot contaminate a later report. Duplicate flow names across test isolates are preserved, and corrupt or partial results fail visibly.
- Configuration propagation —
sweepTest()now loads the CLI-selected YAML file and environment overrides automatically. Explicit Dart arguments remain highest priority, includingscreenshotDir. - Safer CLI orchestration — single-package, monorepo, shard, merge, and golden-update paths share the same validation and failure rules. Invalid categories, shard ranges, configs, flow selections, and missing packages fail clearly.
- 329 tests total across 17 test files.
0.5.0 #
- Localizations integration — new
localizationsDelegatesparameter onsweepTest(). Wraps the widget in aLocalizationsancestor soAppLocalizations.of(context)works for individual screen tests without needing a fullMaterialApp. Fallback Material/Widgets delegates are included automatically for all locales. baseLocaleconfig — configurable base locale for ARB analysis. Set viasweepTest(baseLocale:), YAMLbase_locale:, orLOCALE_SWEEP_BASE_LOCALEenv var. Defaults to'en'.parseLocale()helper — proper BCP-47 locale parsing. Handlesen,en_US,pt-BR,zh_Hans,zh_Hans_CN. Used internally and exported for user convenience.- Example app uses
flutter gen-l10n— all three example screens now useAppLocalizations.of(context)instead of hardcoded strings. Demonstrates both patterns: fullMaterialAppwith delegates (home) and screen-in-isolation withlocalizationsDelegatesparam (settings, profile). - 320 tests total across 16 test files.
0.4.2 #
- German umlaut fix — screenshot gallery now renders proper umlauts (Übersetzungen, Prüfungen, Schlüssel, etc.) instead of ASCII fallbacks.
- Japanese translations — gallery screenshots use real Japanese text instead of untranslated English strings. Added NotoSansJP font for CJK rendering.
- Version badge — gallery screenshots updated from v0.1.1 to v0.4.1.
0.4.1 #
- Example app — 3 sweep tests across 8 locales (en, de, ar, ja, ko, he, th, hi) with intentional bugs: missing ARB keys, placeholder mismatches, untranslated strings, overflow layouts, RTL issues.
- Arabic RTL screenshot — README gallery now shows real Arabic text with mirrored layout instead of Config screen. Added NotoNaskhArabic font for proper rendering.
- pub.dev Example tab — updated
example.dartwith 64-variant sweep (8 locales × 2 scales × 2 viewports × 2 brightness).
0.4.0 #
- Parallel sharding —
--shards N --shard-index ICLI flags split variant matrices across CI jobs. Passes through toflutter test --total-shards/--shard-index. - Merge command —
locale_sweep merge -i shard_0 -i shard_1combines shard reports into a single HTML/Markdown/JSON report. Supports--github-prand--fail-on. - Monorepo support —
locale_sweep scanauto-discovers packages withtest/sweep/dirs (checksmelos.yamlfirst).--packages apps/auth,apps/dashboardruns sweep across multiple packages with merged reporting. - Landscape presets — 4 new presets:
phoneSmallLandscape(667x375),phoneLandscape(852x393),phoneWideLandscape(915x412),tabletLandscape(1024x768). - CLI progress — real-time pass/fail counts during
flutter testruns. - Environment overrides —
LOCALE_SWEEP_LOCALES,LOCALE_SWEEP_TOLERANCE, etc. for CI without modifying YAML. - setUp callback —
sweepTest(setUp: () async { ... })for loading custom fonts before the sweep group. - CLI parser extracted — testable
cli_parser.dartlibrary with 43 new tests. - Bug fix — ARB analyzer false positives on ICU plural/select syntax (
{count, plural, ...}). - Bug fix — CLI crash from transitive
dart:uidependency. ExtractedDiffResultandOverflowErrorinto pure-Dart files. - Bug fix — removed
httppackage dependency.GitHubReporterusesdart:ioHttpClientdirectly. - 283 tests total across 14 test files.
0.3.0 #
- Screenshot diffing — pixel-level diff via
GoldenDiffer.computeDiff(). Per-channel threshold of 2 absorbs anti-aliasing jitter. - Tolerance —
toleranceparameter onsweepTest()and inlocale_sweep.yaml. Screenshots within tolerance pass even when pixels differ. - Diff images — 3-panel side-by-side (Golden | Actual | Diff) saved to
.locale_sweep/diffs/. Changed pixels highlighted in magenta. - Diff in reports — Diff % column in Markdown, diff badge + link in HTML, structured object in JSON.
- DiffResult model —
diffPercent,changedPixels,totalPixels,diffImagePathwith full JSON serialization. - Config —
tolerancekey in YAML,toleranceanddiffOutputDirparams onsweepTest(). - 202 tests total across 11 test files.
0.2.0 #
- Dark mode —
darkMode: trueonsweepTest()tests every variant in both light and dark brightness. OptionallightTheme/darkThemeparams. - Variant exclusion —
skipcallback to exclude specific locale/scale/viewport/brightness combos. - HTML report — self-contained dashboard with dark theme, summary cards, screenshot gallery, interactive filters, locale summary table.
- --fail-on — CLI flag for selective failure categories (
overflow,arb,golden,all,none). - Config validation — warns on unknown keys (typos) and type mismatches. Falls back to defaults.
- File-based results — each flow writes JSON to
.locale_sweep/results/. Isolate-safe, no global state. - 167 tests total.
0.1.7 #
- Updated README with variantBody examples, SweepVariant API docs, untranslated detection docs.
0.1.6 #
- Auto-published on 2026-09-03.
0.1.5 #
- Expanded RTL locale detection: 10 locales (ar, he, fa, ur, ku, ps, yi, dv, sd, ug) with subtag support (e.g. ar_EG).
- CLI now reads
locale_sweep.yamlconfig file via--configflag. - CLI uses
GitHubReporterfor PR comments instead of duplicate HTTP logic. - Added
variantBodycallback tosweepTest()for locale-aware test interactions. - Added
ArbIssueType.untranslateddetection for strings identical to the base locale.
0.1.4 #
- Fixed Dart SDK constraint from ^3.11.5 to ^3.8.0 for broader compatibility.
- Centered title and badges on pub.dev README.
- Updated CI workflows to Flutter 3.41.9.
0.1.3 #
- Rewrote README for pub.dev compatibility — pure Markdown, proper image alignment.
- Added CI and auto-publish GitHub Actions workflows.
0.1.2 #
- Updated README with professional layout and screenshot gallery.
- Fixed GitHub repository URLs in pubspec.yaml.
0.1.1 #
- Add dartdoc comments to all public API elements.
- Add
example/example.dartfor pub.dev example tab. - Real-world validation: tested against Spotube (48k stars) and wger (960 stars).
0.1.0 #
- Initial release.
sweepTest()generateslocales × textScales × viewportstest matrix.OverflowDetectorcaptures RenderFlex overflow with pixel counts.ArbAnalyzerdetects missing ARB keys and placeholder mismatches.- Golden screenshot comparison (
runvsupdatecommands). - Markdown and JSON report generation.
- GitHub PR comment integration.
- Built-in viewport presets: phone, phoneSmall, phoneWide, tablet.
- RTL auto-detection for Arabic, Hebrew, and Farsi.