Skip to content

Commit bdc7181

Browse files
committed
chore: Adding integration tests to see tests in real device to see how to surpass blockers. #1
1 parent 79fc557 commit bdc7181

File tree

5 files changed

+193
-4
lines changed

5 files changed

+193
-4
lines changed

integration_test/widget_test.dart

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// This is a basic Flutter widget test.
2+
//
3+
// To perform an interaction with a widget in your test, use the WidgetTester
4+
// utility in the flutter_test package. For example, you can send tap and scroll
5+
// gestures. You can also use WidgetTester to find child widgets in the widget
6+
// tree, read text, and verify that the values of widget properties are correct.
7+
8+
import 'package:app/home_page.dart';
9+
import 'package:flutter/material.dart';
10+
import 'package:flutter_quill/flutter_quill.dart';
11+
import 'package:flutter_quill_extensions/embeds/toolbar/image_button.dart';
12+
import 'package:flutter_test/flutter_test.dart';
13+
import 'package:flutter_quill/flutter_quill_test.dart';
14+
15+
import 'package:app/main.dart';
16+
import 'package:mockito/annotations.dart';
17+
import 'package:mockito/mockito.dart';
18+
19+
import 'package:integration_test/integration_test.dart';
20+
21+
22+
// importing mocks
23+
import 'widget_test.mocks.dart';
24+
25+
@GenerateMocks([PlatformService])
26+
void main() {
27+
testWidgets('Normal setup', (WidgetTester tester) async {
28+
final platformServiceMock = MockPlatformService();
29+
// Platform is mobile
30+
when(platformServiceMock.isWebPlatform()).thenAnswer((_) => false);
31+
32+
// Build our app and trigger a frame.
33+
await tester.pumpWidget(
34+
App(
35+
platformService: platformServiceMock,
36+
),
37+
);
38+
await tester.pumpAndSettle();
39+
40+
// Expect to find the normal page setup
41+
expect(find.text('Flutter Quill'), findsOneWidget);
42+
43+
// Enter 'hi' into Quill Editor.
44+
await tester.tap(find.byType(QuillEditor));
45+
await tester.quillEnterText(find.byType(QuillEditor), 'hi\n');
46+
await tester.pumpAndSettle();
47+
});
48+
49+
testWidgets('Select image', (WidgetTester tester) async {
50+
final platformServiceMock = MockPlatformService();
51+
52+
// Platform is mobile
53+
when(platformServiceMock.isWebPlatform()).thenAnswer((_) => false);
54+
55+
// Build our app and trigger a frame.
56+
await tester.pumpWidget(
57+
App(
58+
platformService: platformServiceMock,
59+
),
60+
);
61+
await tester.pumpAndSettle();
62+
63+
// Expect to find the normal page setup
64+
expect(find.text('Flutter Quill'), findsOneWidget);
65+
66+
// Enter 'hi' into Quill Editor.
67+
await tester.tap(find.byType(QuillEditor));
68+
await tester.quillEnterText(find.byType(QuillEditor), 'hi\n');
69+
await tester.pumpAndSettle();
70+
71+
final imageButton = find.byType(ImageButton);
72+
await tester.tap(imageButton);
73+
await tester.pumpAndSettle();
74+
75+
//TODO add image picker
76+
//https://github.com/dwyl/flutter-image-upload-demo/blob/main/test/widget_test.dart
77+
});
78+
79+
testWidgets('Normal setup (web version)', (WidgetTester tester) async {
80+
tester.view.physicalSize = const Size(400, 600);
81+
tester.view.devicePixelRatio = 1.0;
82+
83+
final platformServiceMock = MockPlatformService();
84+
// Platform is desktop
85+
when(platformServiceMock.isWebPlatform()).thenAnswer((_) => true);
86+
87+
// Build our app and trigger a frame.
88+
await tester.pumpWidget(
89+
App(
90+
platformService: platformServiceMock,
91+
),
92+
);
93+
await tester.pumpAndSettle();
94+
95+
// Expect to find the normal page setup
96+
expect(find.text('Flutter Quill'), findsOneWidget);
97+
98+
// Enter 'hi' into Quill Editor.
99+
await tester.tap(find.byType(QuillEditor));
100+
await tester.quillEnterText(find.byType(QuillEditor), 'hi\n');
101+
await tester.pumpAndSettle();
102+
});
103+
}
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Mocks generated by Mockito 5.4.2 from annotations
2+
// in app/test/widget_test.dart.
3+
// Do not manually edit this file.
4+
5+
// ignore_for_file: no_leading_underscores_for_library_prefixes
6+
import 'package:app/home_page.dart' as _i2;
7+
import 'package:mockito/mockito.dart' as _i1;
8+
9+
// ignore_for_file: type=lint
10+
// ignore_for_file: avoid_redundant_argument_values
11+
// ignore_for_file: avoid_setters_without_getters
12+
// ignore_for_file: comment_references
13+
// ignore_for_file: implementation_imports
14+
// ignore_for_file: invalid_use_of_visible_for_testing_member
15+
// ignore_for_file: prefer_const_constructors
16+
// ignore_for_file: unnecessary_parenthesis
17+
// ignore_for_file: camel_case_types
18+
// ignore_for_file: subtype_of_sealed_class
19+
20+
/// A class which mocks [PlatformService].
21+
///
22+
/// See the documentation for Mockito's code generation for more information.
23+
class MockPlatformService extends _i1.Mock implements _i2.PlatformService {
24+
MockPlatformService() {
25+
_i1.throwOnMissingStub(this);
26+
}
27+
28+
@override
29+
bool isWebPlatform() => (super.noSuchMethod(
30+
Invocation.method(
31+
#isWebPlatform,
32+
[],
33+
),
34+
returnValue: false,
35+
) as bool);
36+
}

pubspec.lock

+51-4
Original file line numberDiff line numberDiff line change
@@ -253,10 +253,10 @@ packages:
253253
dependency: transitive
254254
description:
255255
name: file
256-
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
256+
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
257257
url: "https://pub.dev"
258258
source: hosted
259-
version: "7.0.0"
259+
version: "6.1.4"
260260
file_picker:
261261
dependency: "direct main"
262262
description:
@@ -326,6 +326,11 @@ packages:
326326
url: "https://pub.dev"
327327
source: hosted
328328
version: "1.0.3"
329+
flutter_driver:
330+
dependency: transitive
331+
description: flutter
332+
source: sdk
333+
version: "0.0.0"
329334
flutter_inappwebview:
330335
dependency: transitive
331336
description:
@@ -453,6 +458,11 @@ packages:
453458
url: "https://pub.dev"
454459
source: hosted
455460
version: "3.2.0"
461+
fuchsia_remote_debug_protocol:
462+
dependency: transitive
463+
description: flutter
464+
source: sdk
465+
version: "0.0.0"
456466
gallery_saver:
457467
dependency: transitive
458468
description:
@@ -589,6 +599,11 @@ packages:
589599
url: "https://pub.dev"
590600
source: hosted
591601
version: "0.2.1"
602+
integration_test:
603+
dependency: "direct dev"
604+
description: flutter
605+
source: sdk
606+
version: "0.0.0"
592607
intl:
593608
dependency: transitive
594609
description:
@@ -809,10 +824,10 @@ packages:
809824
dependency: transitive
810825
description:
811826
name: platform
812-
sha256: "57c07bf82207aee366dfaa3867b3164e4f03a238a461a11b0e8a3a510d51203d"
827+
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
813828
url: "https://pub.dev"
814829
source: hosted
815-
version: "3.1.1"
830+
version: "3.1.0"
816831
plugin_platform_interface:
817832
dependency: transitive
818833
description:
@@ -829,6 +844,14 @@ packages:
829844
url: "https://pub.dev"
830845
source: hosted
831846
version: "1.5.1"
847+
process:
848+
dependency: transitive
849+
description:
850+
name: process
851+
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
852+
url: "https://pub.dev"
853+
source: hosted
854+
version: "4.2.4"
832855
provider:
833856
dependency: transitive
834857
description:
@@ -954,6 +977,14 @@ packages:
954977
url: "https://pub.dev"
955978
source: hosted
956979
version: "1.0.0"
980+
sync_http:
981+
dependency: transitive
982+
description:
983+
name: sync_http
984+
sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
985+
url: "https://pub.dev"
986+
source: hosted
987+
version: "0.3.1"
957988
term_glyph:
958989
dependency: transitive
959990
description:
@@ -1146,6 +1177,14 @@ packages:
11461177
url: "https://pub.dev"
11471178
source: hosted
11481179
version: "2.0.16"
1180+
vm_service:
1181+
dependency: transitive
1182+
description:
1183+
name: vm_service
1184+
sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f
1185+
url: "https://pub.dev"
1186+
source: hosted
1187+
version: "11.7.1"
11491188
watcher:
11501189
dependency: transitive
11511190
description:
@@ -1170,6 +1209,14 @@ packages:
11701209
url: "https://pub.dev"
11711210
source: hosted
11721211
version: "2.4.0"
1212+
webdriver:
1213+
dependency: transitive
1214+
description:
1215+
name: webdriver
1216+
sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49"
1217+
url: "https://pub.dev"
1218+
source: hosted
1219+
version: "3.0.2"
11731220
win32:
11741221
dependency: transitive
11751222
description:

pubspec.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ dependencies:
4646
path_provider: ^2.1.0
4747

4848
dev_dependencies:
49+
integration_test:
50+
sdk: flutter
4951
flutter_test:
5052
sdk: flutter
5153

test/widget_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ void main() {
7070
await tester.pumpAndSettle();
7171

7272
//TODO add image picker
73+
//https://github.com/dwyl/flutter-image-upload-demo/blob/main/test/widget_test.dart
7374
});
7475

7576
testWidgets('Normal setup (web version)', (WidgetTester tester) async {

0 commit comments

Comments
 (0)