Add example of goldenFileComparator usage in widget tests (#150422)
As from #76337, precisely https://github.com/flutter/flutter/issues/76337#issuecomment-795486138 and https://github.com/flutter/flutter/issues/76337#issuecomment-2172941109. There is missing documentation with an example on how the [`goldenFileComparator`](https://api.flutter.dev/flutter/flutter_test/goldenFileComparator.html) can be used. This change updates the documentation by providing an additional code snippet to the example that was already stated by the documentation. Follows the effort made by #76337 and https://github.com/flutter/flutter/pull/150343.
This commit is contained in:
parent
ab8bc00e2c
commit
e383db7087
@ -128,8 +128,67 @@ abstract class GoldenFileComparator {
|
||||
///
|
||||
/// Callers may choose to override the default comparator by setting this to a
|
||||
/// custom comparator during test set-up (or using directory-level test
|
||||
/// configuration). For example, some projects may wish to install a comparator
|
||||
/// with tolerance levels for allowable differences.
|
||||
/// configuration).
|
||||
///
|
||||
/// {@tool snippet}
|
||||
/// For example, some projects may wish to install a comparator with tolerance
|
||||
/// levels for allowable differences:
|
||||
///
|
||||
/// ```dart
|
||||
/// void main() {
|
||||
/// testWidgets('matches golden file with a 0.01 tolerance', (WidgetTester tester) async {
|
||||
/// final GoldenFileComparator previousGoldenFileComparator = goldenFileComparator;
|
||||
/// goldenFileComparator = _TolerantGoldenFileComparator(
|
||||
/// Uri.parse('test/my_widget_test.dart'),
|
||||
/// precisionTolerance: 0.01,
|
||||
/// );
|
||||
/// addTearDown(() => goldenFileComparator = previousGoldenFileComparator);
|
||||
///
|
||||
/// await tester.pumpWidget(const ColoredBox(color: Color(0xff00ff00)));
|
||||
///
|
||||
/// await expectLater(
|
||||
/// find.byType(ColoredBox),
|
||||
/// matchesGoldenFile('my_golden.png'),
|
||||
/// );
|
||||
/// });
|
||||
/// }
|
||||
///
|
||||
/// class _TolerantGoldenFileComparator extends LocalFileComparator {
|
||||
/// _TolerantGoldenFileComparator(
|
||||
/// super.testFile, {
|
||||
/// required double precisionTolerance,
|
||||
/// }) : assert(
|
||||
/// 0 <= precisionTolerance && precisionTolerance <= 1,
|
||||
/// 'precisionTolerance must be between 0 and 1',
|
||||
/// ),
|
||||
/// _precisionTolerance = precisionTolerance;
|
||||
///
|
||||
/// /// How much the golden image can differ from the test image.
|
||||
/// ///
|
||||
/// /// It is expected to be between 0 and 1. Where 0 is no difference (the same image)
|
||||
/// /// and 1 is the maximum difference (completely different images).
|
||||
/// final double _precisionTolerance;
|
||||
///
|
||||
/// @override
|
||||
/// Future<bool> compare(Uint8List imageBytes, Uri golden) async {
|
||||
/// final ComparisonResult result = await GoldenFileComparator.compareLists(
|
||||
/// imageBytes,
|
||||
/// await getGoldenBytes(golden),
|
||||
/// );
|
||||
///
|
||||
/// final bool passed = result.passed || result.diffPercent <= _precisionTolerance;
|
||||
/// if (passed) {
|
||||
/// result.dispose();
|
||||
/// return true;
|
||||
/// }
|
||||
///
|
||||
/// final String error = await generateFailureOutput(result, golden, basedir);
|
||||
/// result.dispose();
|
||||
/// throw FlutterError(error);
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
/// {@end-tool}
|
||||
///
|
||||
/// See also:
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user