testing
Best practices for Dart unit tests, Flutter widget tests, and golden file tests, covering group and test naming, setUp lifecycle and isolation, mocking with package:mocktail, and the shared pumpApp helper. Use when writing, modifying, or reviewing tests, goldens included, that use package:test, package:flutter_test, package:mocktail, or package:bloc_test, and when no package is named: adding a golden test, matchesGoldenFile, tagging or updating goldens, writing a unit or widget test, or adding a test helper or mock. A one-line golden or widget test request is in scope, including under "Dart code only"; a widget in a UI package is ui-package's. Use it too when the request asks for what these standards forbid: package:mockito, a raw string test tag instead of TestTag, an inline pumpWidget(MaterialApp(...)), asserting padding, color or font size in a widget test, or state shared between tests.
Install
With your agent
Install OMGSkills skill "verygoodopensource/vgv-ai-flutter-plugin:skills/testing" into this agent's normal skills directory: call the OMGSkills MCP get_install_plan tool for your agent and run the script it returns (it installs only the pinned commit and verifies SKILL.md), and stop if MCP or the pin is unavailable. Do not overwrite or change existing skills without asking me.
Manual command
git clone https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin /tmp/vgv-ai-flutter-plugin && ln -s /tmp/vgv-ai-flutter-plugin/skills/testing ~/.claude/skills/testing
From README
Dart & Flutter Testing VGV testing conventions for Dart and Flutter. The framework APIs are assumed; what follows is the house style layered on top of them. Core Standards Apply these standards to all test work: Descriptive test names — verbose, readable names that describe the behavior; never 'works' or 'renders' Hierarchical group/test structure that reads as natural sentences — top-level group for the class, nested group for the method, test for the behavior (e.g., UserRepository → getUser → returns User when API succeeds) String interpolation for type references — use 'returns $User' not 'returns User' so renames propagate automatically Private mocks per file — declare class MockX extends Mock implements X {} with underscore prefix to prevent cross-file coupling Contained test within groups — all /tearDown calls live inside a group, never at the top level of main() Initialize mutable objects in () with late — declare late MyDep dep; then assign in so each test gets a fresh...
More from this repo
accessibility
Audits or remediates Flutter widgets against WCAG 2.2 conformance levels A, AA, or AAA across iOS, Android, Web, macOS,...
animations
Best practices for Flutter animations using the built-in animation framework, covering implicit animations, explicit...
bloc
Best practices for Bloc state management in Flutter/Dart, covering Cubit versus Bloc, event and state naming, sealed...
