Unverified Commit fe87bc69 authored by Pierre-Louis's avatar Pierre-Louis Committed by GitHub

Add material icons golden test (#74131)

* Create icons golden test

* Update icons_test.dart

* Update icons_test.dart

* Update icons_test.dart

* change test name

* Add ability to load material icon font for golden tests

* formatting

* Skip test for browser

* Add end of file newline

* Rewrite with different method

* Add skip for browser
parent 5b0f69f9
...@@ -2,8 +2,13 @@ ...@@ -2,8 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import 'package:file/file.dart';
import 'package:file/local.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:platform/platform.dart';
void main() { void main() {
testWidgets('IconData object test', (WidgetTester tester) async { testWidgets('IconData object test', (WidgetTester tester) async {
...@@ -29,8 +34,7 @@ void main() { ...@@ -29,8 +34,7 @@ void main() {
expect(Icons.access_time_sharp.matchTextDirection, false); expect(Icons.access_time_sharp.matchTextDirection, false);
}); });
testWidgets('Adaptive icons are correct on cupertino platforms', testWidgets('Adaptive icons are correct on cupertino platforms', (WidgetTester tester) async {
(WidgetTester tester) async {
expect(Icons.adaptive.arrow_back, Icons.arrow_back_ios); expect(Icons.adaptive.arrow_back, Icons.arrow_back_ios);
expect(Icons.adaptive.arrow_back_outlined, Icons.arrow_back_ios_outlined); expect(Icons.adaptive.arrow_back_outlined, Icons.arrow_back_ios_outlined);
}, },
...@@ -40,9 +44,7 @@ void main() { ...@@ -40,9 +44,7 @@ void main() {
}), }),
); );
testWidgets( testWidgets('Adaptive icons are correct on non-cupertino platforms', (WidgetTester tester) async {
'Adaptive icons are correct on non-cupertino platforms',
(WidgetTester tester) async {
expect(Icons.adaptive.arrow_back, Icons.arrow_back); expect(Icons.adaptive.arrow_back, Icons.arrow_back);
expect(Icons.adaptive.arrow_back_outlined, Icons.arrow_back_outlined); expect(Icons.adaptive.arrow_back_outlined, Icons.arrow_back_outlined);
}, },
...@@ -53,4 +55,54 @@ void main() { ...@@ -53,4 +55,54 @@ void main() {
TargetPlatform.linux, TargetPlatform.linux,
}), }),
); );
testWidgets('A sample of icons look as expected', (WidgetTester tester) async {
await _loadIconFont();
await tester.pumpWidget(MaterialApp(
home: IconTheme(
data: const IconThemeData(size: 200),
child: Wrap(
children: const <Icon>[
Icon(Icons.ten_k),
Icon(Icons.ac_unit),
Icon(Icons.local_taxi),
Icon(Icons.local_taxi_outlined),
Icon(Icons.local_taxi_rounded),
Icon(Icons.local_taxi_sharp),
Icon(Icons.zoom_out_sharp),
],
),
),
));
await expectLater(find.byType(Wrap), matchesGoldenFile('test.icons.sample.png'));
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/39998
}
// Loads the cached material icon font.
// Only necessary for golden tests. Relies on the tool updating cached assets before
// running tests.
Future<void> _loadIconFont() async {
const FileSystem fs = LocalFileSystem();
const Platform platform = LocalPlatform();
final Directory flutterRoot = fs.directory(platform.environment['FLUTTER_ROOT']);
final File iconFont = flutterRoot.childFile(
fs.path.join(
'bin',
'cache',
'artifacts',
'material_fonts',
'MaterialIcons-Regular.otf',
),
);
final Future<ByteData> bytes = Future<ByteData>.value(
iconFont.readAsBytesSync()
.buffer
.asByteData()
);
await (FontLoader('MaterialIcons')..addFont(bytes)).load();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment