Skip to content

Conversation

@ValentinVignal
Copy link
Contributor

Fixes #130459

Follow up of the reverted #158309

It adds a test for

  • examples/api/lib/material/color_scheme/dynamic_content_color.0.dart

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. d: api docs Issues with https://api.flutter.dev/ d: examples Sample code and demos labels Nov 13, 2024
Copy link
Contributor

@bleroux bleroux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Because this example is somewhat complex, consider introducing several tests.
See my comment about factoring out the fake loader.

First test is the one you have (just removed the last step).
Second test would be the end of your test (switching brightness).
Third test would simulate selecting the second image and checking the color scheme has changed.

Comment on lines 17 to 38

testWidgets('The theme colors are created dynamically from the first image', (WidgetTester tester) async {
final List<(ImageProvider<Object>, Brightness)> loadColorSchemeCalls = <(ImageProvider<Object>, Brightness)>[];
await tester.pumpWidget(
example.DynamicColorExample(
loadColorScheme: (ImageProvider<Object> provider, Brightness brightness) async {
loadColorSchemeCalls.add((provider, brightness));
return const ColorScheme.light();
},
),
);
await tester.pump();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
testWidgets('The theme colors are created dynamically from the first image', (WidgetTester tester) async {
final List<(ImageProvider<Object>, Brightness)> loadColorSchemeCalls = <(ImageProvider<Object>, Brightness)>[];
await tester.pumpWidget(
example.DynamicColorExample(
loadColorScheme: (ImageProvider<Object> provider, Brightness brightness) async {
loadColorSchemeCalls.add((provider, brightness));
return const ColorScheme.light();
},
),
);
await tester.pump();
final List<(ImageProvider<Object>, Brightness)> loadColorSchemeCalls = <(ImageProvider<Object>, Brightness)>[];
Future<ColorScheme> fakeColorSchemeLoader(ImageProvider<Object> provider, Brightness brightness) async {
loadColorSchemeCalls.add((provider, brightness));
return provider == example.DynamicColorExample.images[1]
? ColorScheme.fromSeed(seedColor: Colors.lightBlue)
: const ColorScheme.light();
}
setUp(() {
loadColorSchemeCalls.clear();
});
testWidgets('The theme colors are created dynamically from the first image', (WidgetTester tester) async {
await tester.pumpWidget(
example.DynamicColorExample(loadColorScheme: fakeColorSchemeLoader),
);
await tester.pump();

Proposed way to share the fake loader between several tests.

Brightness.light,
);

await tester.tap(find.byType(Switch));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Starting there, it could be more readable to start a new test, maybe named 'Brightness can be changed'
(the content should be updated because the list containing calls is cleared between tests).

@ValentinVignal
Copy link
Contributor Author

Nice suggestions @bleroux ! I've done the changes in test: More detailed tests, hope it is good enough :)

Copy link
Contributor

@bleroux bleroux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost ready, see my comments

Comment on lines 144 to 156
expect(
loadColorSchemeCalls.single.$1,
isA<NetworkImage>()
.having(
(NetworkImage provider) => provider.url,
'url',
'https://flutter.github.io/assets-for-api-docs/assets/material/content_based_color_scheme_1.png',
),
);
expect(
loadColorSchemeCalls.single.$2,
Brightness.light,
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe make the test shorter by removing those lines as it was already tested on the other test and it is not what this test focus on.

loadColorSchemeCalls.last.$2,
Brightness.light,
);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way to check the app color scheme is the new one?

@ValentinVignal ValentinVignal force-pushed the flutter/examples/api/Reland-test-for-dynamic-color-content branch from aac7e2c to 03b1bd1 Compare November 14, 2024 02:54
Copy link
Contributor

@bleroux bleroux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Congratulations for finishing this missing example tests task 🙏

@ValentinVignal ValentinVignal added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2024
@auto-submit auto-submit bot merged commit c1ee381 into flutter:master Nov 14, 2024
154 checks passed
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 15, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Nov 15, 2024
Roll Flutter from ed553d1 to 0e2d55e (40 revisions)

flutter/flutter@ed553d1...0e2d55e

2024-11-15 [email protected] Roll Packages from b9ac917 to b164be3 (4 revisions) (flutter/flutter#158986)
2024-11-15 [email protected] Label PRs with gradle and Android paths "platform-android" (flutter/flutter#158970)
2024-11-15 [email protected] Fix code asset copying logic in native asset code (flutter/flutter#158984)
2024-11-15 [email protected] Fix duplicate work in native assets release builds (flutter/flutter#158980)
2024-11-15 [email protected] Stop generate both `.kts` and non-`.kts` gradle files for a test project. (flutter/flutter#158965)
2024-11-15 [email protected] Further skip `native_assets_test`(s) that runs `flutter build apk`. (flutter/flutter#158966)
2024-11-15 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 4.2.1 to 4.2.2 (flutter/flutter#157473)
2024-11-15 [email protected] Try running historically flaky tests first to make `flutter build apk` health tests time out more often? (flutter/flutter#158967)
2024-11-15 [email protected] [ tool ] Don't throw StateError when DDS fails to start (flutter/flutter#158744)
2024-11-14 [email protected] Create merge_queue.md (flutter/flutter#158959)
2024-11-14 [email protected] Marks Mac_x64 hot_mode_dev_cycle_macos_target__benchmark to be flaky (flutter/flutter#158569)
2024-11-14 [email protected] Marks Mac_arm64 mac_desktop_impeller to be unflaky (flutter/flutter#158564)
2024-11-14 [email protected] [gen_l10n] When localizing a message, prefer placeholder definitions defined by the current locale rather than the template locale (flutter/flutter#153459)
2024-11-14 [email protected] feat: Include web 1.x.x in plugin template (flutter/flutter#156947)
2024-11-14 [email protected] hide members where possible (flutter/flutter#158492)
2024-11-14 [email protected] Move platform-specific log-reading implementation details from `ResidentRunner`/`FlutterDevice` to `DeviceLogReader` implementations (flutter/flutter#156181)
2024-11-14 [email protected] Updated document to clarify Clip Behaviour (flutter/flutter#157719)
2024-11-14 [email protected] Enable --verbose for android_plugin_skip_unsupported_test tests (flutter/flutter#158933)
2024-11-14 [email protected] Roll Packages from 26e123a to b9ac917 (5 revisions) (flutter/flutter#158938)
2024-11-14 [email protected] Add `dev_dependency` attribute to plugins in `.flutter-plugins-dependencies` (flutter/flutter#158009)
2024-11-14 [email protected] No longer pass `--verbose` to implicit `pub` calls when `flutter --verbose` is set. (flutter/flutter#158898)
2024-11-14 [email protected] Update triage flow chart for SVG packages (flutter/flutter#158670)
2024-11-14 [email protected] Add one MenuAnchor alignment test (flutter/flutter#158915)
2024-11-14 [email protected] Reland Add test for dynamic_content_color.0.dart (flutter/flutter#158547)
2024-11-14 [email protected] Roll Flutter Engine from e97b148e796d to 619804c0fbb7 (1 revision) (flutter/flutter#158905)
2024-11-14 [email protected] Roll Flutter Engine from 82940a9aa714 to e97b148e796d (1 revision) (flutter/flutter#158901)
2024-11-14 [email protected] Move explicit package dependencies to a feature flag (flutter/flutter#158016)
2024-11-14 [email protected] Try with `bringup: true` debugging why `flutter build apk` often times out. (flutter/flutter#158895)
2024-11-14 [email protected] Add constraint options to `SearchAnchor` suggestions builder (flutter/flutter#148856)
2024-11-14 [email protected] Adjusts the Hindi TimeOfDayFormat to display in a LTR orientation in localizations. (flutter/flutter#157998)
2024-11-14 [email protected] Fix update order of SliverAppBar (flutter/flutter#158159)
2024-11-13 [email protected] #154792 - CupertinoActionSheetAction cursor doesn't change to clickable on desktop (flutter/flutter#158470)
2024-11-13 [email protected] Adds a skip message for analyzer (flutter/flutter#158890)
2024-11-13 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Marks Mac_arm64_ios hot_mode_dev_cycle_ios__benchmark to be flaky (#158242)" (flutter/flutter#158891)
2024-11-13 [email protected] [SwiftPM] Move the logic for SwiftPM enablement to the platform project (flutter/flutter#158213)
2024-11-13 [email protected] Temporarily skip flutter build apk for native_assets tests. (flutter/flutter#158880)
2024-11-13 [email protected] docs: include Human Interface haptic information in HapticFeedback (flutter/flutter#158587)
2024-11-13 [email protected] Roll Flutter Engine from db3e5af2ca22 to 82940a9aa714 (2 revisions) (flutter/flutter#158799)
2024-11-13 [email protected] Stream the output of `flutter build` for debugging. (flutter/flutter#158757)
2024-11-13 [email protected] "Fix failing checks" wiki page for new contributors (flutter/flutter#154629)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.
...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

d: api docs Issues with https://api.flutter.dev/ d: examples Sample code and demos framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Many API Examples are missing tests

2 participants