AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Flutter Testing

skill-dhruvanbhalara-skills-flutter-testing · by dhruvanbhalara

Define testing strategy, test pyramid, and pattern-based conventions (Golden Variants, State Matrix, Interaction Contracts). Use when establishing test architecture or choosing the right testing approach for a Flutter project.

No reviews yet
0 installs
34 views
0.0% view→install

Install

$ agentstack add skill-dhruvanbhalara-skills-flutter-testing

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-dhruvanbhalara-skills-flutter-testing)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Flutter Testing? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Testing Strategy

  • Test Pyramid: More unit and widget tests, fewer integration tests. Unit tests are fastest and cheapest.
  • Mirror Test Rule: 100% logic and widget coverage. No code without a test.
  • Mirror Organization: Test files MUST strictly mirror the lib/ directory structure and end with _test.dart.
  • Coverage Targets: Target 100% logic coverage for domain and bloc layers.
  • Test Independence: Each test MUST be independent. No shared mutable state between tests.

Test Types Overview

| Type | Scope | Speed | Skill | |---|---|---|---| | Unit | Single function/class | Fast | dart-testing | | Widget | Single UI component | Medium | flutter-add-widget-test | | Integration | Full app / user flow | Slow | flutter-add-integration-test |

Pattern-Based Testing

These three patterns cut repetitive test setup, cover all visual states, and keep widget behavior consistent. They're conventions, not packages.

Golden Variant Testing

When a widget has multiple visual states (primary, disabled, hover, error), test all variants in a single structured group() with a Map:

  • Define a variants map where keys are state names and values are widget builders.
  • Each variant MUST be rendered in isolation (fresh pumpWidget call per variant).
  • Use deterministic golden file naming: goldens/..png.
  • Set a consistent surfaceSize via tester.view.physicalSize to avoid flaky pixel diffs.
  • When to use: Design system components, widgets with distinct modes/types.
  • When NOT to use: Integration tests or animation frame verification.

State Matrix Testing

Every stateful widget MUST be tested against ALL possible UI states. Use a state matrix to separate setup from verification:

  • Define a states map with every state the widget can render (loading, error, data, empty).
  • Write a single verify(stateName) callback that asserts correct rendering per state using switch expressions.
  • This pattern prevents the common mistake of only testing the "happy path".
  • When to use: Widgets with complex state machines (e.g., BLoC-driven screens).
  • When NOT to use: If verification logic varies wildly between states, write separate tests.

Interaction Contract Testing

Reusable widgets have implicit behavioral rules. Define these as explicit, reusable contracts:

  • Create helper functions in test/utils/ for common contracts:
  • verifyTappable(tester, finder, mockCallback) — Tap fires callback exactly once.
  • verifyDisabledNotTappable(tester, finder, mockCallback) — Tap does NOT fire callback when disabled.
  • verifyValidatesOnBlur(tester, finder) — Validation triggers when focus leaves.
  • Apply contracts consistently across all widgets sharing the same behavior.
  • When to use: Widgets with strictly defined behavioral rules that must hold across refactors.
  • When NOT to use: One-off logic unique to a single widget.

Test Naming & Structure

  • Test Naming: Use string interpolation for test group names: group('$ClassName', not group('ClassName',. This ensures consistency and enables better tooling support.
  • Test Grouping: Use group() to organize tests by feature, class, or state for clearer reporting.
  • Descriptive Names: Test names should clearly describe what is being tested and why.

Common Test Errors

  • A RenderFlex overflowed... — Wrap widget in Expanded or constrain dimensions in test
  • Vertical viewport was given unbounded height — Wrap ListView in SizedBox with fixed height in test
  • setState called during build — Defer state changes to post-frame callback
  • No MediaQuery widget ancestor — Always wrap test widget in MaterialApp

Running Tests (Quick Reference)

  • flutter test — Run all unit and widget tests
  • flutter test test/path/to/file_test.dart — Run specific test file
  • flutter test integration_test/ — Run integration tests
  • flutter test --coverage — Run with coverage report
  • dart test — Pure Dart unit tests

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.