test-driven-development
Write tests first, watch them fail, then implement minimal code to pass.
dart-add-unit-test
Write and organize unit tests for functions, methods, and classes using package:test. Use when creating new logic or fixing bugs to ensure code remains correct and regression-free.
Full skill instructions
Organize test files to mirror the lib directory structure to maintain predictability.
test directory at the root of the package._test.dart to the end of all test file names (e.g., lib/src/utils.dart should be tested in test/src/utils_test.dart).integration_test directory at the root of the package.Utilize package:test as the standard testing library for Dart applications.
package:test/test.dart (or package:flutter_test/flutter_test.dart for Flutter).group() function to provide shared context.test() function.expect() function alongside matchers (e.g., equals(), isTrue, throwsA()).async/await syntax. The test runner automatically waits for the Future to complete.setUp() and tearDown() callbacks.package:mockito alongside package:test to generate mock objects, configure fixed scenarios, and verify interactions.Select the appropriate test runner based on the project type and test location.
dart test command.flutter test command.dart test integration_test or flutter test integration_test.Follow this sequential workflow when implementing new test suites. Copy the checklist to track your progress.
test/ directory, ensuring the _test.dart suffix.package:test/test.dart and the target library.main() function.setUp().test() cases grouped by functionality using group().Demonstrates grouping, setup, synchronous, and asynchronous testing.
import 'package:test/test.dart';
import 'package:my_package/calculator.dart';
void main() {
group('Calculator', () {
late Calculator calc;
setUp(() {
calc = Calculator();
});
test('adds two numbers correctly', () {
expect(calc.add(2, 3), equals(5));
});
test('handles asynchronous operations', () async {
final result = await calc.fetchRemoteValue();
expect(result, isNotNull);
expect(result, greaterThan(0));
});
});
}
Demonstrates configuring a mock object for dependency injection testing.
import 'package:test/test.dart';
import 'package:mockito/mockito.dart';
import 'package:mockito/annotations.dart';
import 'package:my_package/api_client.dart';
import 'package:my_package/data_service.dart';
// Generate the mock using build_runner: dart run build_runner build
@GenerateNiceMocks([MockSpec<ApiClient>()])
import 'data_service_test.mocks.dart';
void main() {
group('DataService', () {
late MockApiClient mockApiClient;
late DataService dataService;
setUp(() {
mockApiClient = MockApiClient();
dataService = DataService(apiClient: mockApiClient);
});
test('returns parsed data on successful API call', () async {
// Configure the mock
when(mockApiClient.get('/data')).thenAnswer((_) async => '{"id": 1}');
// Execute the system under test
final result = await dataService.fetchData();
// Verify outcomes and interactions
expect(result.id, equals(1));
verify(mockApiClient.get('/data')).called(1);
});
});
}
Write tests first, watch them fail, then implement minimal code to pass.
Enforce verification commands before claiming work completion, fixes, or test passes—no success assertions without fresh evidence.
Dispatch fresh subagents per task with two-stage review (spec compliance, then code quality) in the current session.
Evaluate code review feedback with technical rigor before implementing, avoiding performative agreement and blind implementation.
Test-driven documentation for creating reusable agent techniques, patterns, and reference guides.
Structured workflow for completing development branches with test verification and merge/PR options.
Browser automation with 40+ commands for navigation, interaction, form filling, and web testing.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Comprehensive reference guide for writing, debugging, and maintaining Playwright tests across all testing types and scenarios.
End-to-end Solana development with framework-kit, @solana/kit, Anchor programs, and local testing.
ab testing
Build custom Expo development clients for testing native code on physical devices via EAS Build or locally.
Opus.ai: Revolutionize Your Web Experience
Build a no-code AI app in minutes.
An IDE for code migration from legacy to modern frameworks through coding agents.
Automate CGI animation in live-action scenes
Branded artistic QR-code concepts
Launch a website in seconds with AI.
Streamline Your Coding Experience with AI Code Helper
Convert any screenshot or design to clean code.