[shared_preferences_web] Migrate tests to integration_test (#4185)
diff --git a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md
index ec08267..ad5d8f0 100644
--- a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Move tests to `example` directory, so they run as integration_tests with `flutter drive`.
+
## 2.0.0
* Migrate to null-safety.
diff --git a/packages/shared_preferences/shared_preferences_web/example/README.md b/packages/shared_preferences/shared_preferences_web/example/README.md
new file mode 100644
index 0000000..4348451
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/example/README.md
@@ -0,0 +1,9 @@
+# Testing
+
+This package uses `package:integration_test` to run its tests in a web browser.
+
+See [Plugin Tests > Web Tests](https://github.com/flutter/flutter/wiki/Plugin-Tests#web-tests)
+in the Flutter wiki for instructions to setup and run the tests in this package.
+
+Check [flutter.dev > Integration testing](https://flutter.dev/docs/testing/integration-tests)
+for more info.
diff --git a/packages/shared_preferences/shared_preferences_web/test/shared_preferences_web_test.dart b/packages/shared_preferences/shared_preferences_web/example/integration_test/shared_preferences_web_test.dart
similarity index 88%
rename from packages/shared_preferences/shared_preferences_web/test/shared_preferences_web_test.dart
rename to packages/shared_preferences/shared_preferences_web/example/integration_test/shared_preferences_web_test.dart
index 6e49fb4..d95a051 100644
--- a/packages/shared_preferences/shared_preferences_web/test/shared_preferences_web_test.dart
+++ b/packages/shared_preferences/shared_preferences_web/example/integration_test/shared_preferences_web_test.dart
@@ -2,11 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-@TestOn('chrome')
import 'dart:convert' show json;
import 'dart:html' as html;
import 'package:flutter_test/flutter_test.dart';
+import 'package:integration_test/integration_test.dart';
import 'package:shared_preferences_platform_interface/method_channel_shared_preferences.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_platform_interface.dart';
import 'package:shared_preferences_web/shared_preferences_web.dart';
@@ -20,12 +20,14 @@
};
void main() {
+ IntegrationTestWidgetsFlutterBinding.ensureInitialized();
+
group('SharedPreferencesPlugin', () {
setUp(() {
html.window.localStorage.clear();
});
- test('registers itself', () {
+ testWidgets('registers itself', (WidgetTester tester) async {
SharedPreferencesStorePlatform.instance =
MethodChannelSharedPreferencesStore();
expect(SharedPreferencesStorePlatform.instance,
@@ -35,7 +37,7 @@
isA<SharedPreferencesPlugin>());
});
- test('getAll', () async {
+ testWidgets('getAll', (WidgetTester tester) async {
final SharedPreferencesPlugin store = SharedPreferencesPlugin();
expect(await store.getAll(), isEmpty);
@@ -46,7 +48,7 @@
expect(allData['flutter.testKey'], 'test value');
});
- test('remove', () async {
+ testWidgets('remove', (WidgetTester tester) async {
final SharedPreferencesPlugin store = SharedPreferencesPlugin();
html.window.localStorage['flutter.testKey'] = '"test value"';
expect(html.window.localStorage['flutter.testKey'], isNotNull);
@@ -58,7 +60,7 @@
);
});
- test('setValue', () async {
+ testWidgets('setValue', (WidgetTester tester) async {
final SharedPreferencesPlugin store = SharedPreferencesPlugin();
for (String key in kTestValues.keys) {
final dynamic value = kTestValues[key];
@@ -79,7 +81,7 @@
);
});
- test('clear', () async {
+ testWidgets('clear', (WidgetTester tester) async {
final SharedPreferencesPlugin store = SharedPreferencesPlugin();
html.window.localStorage['flutter.testKey1'] = '"test value"';
html.window.localStorage['flutter.testKey2'] = '42';
diff --git a/packages/shared_preferences/shared_preferences_web/example/lib/main.dart b/packages/shared_preferences/shared_preferences_web/example/lib/main.dart
new file mode 100644
index 0000000..e1a38dc
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/example/lib/main.dart
@@ -0,0 +1,25 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+void main() {
+ runApp(MyApp());
+}
+
+/// App for testing
+class MyApp extends StatefulWidget {
+ @override
+ _MyAppState createState() => _MyAppState();
+}
+
+class _MyAppState extends State<MyApp> {
+ @override
+ Widget build(BuildContext context) {
+ return Directionality(
+ textDirection: TextDirection.ltr,
+ child: Text('Testing... Look at the console output for results!'),
+ );
+ }
+}
diff --git a/packages/shared_preferences/shared_preferences_web/example/pubspec.yaml b/packages/shared_preferences/shared_preferences_web/example/pubspec.yaml
new file mode 100644
index 0000000..a83a71b
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/example/pubspec.yaml
@@ -0,0 +1,21 @@
+name: shared_preferences_web_integration_tests
+publish_to: none
+
+environment:
+ sdk: ">=2.12.0 <3.0.0"
+ flutter: ">=2.2.0"
+
+dependencies:
+ shared_preferences_web:
+ path: ../
+ flutter:
+ sdk: flutter
+
+dev_dependencies:
+ js: ^0.6.3
+ flutter_test:
+ sdk: flutter
+ flutter_driver:
+ sdk: flutter
+ integration_test:
+ sdk: flutter
diff --git a/packages/shared_preferences/shared_preferences_web/example/run_test.sh b/packages/shared_preferences/shared_preferences_web/example/run_test.sh
new file mode 100755
index 0000000..aa52974
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/example/run_test.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/bash
+# Copyright 2013 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+if pgrep -lf chromedriver > /dev/null; then
+ echo "chromedriver is running."
+
+ if [ $# -eq 0 ]; then
+ echo "No target specified, running all tests..."
+ find integration_test/ -iname *_test.dart | xargs -n1 -i -t flutter drive -d web-server --web-port=7357 --browser-name=chrome --driver=test_driver/integration_test.dart --target='{}'
+ else
+ echo "Running test target: $1..."
+ set -x
+ flutter drive -d web-server --web-port=7357 --browser-name=chrome --driver=test_driver/integration_test.dart --target=$1
+ fi
+
+ else
+ echo "chromedriver is not running."
+ echo "Please, check the README.md for instructions on how to use run_test.sh"
+fi
+
diff --git a/packages/shared_preferences/shared_preferences_web/example/test_driver/integration_test.dart b/packages/shared_preferences/shared_preferences_web/example/test_driver/integration_test.dart
new file mode 100644
index 0000000..4f10f2a
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/example/test_driver/integration_test.dart
@@ -0,0 +1,7 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:integration_test/integration_test_driver.dart';
+
+Future<void> main() => integrationDriver();
diff --git a/packages/shared_preferences/shared_preferences_web/example/web/index.html b/packages/shared_preferences/shared_preferences_web/example/web/index.html
new file mode 100644
index 0000000..7fb138c
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/example/web/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<!-- Copyright 2013 The Flutter Authors. All rights reserved.
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file. -->
+<html>
+<head>
+ <meta charset="UTF-8">
+ <title>example</title>
+</head>
+<body>
+ <script src="main.dart.js" type="application/javascript"></script>
+</body>
+</html>
diff --git a/packages/shared_preferences/shared_preferences_web/test/README.md b/packages/shared_preferences/shared_preferences_web/test/README.md
new file mode 100644
index 0000000..7c5b4ad
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/test/README.md
@@ -0,0 +1,5 @@
+## test
+
+This package uses integration tests for testing.
+
+See `example/README.md` for more info.
diff --git a/packages/shared_preferences/shared_preferences_web/test/tests_exist_elsewhere_test.dart b/packages/shared_preferences/shared_preferences_web/test/tests_exist_elsewhere_test.dart
new file mode 100644
index 0000000..442c501
--- /dev/null
+++ b/packages/shared_preferences/shared_preferences_web/test/tests_exist_elsewhere_test.dart
@@ -0,0 +1,14 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter_test/flutter_test.dart';
+
+void main() {
+ test('Tell the user where to find the real tests', () {
+ print('---');
+ print('This package uses integration_test for its tests.');
+ print('See `example/README.md` for more info.');
+ print('---');
+ });
+}
diff --git a/script/configs/exclude_integration_web.yaml b/script/configs/exclude_integration_web.yaml
index 99e2083..6c0fc4e 100644
--- a/script/configs/exclude_integration_web.yaml
+++ b/script/configs/exclude_integration_web.yaml
@@ -1,4 +1,2 @@
-# Currently missing: https://github.com/flutter/flutter/issues/81982
-- shared_preferences_web
# Currently missing: https://github.com/flutter/flutter/issues/82211
- file_selector