Skip to content

Commit 41560f1

Browse files
* Added a row break policy to animation timeline layout
* Switched out map of goldens in layout API for a SceneLayoutContent data structure that includes goldens, description, etc - so that scene layouts can make more decisions about info to include in the final render
1 parent e4af9ce commit 41560f1

File tree

10 files changed

+261
-100
lines changed

10 files changed

+261
-100
lines changed

doc/marketing_goldens/shadcn_test_tools.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ class ShadcnSingleShotSceneLayout implements SceneLayout {
5757
Widget build(
5858
WidgetTester tester,
5959
BuildContext context,
60-
Map<GoldenSceneScreenshot, GlobalKey<State<StatefulWidget>>> goldens,
60+
SceneLayoutContent content,
6161
) {
62-
final golden = goldens.entries.first;
62+
final golden = content.goldens.entries.first;
6363

6464
return DefaultTextStyle(
6565
style: GoldenSceneTheme.current.defaultTextStyle.copyWith(
@@ -129,9 +129,9 @@ class ShadcnGalleryLayout implements SceneLayout {
129129
Widget build(
130130
WidgetTester tester,
131131
BuildContext context,
132-
Map<GoldenSceneScreenshot, GlobalKey<State<StatefulWidget>>> goldens,
132+
SceneLayoutContent content,
133133
) {
134-
final entries = goldens.entries.toList();
134+
final entries = content.goldens.entries.toList();
135135

136136
return DefaultTextStyle(
137137
style: GoldenSceneTheme.current.defaultTextStyle.copyWith(

lib/src/flutter/flutter_golden_matcher.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'dart:io';
2-
import 'dart:typed_data';
32

43
import 'package:flutter/foundation.dart';
54
import 'package:flutter_test/flutter_test.dart';

lib/src/scenes/failure_scene.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ Future<(Image, FailureSceneMetadata)> _layoutFailureScene(
186186
return layout.build(
187187
tester,
188188
context,
189-
renderablePhotos,
189+
SceneLayoutContent(goldens: renderablePhotos),
190190
);
191191
},
192192
),

lib/src/scenes/gallery.dart

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -492,8 +492,11 @@ Image.memory(
492492
SceneLayout layout,
493493
Map<String, GoldenSceneScreenshot> goldenScreenshots,
494494
) async {
495-
final goldensAndGlobalKeys = Map<GoldenSceneScreenshot, GlobalKey>.fromEntries(
496-
goldenScreenshots.entries.map((entry) => MapEntry(entry.value, GlobalKey())),
495+
final content = SceneLayoutContent(
496+
description: _sceneDescription,
497+
goldens: Map<GoldenSceneScreenshot, GlobalKey>.fromEntries(
498+
goldenScreenshots.entries.map((entry) => MapEntry(entry.value, GlobalKey())),
499+
),
497500
);
498501

499502
// Layout the gallery scene with the new goldens, check the intrinsic size of the
@@ -503,13 +506,13 @@ Image.memory(
503506
// a corresponding `GlobalKey` already in the tree. Therefore, this layout pass inserts a
504507
// `GlobalKey` for every golden screenshot that we want to render.
505508
await tester.pumpWidgetAndAdjustWindow(
506-
_buildGalleryLayout(tester, goldensAndGlobalKeys),
509+
_buildGalleryLayout(tester, content),
507510
);
508511

509512
// Use Flutter's `precacheImage()` mechanism to get each golden screenshot bitmap to
510513
// render in this widget test.
511514
await tester.runAsync(() async {
512-
for (final entry in goldensAndGlobalKeys.entries) {
515+
for (final entry in content.goldens.entries) {
513516
await precacheImage(
514517
MemoryImage(entry.key.pngBytes),
515518
tester.element(find.byKey(entry.value)),
@@ -522,21 +525,21 @@ Image.memory(
522525
return GoldenSceneMetadata(
523526
description: _sceneDescription,
524527
images: [
525-
for (final golden in goldensAndGlobalKeys.keys)
528+
for (final golden in content.goldens.keys)
526529
GoldenImageMetadata(
527530
id: golden.id,
528531
metadata: golden.metadata,
529-
topLeft: (goldensAndGlobalKeys[golden]!.currentContext!.findRenderObject() as RenderBox)
530-
.localToGlobal(Offset.zero),
531-
size: goldensAndGlobalKeys[golden]!.currentContext!.size!,
532+
topLeft:
533+
(content.goldens[golden]!.currentContext!.findRenderObject() as RenderBox).localToGlobal(Offset.zero),
534+
size: content.goldens[golden]!.currentContext!.size!,
532535
),
533536
],
534537
);
535538
}
536539

537-
Widget _buildGalleryLayout(WidgetTester tester, Map<GoldenSceneScreenshot, GlobalKey> candidatesAndGlobalKeys) {
540+
Widget _buildGalleryLayout(WidgetTester tester, SceneLayoutContent content) {
538541
return Builder(builder: (context) {
539-
return _layout.build(tester, context, candidatesAndGlobalKeys);
542+
return _layout.build(tester, context, content);
540543
});
541544
}
542545

0 commit comments

Comments
 (0)