Skip to content

Conversation

@krispypen
Copy link
Contributor

@krispypen krispypen commented Feb 5, 2024

During golden test image comparison 2 lists of a different type are compared with the method "identical", so this will never be true. The test image is a _Uint8ArrayView while the master image is an Uint8List. So that results in always a heavy computation to get the difference between the test and the master image.

When you run this test snippet I go from 51 seconds to 14 seconds:

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  for (int i = 0; i < 100; i++) {
    testWidgets('Small test', (WidgetTester tester) async {
      await tester.pumpWidget(Directionality(textDirection: TextDirection.ltr, child: Text('jo')));
      await expectLater(find.byType(Text), matchesGoldenFile('main.png'));
    });
  }
}

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact "@test-exemption-reviewer" in the #hackers channel in Chat (don't just cc them here, they won't see it! Use Discord!).

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@github-actions github-actions bot added a: tests "flutter test", flutter_test, or one of our tests framework flutter/packages/flutter repository. See also f: labels. labels Feb 5, 2024
@goderbauer goderbauer requested a review from Piinks February 6, 2024 23:17
Copy link
Contributor

@Piinks Piinks left a comment

Choose a reason for hiding this comment

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

Hey @krispypen welcome! Thanks for contributing!
I am not sure how we might test this, have you reached out on discord to see if it is exempt?

@krispypen
Copy link
Contributor Author

Oh, not yet, I'll check there @Piinks !

@krispypen krispypen requested a review from Piinks February 8, 2024 10:27
Copy link
Contributor

@Piinks Piinks left a comment

Choose a reason for hiding this comment

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

Thanks for adding a test @krispypen! This LGTM, I'll need to get another reviewer for a second stamp.

Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

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

LGTM 👍. Good catch! Looks like a great performance improvement.

@Piinks Piinks added the autosubmit Merge PR when tree becomes green via auto submit App label Feb 9, 2024
@auto-submit auto-submit bot merged commit 2f117c5 into flutter:master Feb 9, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 14, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 14, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Feb 14, 2024
Roll Flutter from eb5d0a4 to a628814 (72 revisions)

flutter/flutter@eb5d0a4...a628814

2024-02-13 [email protected] Allow deprecated members from the Dart SDK and Flutter Engine to roll in (flutter/flutter#143347)
2024-02-13 [email protected] [Re-re-land] Enforce a policy on supported Gradle, Java, AGP, and KGP versions (flutter/flutter#143341)
2024-02-13 [email protected] Roll Packages from 0a69259 to 9385bbb (7 revisions) (flutter/flutter#143366)
2024-02-13 [email protected] Fix `InputDecorator`s `suffix` and `prefix` widgets are tappable when hidden (flutter/flutter#143308)
2024-02-13 [email protected] Pass-Through `inputFormatters` in `DropdownMenu` (flutter/flutter#143250)
2024-02-13 [email protected] Fix `insetPadding` parameter nullability for dialogs (flutter/flutter#143305)
2024-02-12 [email protected] Revert "Migrate integration_test plugin to Gradle Kotlin DSL (#142008)" (flutter/flutter#143329)
2024-02-12 [email protected] Badge class doc typo - missing [ (flutter/flutter#143318)
2024-02-12 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Roll Flutter Engine from 1c3ecee77350 to a19077503a0c (8 revisions) (#143322)" (flutter/flutter#143338)
2024-02-12 [email protected] Roll Flutter Engine from 1c3ecee77350 to a19077503a0c (8 revisions) (flutter/flutter#143322)
2024-02-12 [email protected] [web] Move JS interop to extension types (flutter/flutter#143274)
2024-02-12 [email protected] Add documentation for best practices for `StreamBuilder` like `FutureBuilder`  (flutter/flutter#143295)
2024-02-12 [email protected] Roll Flutter Engine from 8806987182a3 to 1c3ecee77350 (1 revision) (flutter/flutter#143315)
2024-02-12 [email protected] Fix dual focus issue in CheckboxListTile, RadioListTile and SwitchListTile (flutter/flutter#143213)
2024-02-12 [email protected] Revert "[Re-land] Enforce a policy on supported Gradle, Java, AGP, and KGP versions" (flutter/flutter#143314)
2024-02-12 [email protected] Update integration_test iOS FTL README script to remove targeted version (flutter/flutter#143248)
2024-02-12 [email protected] Remove unnecessary 'debugLabel: null'. (flutter/flutter#143253)
2024-02-12 [email protected] Introduce `iconAlignment` for the buttons with icon (flutter/flutter#137348)
2024-02-12 [email protected] Roll Packages from 11152d2 to 0a69259 (4 revisions) (flutter/flutter#143306)
2024-02-12 [email protected] Roll Flutter Engine from 4f119619dfa8 to 8806987182a3 (1 revision) (flutter/flutter#143304)
2024-02-12 [email protected] Roll Flutter Engine from b0753c0e25f8 to 4f119619dfa8 (1 revision) (flutter/flutter#143291)
2024-02-11 [email protected] Roll Flutter Engine from 936495d94cc6 to b0753c0e25f8 (1 revision) (flutter/flutter#143282)
2024-02-11 [email protected] Roll Flutter Engine from b06b3e0d75ad to 936495d94cc6 (1 revision) (flutter/flutter#143280)
2024-02-11 [email protected] Roll Flutter Engine from 1478f4e75dd9 to b06b3e0d75ad (1 revision) (flutter/flutter#143275)
2024-02-10 [email protected] Fix text painter longest line resizing logic for `TextWidthBasis.longestLine` (flutter/flutter#143024)
2024-02-10 [email protected] Roll Flutter Engine from e6ceb3504f50 to 1478f4e75dd9 (1 revision) (flutter/flutter#143273)
2024-02-10 [email protected] Move Windows arm64 tests to bringup true (flutter/flutter#143272)
2024-02-10 [email protected] Roll Flutter Engine from 3c5149ccde38 to e6ceb3504f50 (1 revision) (flutter/flutter#143267)
2024-02-10 [email protected] Roll Flutter Engine from c587bd69985f to 3c5149ccde38 (2 revisions) (flutter/flutter#143266)
2024-02-10 [email protected] Roll Flutter Engine from e08b6c899c42 to c587bd69985f (1 revision) (flutter/flutter#143265)
2024-02-10 [email protected] Roll Flutter Engine from 1b8f23bbd099 to e08b6c899c42 (2 revisions) (flutter/flutter#143264)
2024-02-10 [email protected] Roll Flutter Engine from 41daa5b913b9 to 1b8f23bbd099 (2 revisions) (flutter/flutter#143261)
2024-02-10 [email protected] Roll Flutter Engine from f969c52f133a to 41daa5b913b9 (1 revision) (flutter/flutter#143258)
2024-02-10 [email protected] Roll Flutter Engine from 6a3b0216ff5b to f969c52f133a (3 revisions) (flutter/flutter#143256)
2024-02-09 [email protected] Roll Flutter Engine from 8c521eb24171 to 6a3b0216ff5b (4 revisions) (flutter/flutter#143251)
2024-02-09 [email protected] Upgrade leak_tracker. (flutter/flutter#143236)
2024-02-09 [email protected] Fix: performance improvement on golden test comparison (flutter/flutter#142913)
2024-02-09 [email protected] Implementing `switch` expressions in `lib/src/material/` (flutter/flutter#142793)
2024-02-09 [email protected] Add position data to `OnDragEnd` callback (flutter/flutter#140378)
2024-02-09 [email protected] Roll Flutter Engine from 1232d598f7c4 to 8c521eb24171 (2 revisions) (flutter/flutter#143237)
2024-02-09 [email protected] Roll Flutter Engine from 7a5390c6b3bd to 1232d598f7c4 (1 revision) (flutter/flutter#143235)
2024-02-09 [email protected] Set plugin template minimum iOS version to 12.0 (flutter/flutter#143167)
2024-02-09 [email protected] Roll Flutter Engine from 7a241130fcf8 to 7a5390c6b3bd (1 revision) (flutter/flutter#143231)
2024-02-09 [email protected] Migrate integration_test plugin to Gradle Kotlin DSL (flutter/flutter#142008)
2024-02-09 [email protected] Roll Flutter Engine from dcac9863a1fc to 7a241130fcf8 (1 revision) (flutter/flutter#143222)
2024-02-09 [email protected] Roll Flutter Engine from 1508b11bf791 to dcac9863a1fc (1 revision) (flutter/flutter#143220)
...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: tests "flutter test", flutter_test, or one of our tests autosubmit Merge PR when tree becomes green via auto submit App framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants