Programowanie · Testowanie
flutter-testing
/flutter-testing
Układa strategię testów automatycznych we Flutterze: piramidę testów i konwencje nazewnictwa dla wszystkich aplikacji.
Dla kogo
- Autor
- dhruvanbhalara ↗
- Repozytorium
- skills ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 30.08.2026
Ocena i bezpieczeństwo
90/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść25 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
- Pliki w paczce
- 1
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Przestarzałość
Brak sygnałów. Repozytorium zmienione 30.08.2026, bez odwołań do wycofanych modeli i API.
Licencja
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Układa strategię testów automatycznych we Flutterze: piramidę testów i konwencje nazewnictwa dla wszystkich aplikacji.
Oryginalny opis (EN)
Use when defining automated testing strategies, organizing test pyramids, or establishing test naming conventions across Flutter apps.
Jak działa
- Golden Variant Testing
- State Matrix Testing
- Interaction Contract Testing
Sekcje z nagłówków SKILL.md, w oryginale · 69 linii, 585 słów
Podgląd SKILL.md
---
name: flutter-testing
description: Use when defining automated testing strategies, organizing test pyramids, or establishing test naming conventions across Flutter apps.
metadata:
platforms: "flutter"
languages: "dart"
category: "testing"
---
# 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<String, Widget Function()>`:
- 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/<component>.<variant>.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
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · dhruvanbhalara/skills | 90 | MIT |
| HoangNguyen0403/agent-skills-standard | 100 | MIT |
| testland/qa | 100 | MIT |
| thiennc-tesoglobal/flutter-skills | 100 | BSD-3-Clause |
| ethiel97/flutter-clean-riverpod-skills | 100 | MIT |
| jyotiraditya-chauhan/test-kit | 100 | MIT |
| madteacher/mad-agents-skills | 100 | MIT |
Migawka bazy z 28.10.2026 · wersja paczki 1ea1c414a931 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 95testing-flutter
Pomaga pisać testy i strategię testowania aplikacji Flutter 3.47 z BLoC v9 i Riverpod 3. - 95qa-strategy
Projektuje strategię testów: piramidę testów, architekturę E2E, wydajność i proces triage błędów. - 100flutter-testing-apps
Implementuje testy jednostkowe, widgetów i integracyjne aplikacji Flutter, by zapewnić jakość kodu i zapobiegać regresjom. - 80alpha-core:testing-patterns
Układa strategię testów: piramidę testów, TDD i BDD, mockowanie, dane testowe, testy migawkowe i mutacyjne. - 85flutter-core:flutter-testing-quality
Pisze testy aplikacji Flutter: jednostkowe, widgetów, integracyjne i golden, z mockami, pokryciem i profilowaniem w DevTools. - 100eng-testing
Prowadzi przy pisaniu testów, projektowaniu strategii testów i przeglądzie pokrycia: piramidę testów, nazewnictwo, mockowanie i politykę testów niestabilnych.