@@ -238,14 +238,19 @@ void main() {
238
238
TestZulipBinding .instance.reset ();
239
239
});
240
240
241
+ Future <void > tapCopyButton (WidgetTester tester) async {
242
+ await tester.ensureVisible (find.byIcon (Icons .copy, skipOffstage: false ));
243
+ await tester.tap (find.byIcon (Icons .copy));
244
+ await tester.pump (); // [MenuItemButton.onPressed] called in a post-frame callback: flutter/flutter@e4a39fa2e
245
+ }
246
+
241
247
testWidgets ('success' , (WidgetTester tester) async {
242
248
final message = eg.streamMessage ();
243
249
await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
244
250
final store = await TestZulipBinding .instance.globalStore.perAccount (eg.selfAccount.id);
245
251
246
- await tester.ensureVisible (find.byIcon (Icons .copy, skipOffstage: false ));
247
252
prepareRawContentResponseSuccess (store, message: message, rawContent: 'Hello world' );
248
- await tester. tap (find. byIcon ( Icons .copy) );
253
+ await tapCopyButton (tester );
249
254
await tester.pump (Duration .zero);
250
255
check (await Clipboard .getData ('text/plain' )).isNotNull ().text.equals ('Hello world' );
251
256
});
@@ -255,9 +260,8 @@ void main() {
255
260
await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
256
261
final store = await TestZulipBinding .instance.globalStore.perAccount (eg.selfAccount.id);
257
262
258
- await tester.ensureVisible (find.byIcon (Icons .copy, skipOffstage: false ));
259
263
prepareRawContentResponseError (store);
260
- await tester. tap (find. byIcon ( Icons .copy) );
264
+ await tapCopyButton (tester );
261
265
await tester.pump (Duration .zero); // error arrives; error dialog shows
262
266
263
267
await tester.tap (find.byWidget (checkErrorDialog (tester,
0 commit comments