{"id":53610,"plugin_id":"plugins_6abcb949170081919055247eaf18cfc0","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:54:35.336Z","digest":"4d91913022d3b56ae90152d4068dbc5bcae158809d9e7505832ce915eb0bbb29","against":null,"payload":{"description":"Design and run a layered Flutter test strategy across unit, widget, golden, integration, platform-channel, and native-UI tests with focused commands and reproducible device setup.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":189},{"relative_path":"references/testing-boundaries.md","size_in_bytes":758}],"name":"flutter-testing","skill_md_contents":"---\nname: flutter-testing\ndescription: Design and run a layered Flutter test strategy across unit, widget, golden, integration, platform-channel, and native-UI tests with focused commands and reproducible device setup.\n---\n\n# Flutter Testing\n\nPick the narrowest layer that proves the behavior.\n\n| Layer | Owns |\n| --- | --- |\n| unit | pure mapping, validation, state, repositories |\n| widget | UI states, semantics, forms, callbacks without a full device |\n| golden | visual contracts with pinned fonts/locale/size/renderer |\n| integration_test | full Flutter flows on a real target |\n| native | Kotlin/plugin implementation |\n| Patrol / Espresso / UI Automator | permissions, notifications, platform views |\n\n```bash\npython3 <marketplace-root>/scripts/flutter_exec.py --root . -- --version\n```\n\nRead `references/testing-boundaries.md` when Flutter and native UI meet.\n\n## Loop\n\n1. Read the change, acceptance criteria, nearby tests, past flakes.\n2. Draft happy / boundary / failure / lifecycle / a11y / platform cases.\n3. Implement highest-signal missing tests first.\n4. Run, refine once from failures, then widen the suite.\n\n## Commands\n\n```bash\nflutter test test/path/to/test.dart\nflutter test --plain-name \"specific behavior\"\nflutter test integration_test/app_test.dart -d <device-id>\n```\n\nUse `flutter drive` only when the project’s driver/lab requires it.\n\n## Stability\n\nPrefer type/text/semantics/key finders. Avoid unbounded `pumpAndSettle` when\nanimations or streams never idle. Control clocks, randomness, network, and\nstorage.\n\n## Platform channels\n\nFake the Dart side, unit-test native handlers, and keep one device path for\neach critical channel.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}