diff --git a/example/test/widgets/multiple_icons_golden_test.dart b/example/test/widgets/multiple_icons_golden_test.dart new file mode 100644 index 0000000..0a8b742 --- /dev/null +++ b/example/test/widgets/multiple_icons_golden_test.dart @@ -0,0 +1,100 @@ +import 'package:alchemist/alchemist.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('Multiple icons test >', () { + final iconsMap = { + 'add': Icons.add, + 'alarm': Icons.alarm, + 'android': Icons.android, + 'arrow_back': Icons.arrow_back, + 'arrow_forward': Icons.arrow_forward, + 'build': Icons.build, + 'call': Icons.call, + 'camera_alt': Icons.camera_alt, + 'check': Icons.check, + 'close': Icons.close, + 'delete': Icons.delete, + 'done': Icons.done, + 'edit': Icons.edit, + 'favorite': Icons.favorite, + 'home': Icons.home, + 'info': Icons.info, + 'menu': Icons.menu, + 'more_vert': Icons.more_vert, + 'notifications': Icons.notifications, + 'phone': Icons.phone, + 'search': Icons.search, + 'settings': Icons.settings, + 'share': Icons.share, + 'shopping_cart': Icons.shopping_cart, + 'star': Icons.star, + 'accessibility': Icons.accessibility, + 'accessible': Icons.accessible, + 'account_circle': Icons.account_circle, + 'account_box': Icons.account_box, + 'add_box': Icons.add_box, + 'add_circle': Icons.add_circle, + 'add_shopping_cart': Icons.add_shopping_cart, + 'airplanemode_active': Icons.airplanemode_active, + 'album': Icons.album, + 'all_inbox': Icons.all_inbox, + 'analytics': Icons.analytics, + 'archive': Icons.archive, + 'arrow_drop_down': Icons.arrow_drop_down, + 'arrow_drop_up': Icons.arrow_drop_up, + 'assessment': Icons.assessment, + 'attach_file': Icons.attach_file, + 'attachment': Icons.attachment, + 'auto_fix_high': Icons.auto_fix_high, + 'backup': Icons.backup, + 'battery_full': Icons.battery_full, + 'bed': Icons.bed, + 'book': Icons.book, + 'bookmark': Icons.bookmark, + 'brightness_4': Icons.brightness_4, + 'business': Icons.business, + 'calendar_today': Icons.calendar_today, + 'camera': Icons.camera, + 'card_giftcard': Icons.card_giftcard, + 'card_membership': Icons.card_membership, + 'chat': Icons.chat, + 'check_box': Icons.check_box, + 'chevron_left': Icons.chevron_left, + 'chevron_right': Icons.chevron_right, + 'cloud': Icons.cloud, + 'cloud_queue': Icons.cloud_queue, + 'code': Icons.code, + 'commute': Icons.commute, + 'compare_arrows': Icons.compare_arrows, + 'credit_card': Icons.credit_card, + 'crop_square': Icons.crop_square, + 'dashboard': Icons.dashboard, + 'directions': Icons.directions, + 'directions_bike': Icons.directions_bike, + 'directions_car': Icons.directions_car, + 'directions_walk': Icons.directions_walk, + 'download': Icons.download, + 'event': Icons.event, + 'exit_to_app': Icons.exit_to_app, + 'face': Icons.face, + 'fingerprint': Icons.fingerprint, + }; + + for (final iconEntry in iconsMap.entries) { + goldenTest( + 'should render icon ${iconEntry.key} correctly', + fileName: 'icons/${iconEntry.key}', + skip: true, // removes if you want to check loading fonts performance + builder: () => GoldenTestScenario.builder( + name: iconEntry.key, + builder: (_) => Icon( + iconEntry.value, + size: 64, + ), + ), + ); + } + }); +} diff --git a/lib/src/golden_test.dart b/lib/src/golden_test.dart index 8134311..acdacfc 100644 --- a/lib/src/golden_test.dart +++ b/lib/src/golden_test.dart @@ -11,6 +11,8 @@ import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:meta/meta.dart'; +final Set _loadedFontFamilies = {}; + /// Default golden test runner which uses the flutter test framework. const defaultGoldenTestRunner = FlutterGoldenTestRunner(); GoldenTestRunner _goldenTestRunner = defaultGoldenTestRunner; @@ -44,6 +46,11 @@ Future loadFonts() async { final family = (entry['family'] as String) .stripFontFamilyAlchemistPackageName(); + // Skip if font family is already loaded + if (_loadedFontFamilies.contains(family)) { + continue; + } + final fontAssets = [ for (final fontAssetEntry in entry['fonts'] as List) (fontAssetEntry as Map)['asset'] as String, @@ -55,6 +62,7 @@ Future loadFonts() async { } await loader.load(); + _loadedFontFamilies.add(family); } }