Skip to content

Asserts in widget test with hover #127575

@tgucio

Description

@tgucio

Is there an existing issue for this?

Steps to reproduce

  1. Do flutter create hover_test
  2. Replace test/widget_test.dart with the code below
  3. Run flutter test

Expected results

Test completes

Actual results

Test terminates with the following assert:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following assertion was thrown running a test:
'package:flutter/src/material/tooltip.dart': Failed assertion: line 652 pos 12:
'_activeHoveringPointerDevices.isNotEmpty': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.yml

When the exception was thrown, this was the stack:
#2      TooltipState._handleMouseExit (package:flutter/src/material/tooltip.dart:652:12)
#3      MouseTracker._handleDeviceUpdateMouseEvents.<anonymous closure> (package:flutter/src/rendering/mouse_tracker.dart:397:29)
#4      _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:625:13)
#5      MouseTracker._handleDeviceUpdateMouseEvents (package:flutter/src/rendering/mouse_tracker.dart:394:21)
#6      MouseTracker._handleDeviceUpdate (package:flutter/src/rendering/mouse_tracker.dart:271:5)
#7      MouseTracker.updateWithEvent.<anonymous closure>.<anonymous closure> (package:flutter/src/rendering/mouse_tracker.dart:331:9)
#8      MouseTracker._deviceUpdatePhase (package:flutter/src/rendering/mouse_tracker.dart:200:9)
#9      MouseTracker.updateWithEvent.<anonymous closure> (package:flutter/src/rendering/mouse_tracker.dart:308:7)
#10     MouseTracker._monitorMouseConnection (package:flutter/src/rendering/mouse_tracker.dart:183:9)
#11     MouseTracker.updateWithEvent (package:flutter/src/rendering/mouse_tracker.dart:307:5)
#12     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:323:20)
#13     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:400:7)
#14     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:363:5)
#15     TestWidgetsFlutterBinding.handlePointerEventForSource.<anonymous closure> (package:flutter_test/src/binding.dart:631:42)
#16     TestWidgetsFlutterBinding.withPointerEventSource (package:flutter_test/src/binding.dart:641:11)
#17     TestWidgetsFlutterBinding.handlePointerEventForSource (package:flutter_test/src/binding.dart:631:5)
#18     WidgetTester.sendEventToBinding.<anonymous closure> (package:flutter_test/src/widget_tester.dart:842:15)
#21     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#22     WidgetTester.sendEventToBinding (package:flutter_test/src/widget_tester.dart:841:27)
#23     TestGesture.removePointer.<anonymous closure> (package:flutter_test/src/test_pointer.dart:492:25)
#26     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#27     TestGesture.removePointer (package:flutter_test/src/test_pointer.dart:491:27)
#28     main.<anonymous closure> (file:///Users/tgucio/wrk/flutter_test/hover_test/test/widget_test.dart:16:16)
<asynchronous suspension>
<asynchronous suspension>
(elided 7 frames from class _AssertionError, dart:async, and package:stack_trace)

Code sample

Code sample
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:hover_test/main.dart';

void main() {
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(const MyApp());

    final TestGesture down = await tester.startGesture(
      tester.getCenter(find.byIcon(Icons.add)), kind: PointerDeviceKind.mouse);
    await tester.pumpAndSettle();
    await down.up();
    await down.removePointer();
  });
}

Screenshots or Video

No response

Logs

No response

Flutter Doctor output

Doctor output
% flutter doctor -v
[✓] Flutter (Channel master, 3.11.0-13.0.pre.24, on macOS 13.3.1 22E772610a darwin-arm64, locale en-ES)
    • Flutter version 3.11.0-13.0.pre.24 on channel master at /Users/tgucio/Library/Frameworks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1b800fd496 (5 hours ago), 2023-05-25 00:24:45 -0700
    • Engine revision 2be736c390
    • Dart version 3.1.0 (build 3.1.0-143.0.dev)
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/tgucio/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.78.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.64.0

[✓] Connected device (3 available)
    • Pixel 7 (mobile) • 2A281FDH200GMD • android-arm64  • Android 13 (API 33)
    • macOS (desktop)  • macos          • darwin-arm64   • macOS 13.3.1 22E772610a darwin-arm64
    • Chrome (web)     • chrome         • web-javascript • Google Chrome 113.0.5672.126

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Labels

a: error messageError messages from the Flutter frameworka: mouseIssues related to using a mouse or mouse supportc: regressionIt was better in the past than it is nowf: material designflutter/packages/flutter/material repository.found in release: 3.11Found to occur in 3.11frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer version

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions