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
This commit is contained in:
parent
5b0f69f961
commit
fe87bc69b6
@ -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() {
|
|||||||
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() {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
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() {
|
|||||||
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();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user