Make package:e2e a relative reference (#2889)

* Make package:e2e a relative reference

diff --git a/packages/android_alarm_manager/CHANGELOG.md b/packages/android_alarm_manager/CHANGELOG.md
index 689429d..faa2c73 100644
--- a/packages/android_alarm_manager/CHANGELOG.md
+++ b/packages/android_alarm_manager/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.5+12
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.4.5+11
 
 * Update lower bound of dart dependency to 2.1.0.
diff --git a/packages/android_alarm_manager/example/pubspec.yaml b/packages/android_alarm_manager/example/pubspec.yaml
index 2fc1918..c4d698b 100644
--- a/packages/android_alarm_manager/example/pubspec.yaml
+++ b/packages/android_alarm_manager/example/pubspec.yaml
@@ -7,7 +7,8 @@
   android_alarm_manager:
     path: ../
   shared_preferences: ^0.5.6
-  e2e: 0.3.0
+  e2e:
+    path: ../../e2e
   path_provider: ^1.3.1
 
 dev_dependencies:
diff --git a/packages/android_alarm_manager/example/test_driver/android_alarm_manager_e2e_test.dart b/packages/android_alarm_manager/example/test_driver/android_alarm_manager_e2e_test.dart
index eea5e8a..4e32b48 100644
--- a/packages/android_alarm_manager/example/test_driver/android_alarm_manager_e2e_test.dart
+++ b/packages/android_alarm_manager/example/test_driver/android_alarm_manager_e2e_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:flutter_driver/flutter_driver.dart';
@@ -33,9 +34,12 @@
   // for this plugin will need to be resumed for the test to pass.
   final StreamSubscription<VMIsolateRef> subscription =
       await resumeIsolatesOnPause(driver);
-  final String result =
-      await driver.requestData(null, timeout: const Duration(minutes: 5));
+  final String data = await driver.requestData(
+    null,
+    timeout: const Duration(minutes: 1),
+  );
   await driver.close();
   await subscription.cancel();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/EmbeddingV1ActivityTest.java b/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/EmbeddingV1ActivityTest.java
index db000f0..f239ae8 100644
--- a/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/EmbeddingV1ActivityTest.java
+++ b/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.androidintentexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/MainActivityTest.java b/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/MainActivityTest.java
index d390dcd..5352e44 100644
--- a/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/MainActivityTest.java
+++ b/packages/android_intent/example/android/app/src/androidTestDebug/java/io/flutter/plugins/androidintentexample/MainActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.androidintentexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class);
 }
diff --git a/packages/android_intent/example/pubspec.yaml b/packages/android_intent/example/pubspec.yaml
index 22ff833..325a4c5 100644
--- a/packages/android_intent/example/pubspec.yaml
+++ b/packages/android_intent/example/pubspec.yaml
@@ -8,7 +8,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: "^0.2.1"
+  e2e:
+    path: ../../e2e
   flutter_driver:
     sdk: flutter
   pedantic: ^1.8.0
diff --git a/packages/android_intent/example/test_driver/android_intent_e2e_test.dart b/packages/android_intent/example/test_driver/android_intent_e2e_test.dart
index 6147d44..34483b9 100644
--- a/packages/android_intent/example/test_driver/android_intent_e2e_test.dart
+++ b/packages/android_intent/example/test_driver/android_intent_e2e_test.dart
@@ -1,12 +1,16 @@
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
-      await driver.requestData(null, timeout: const Duration(minutes: 1));
+  final String data = await driver.requestData(
+    null,
+    timeout: const Duration(minutes: 1),
+  );
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/battery/CHANGELOG.md b/packages/battery/CHANGELOG.md
index 2229fb1..7b94898 100644
--- a/packages/battery/CHANGELOG.md
+++ b/packages/battery/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.0.2
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 1.0.1
 
 * Update lower bound of dart dependency to 2.1.0.
diff --git a/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/EmbedderV1ActivityTest.java b/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/EmbedderV1ActivityTest.java
index ef6e5d9..40fedbb 100644
--- a/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/EmbedderV1ActivityTest.java
+++ b/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/EmbedderV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.batteryexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbedderV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbedderV1Activity> rule =
diff --git a/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java b/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java
index 1986d0a..88aade3 100644
--- a/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java
+++ b/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.batteryexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/battery/example/pubspec.yaml b/packages/battery/example/pubspec.yaml
index 0788d02..d0ef82e 100644
--- a/packages/battery/example/pubspec.yaml
+++ b/packages/battery/example/pubspec.yaml
@@ -10,7 +10,8 @@
 dev_dependencies:
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.1
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/battery/pubspec.yaml b/packages/battery/pubspec.yaml
index 6ad8fcf..487ee5b 100644
--- a/packages/battery/pubspec.yaml
+++ b/packages/battery/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for accessing information about the battery state
   (full, charging, discharging) on Android and iOS.
 homepage: https://github.com/flutter/plugins/tree/master/packages/battery
-version: 1.0.1
+version: 1.0.2
 
 flutter:
   plugin:
@@ -24,7 +24,8 @@
   mockito: 3.0.0
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.1
+  e2e:
+    path: ../e2e
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/EmbeddingV1ActivityTest.java b/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/EmbeddingV1ActivityTest.java
index 95b5f43..fd947a0 100644
--- a/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/EmbeddingV1ActivityTest.java
+++ b/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.cameraexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java b/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java
index 474e3b7..e5eff70 100644
--- a/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java
+++ b/packages/camera/example/android/app/src/androidTestDebug/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.cameraexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/camera/example/pubspec.yaml b/packages/camera/example/pubspec.yaml
index a066129..cbd0adc 100644
--- a/packages/camera/example/pubspec.yaml
+++ b/packages/camera/example/pubspec.yaml
@@ -8,7 +8,8 @@
   flutter:
     sdk: flutter
   video_player: ^0.10.0
-  e2e: "^0.2.0"
+  e2e:
+    path: ../../e2e
 
 dev_dependencies:
   flutter_test:
diff --git a/packages/camera/example/test_driver/camera_e2e_test.dart b/packages/camera/example/test_driver/camera_e2e_test.dart
index 4963854..1e6e3ba 100644
--- a/packages/camera/example/test_driver/camera_e2e_test.dart
+++ b/packages/camera/example/test_driver/camera_e2e_test.dart
@@ -1,4 +1,5 @@
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:flutter_driver/flutter_driver.dart';
@@ -33,8 +34,10 @@
   ]);
   print('Starting test.');
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
-      await driver.requestData(null, timeout: const Duration(minutes: 1));
+  final String data = await driver.requestData(
+    null,
+    timeout: const Duration(minutes: 1),
+  );
   await driver.close();
   print('Test finished. Revoking camera permissions...');
   Process.runSync('adb', <String>[
@@ -51,5 +54,7 @@
     _examplePackage,
     'android.permission.RECORD_AUDIO'
   ]);
-  exit(result == 'pass' ? 0 : 1);
+
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md
index 3bb7771..9cecf8c 100644
--- a/packages/connectivity/connectivity/CHANGELOG.md
+++ b/packages/connectivity/connectivity/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.9+1
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.4.9
 
 * Add support for `web` (by endorsing `connectivity_for_web` 0.3.0)
diff --git a/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java b/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java
index a347553..edd544d 100644
--- a/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java
+++ b/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.connectivityexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java b/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java
index 35391fd..0b0ee94 100644
--- a/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java
+++ b/packages/connectivity/connectivity/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.connectivityexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/connectivity/connectivity/example/pubspec.yaml b/packages/connectivity/connectivity/example/pubspec.yaml
index a16e604..fb8ba62 100644
--- a/packages/connectivity/connectivity/example/pubspec.yaml
+++ b/packages/connectivity/connectivity/example/pubspec.yaml
@@ -11,7 +11,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/connectivity/connectivity/example/test_driver/test/connectivity_e2e_test.dart b/packages/connectivity/connectivity/example/test_driver/test/connectivity_e2e_test.dart
index 84b7ae6..c0cbdca 100644
--- a/packages/connectivity/connectivity/example/test_driver/test/connectivity_e2e_test.dart
+++ b/packages/connectivity/connectivity/example/test_driver/test/connectivity_e2e_test.dart
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml
index c7ef8fe..cfe4779 100644
--- a/packages/connectivity/connectivity/pubspec.yaml
+++ b/packages/connectivity/connectivity/pubspec.yaml
@@ -5,7 +5,7 @@
 # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.4.9
+version: 0.4.9+1
 
 flutter:
   plugin:
@@ -34,7 +34,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   mockito: ^4.1.1
   plugin_platform_interface: ^1.0.0
   pedantic: ^1.8.0
diff --git a/packages/connectivity/connectivity_for_web/CHANGELOG.md b/packages/connectivity/connectivity_for_web/CHANGELOG.md
index 83dc386..906b0fc 100644
--- a/packages/connectivity/connectivity_for_web/CHANGELOG.md
+++ b/packages/connectivity/connectivity_for_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.1+1
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.3.1
 
 * Use NetworkInformation API from dart:html, instead of the JS-interop version.
diff --git a/packages/connectivity/connectivity_for_web/pubspec.yaml b/packages/connectivity/connectivity_for_web/pubspec.yaml
index e1142a7..acb31c3 100644
--- a/packages/connectivity/connectivity_for_web/pubspec.yaml
+++ b/packages/connectivity/connectivity_for_web/pubspec.yaml
@@ -1,6 +1,6 @@
 name: connectivity_for_web
 description: An implementation for the web platform of the Flutter `connectivity` plugin. This uses the NetworkInformation Web API, with a fallback to Navigator.onLine.
-version: 0.3.1
+version: 0.3.1+1
 homepage: https://github.com/ditman/plugins/tree/connectivity-web/packages/connectivity/experimental_connectivity_web
 
 flutter:
@@ -23,7 +23,8 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.4+3
+  e2e:
+    path: ../../e2e
   mockito: ^4.1.1
 
 environment:
diff --git a/packages/connectivity/connectivity_for_web/test/pubspec.yaml b/packages/connectivity/connectivity_for_web/test/pubspec.yaml
index 44f4b55..7c423f3 100644
--- a/packages/connectivity/connectivity_for_web/test/pubspec.yaml
+++ b/packages/connectivity/connectivity_for_web/test/pubspec.yaml
@@ -1,6 +1,6 @@
 name: connectivity_web_example
-description: Example web app for the connectivity plugin 
-version: 0.1.1
+description: Example web app for the connectivity plugin
+version: 0.1.1+1
 homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_web
 
 dependencies:
@@ -17,7 +17,8 @@
     sdk: flutter
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.4+3
+  e2e:
+    path: ../../../e2e
   mockito: ^4.1.1
 
 environment:
diff --git a/packages/connectivity/connectivity_macos/CHANGELOG.md b/packages/connectivity/connectivity_macos/CHANGELOG.md
index 637be00..ac12b21 100644
--- a/packages/connectivity/connectivity_macos/CHANGELOG.md
+++ b/packages/connectivity/connectivity_macos/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.1.0+5
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.1.0+4
 
 * Remove Android folder from `connectivity_macos`.
diff --git a/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java b/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java
index a347553..edd544d 100644
--- a/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java
+++ b/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.connectivityexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java b/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java
index 35391fd..0b0ee94 100644
--- a/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java
+++ b/packages/connectivity/connectivity_macos/example/android/app/src/main/java/io/flutter/plugins/connectivityexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.connectivityexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/connectivity/connectivity_macos/example/pubspec.yaml b/packages/connectivity/connectivity_macos/example/pubspec.yaml
index 8772500..fd18be0 100644
--- a/packages/connectivity/connectivity_macos/example/pubspec.yaml
+++ b/packages/connectivity/connectivity_macos/example/pubspec.yaml
@@ -12,7 +12,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/connectivity/connectivity_macos/example/test_driver/test/connectivity_e2e_test.dart b/packages/connectivity/connectivity_macos/example/test_driver/test/connectivity_e2e_test.dart
index 84b7ae6..c0cbdca 100644
--- a/packages/connectivity/connectivity_macos/example/test_driver/test/connectivity_e2e_test.dart
+++ b/packages/connectivity/connectivity_macos/example/test_driver/test/connectivity_e2e_test.dart
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/device_info/CHANGELOG.md b/packages/device_info/CHANGELOG.md
index 057638d..97c1e1f 100644
--- a/packages/device_info/CHANGELOG.md
+++ b/packages/device_info/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.2+5
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.4.2+4
 
 Update lower bound of dart dependency to 2.1.0.
diff --git a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1ActivityTest.java b/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1ActivityTest.java
index 2bec9fb..c8fb26e 100644
--- a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1ActivityTest.java
+++ b/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.deviceinfoexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/device_info/example/pubspec.yaml b/packages/device_info/example/pubspec.yaml
index dc63d8b..0546cb6 100644
--- a/packages/device_info/example/pubspec.yaml
+++ b/packages/device_info/example/pubspec.yaml
@@ -10,7 +10,8 @@
 dev_dependencies:
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/device_info/example/test_driver/device_info_e2e_test.dart b/packages/device_info/example/test_driver/device_info_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/device_info/example/test_driver/device_info_e2e_test.dart
+++ b/packages/device_info/example/test_driver/device_info_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/device_info/pubspec.yaml b/packages/device_info/pubspec.yaml
index 8ad768a..f1883a7 100644
--- a/packages/device_info/pubspec.yaml
+++ b/packages/device_info/pubspec.yaml
@@ -5,7 +5,7 @@
 # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.4.2+4
+version: 0.4.2+5
 
 flutter:
   plugin:
@@ -24,7 +24,6 @@
   test: ^1.3.0
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.0
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/e2e/CHANGELOG.md b/packages/e2e/CHANGELOG.md
index 255d7ce..2df897d 100644
--- a/packages/e2e/CHANGELOG.md
+++ b/packages/e2e/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.2
+
+* Fix `setSurfaceSize` for e2e tests.
+
 ## 0.6.1
 
 * Added `data` in the reported json.
diff --git a/packages/e2e/lib/e2e.dart b/packages/e2e/lib/e2e.dart
index a9bf830..d773b9b 100644
--- a/packages/e2e/lib/e2e.dart
+++ b/packages/e2e/lib/e2e.dart
@@ -51,9 +51,33 @@
   @override
   bool get registerTestTextInput => false;
 
+  Size _surfaceSize;
+
+  /// Artificially changes the surface size to `size` on the Widget binding,
+  /// then flushes microtasks.
+  ///
+  /// Set to null to use the default surface size.
   @override
-  ViewConfiguration createViewConfiguration() => TestViewConfiguration(
-      size: window.physicalSize / window.devicePixelRatio);
+  Future<void> setSurfaceSize(Size size) {
+    return TestAsyncUtils.guard<void>(() async {
+      assert(inTest);
+      if (_surfaceSize == size) {
+        return;
+      }
+      _surfaceSize = size;
+      handleMetricsChanged();
+    });
+  }
+
+  @override
+  ViewConfiguration createViewConfiguration() {
+    final double devicePixelRatio = window.devicePixelRatio;
+    final Size size = _surfaceSize ?? window.physicalSize / devicePixelRatio;
+    return TestViewConfiguration(
+      size: size,
+      window: window,
+    );
+  }
 
   final Completer<bool> _allTestsPassed = Completer<bool>();
 
diff --git a/packages/e2e/pubspec.yaml b/packages/e2e/pubspec.yaml
index 70e57d0..956a23f 100644
--- a/packages/e2e/pubspec.yaml
+++ b/packages/e2e/pubspec.yaml
@@ -1,6 +1,6 @@
 name: e2e
 description: Runs tests that use the flutter_test API as integration tests.
-version: 0.6.1
+version: 0.6.2
 homepage: https://github.com/flutter/plugins/tree/master/packages/e2e
 
 environment:
diff --git a/packages/e2e/test/binding_test.dart b/packages/e2e/test/binding_test.dart
index 8c97e16..50ff42d 100644
--- a/packages/e2e/test/binding_test.dart
+++ b/packages/e2e/test/binding_test.dart
@@ -10,11 +10,11 @@
   group('Test E2E binding', () {
     final WidgetsBinding binding = E2EWidgetsFlutterBinding.ensureInitialized();
     assert(binding is E2EWidgetsFlutterBinding);
-    final E2EWidgetsFlutterBinding e2ebinding =
+    final E2EWidgetsFlutterBinding e2eBinding =
         binding as E2EWidgetsFlutterBinding;
 
     setUp(() {
-      request = e2ebinding.callback(<String, String>{
+      request = e2eBinding.callback(<String, String>{
         'command': 'request_data',
       });
     });
@@ -23,8 +23,34 @@
       runApp(MaterialApp(
         home: Text('Test'),
       ));
-      expect(tester.binding, e2ebinding);
-      e2ebinding.reportData = <String, dynamic>{'answer': 42};
+      expect(tester.binding, e2eBinding);
+      e2eBinding.reportData = <String, dynamic>{'answer': 42};
+    });
+
+    testWidgets('setSurfaceSize works', (WidgetTester tester) async {
+      await tester.pumpWidget(MaterialApp(home: Center(child: Text('Test'))));
+
+      final Size windowCenter = tester.binding.window.physicalSize /
+          tester.binding.window.devicePixelRatio /
+          2;
+      final double windowCenterX = windowCenter.width;
+      final double windowCenterY = windowCenter.height;
+
+      Offset widgetCenter = tester.getRect(find.byType(Text)).center;
+      expect(widgetCenter.dx, windowCenterX);
+      expect(widgetCenter.dy, windowCenterY);
+
+      await tester.binding.setSurfaceSize(const Size(200, 300));
+      await tester.pump();
+      widgetCenter = tester.getRect(find.byType(Text)).center;
+      expect(widgetCenter.dx, 100);
+      expect(widgetCenter.dy, 150);
+
+      await tester.binding.setSurfaceSize(null);
+      await tester.pump();
+      widgetCenter = tester.getRect(find.byType(Text)).center;
+      expect(widgetCenter.dx, windowCenterX);
+      expect(widgetCenter.dy, windowCenterY);
     });
   });
 
diff --git a/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/EmbeddingV1ActivityTest.java b/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/EmbeddingV1ActivityTest.java
index a5ad217..cb699d5 100644
--- a/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/EmbeddingV1ActivityTest.java
+++ b/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.flutter_plugin_android_lifecycle_example;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/MainActivityTest.java b/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/MainActivityTest.java
index 05057c1..7228115 100644
--- a/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/MainActivityTest.java
+++ b/packages/flutter_plugin_android_lifecycle/example/android/app/src/androidTest/java/io/flutter/plugins/flutter_plugin_android_lifecycle/MainActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.flutter_plugin_android_lifecycle_example;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class);
 }
diff --git a/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml b/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml
index 379e0b8..cb5691b 100644
--- a/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml
+++ b/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml
@@ -8,7 +8,8 @@
 dependencies:
   flutter:
     sdk: flutter
-  e2e: "^0.2.1"
+  e2e:
+    path: ../../e2e
 
 dev_dependencies:
   flutter_test:
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/EmbeddingV1ActivityTest.java b/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/EmbeddingV1ActivityTest.java
index ff39d1d..6ce8467 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/EmbeddingV1ActivityTest.java
+++ b/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/EmbeddingV1ActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.googlemaps;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.plugins.googlemapsexample.*;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/MainActivityTest.java b/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/MainActivityTest.java
index 525d2da..6b52f1c 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/MainActivityTest.java
+++ b/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemaps/MainActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.googlemaps;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/example/pubspec.yaml
index c7b2c5f..a011cb1 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter/example/pubspec.yaml
@@ -16,7 +16,8 @@
   flutter_driver:
     sdk: flutter
   test: ^1.6.0
-  e2e: ^0.2.1
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 # For information on the generic Dart part of this file, see the
@@ -58,5 +59,5 @@
   #       - asset: fonts/TrajanPro_Bold.ttf
   #         weight: 700
   #
-  # For details regarding fonts from package dependencies, 
+  # For details regarding fonts from package dependencies,
   # see https://flutter.io/custom-fonts/#from-packages
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart
index c47862b..69304d1 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart
@@ -424,6 +424,7 @@
   });
 
   testWidgets('testInitialCenterLocationAtCenter', (WidgetTester tester) async {
+    await tester.binding.setSurfaceSize(const Size(800.0, 600.0));
     final Completer<GoogleMapController> mapControllerCompleter =
         Completer<GoogleMapController>();
     final Key key = GlobalKey();
@@ -443,6 +444,7 @@
         await mapControllerCompleter.future;
 
     await tester.pumpAndSettle();
+
     // TODO(cyanglaz): Remove this after we added `mapRendered` callback, and `mapControllerCompleter.complete(controller)` above should happen
     // in `mapRendered`.
     // https://github.com/flutter/flutter/issues/54758
@@ -468,6 +470,7 @@
                   tester.binding.window.devicePixelRatio)
               .round());
     }
+    await tester.binding.setSurfaceSize(null);
   });
 
   testWidgets('testGetVisibleRegion', (WidgetTester tester) async {
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java
index 8bddbff..92c29c5 100644
--- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java
+++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.googlesigninexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java
index 77cdcee..21fe2cb 100644
--- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java
+++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.googlesigninexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/pubspec.yaml b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/pubspec.yaml
index aee0739..fff936d 100755
--- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/pubspec.yaml
+++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/pubspec.yaml
@@ -11,7 +11,8 @@
 
 dev_dependencies:
   pedantic: ^1.8.0
-  e2e:  ^0.2.1
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
 
diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md
index 8fbba49..761ba04 100644
--- a/packages/google_sign_in/google_sign_in/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 4.5.2
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 4.5.1
 
 * Add note on Apple sign in requirement in README.
diff --git a/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java b/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java
index 8bddbff..92c29c5 100644
--- a/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java
+++ b/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.googlesigninexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java b/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java
index 77cdcee..21fe2cb 100644
--- a/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java
+++ b/packages/google_sign_in/google_sign_in/example/android/app/src/main/java/io/flutter/plugins/googlesigninexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.googlesigninexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/google_sign_in/google_sign_in/example/pubspec.yaml b/packages/google_sign_in/google_sign_in/example/pubspec.yaml
index e3ab95e..37d1096 100755
--- a/packages/google_sign_in/google_sign_in/example/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/example/pubspec.yaml
@@ -10,7 +10,8 @@
 
 dev_dependencies:
   pedantic: ^1.8.0
-  e2e:  ^0.2.1
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
 
diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml
index 8e52033..e76dbed 100644
--- a/packages/google_sign_in/google_sign_in/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for Google Sign-In, a secure authentication system
   for signing in with a Google account on Android and iOS.
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in
-version: 4.5.1
+version: 4.5.2
 
 flutter:
   plugin:
@@ -34,7 +34,8 @@
   flutter_test:
     sdk: flutter
   pedantic: ^1.8.0
-  e2e: ^0.2.1
+  e2e:
+    path: ../../e2e
 
 environment:
   sdk: ">=2.1.0 <3.0.0"
diff --git a/packages/google_sign_in/google_sign_in/test_driver/google_sign_in_e2e_test.dart b/packages/google_sign_in/google_sign_in/test_driver/google_sign_in_e2e_test.dart
index 9f1704f..f07dba3 100644
--- a/packages/google_sign_in/google_sign_in/test_driver/google_sign_in_e2e_test.dart
+++ b/packages/google_sign_in/google_sign_in/test_driver/google_sign_in_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
index af6b1a0..35a6934 100644
--- a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.9.1+2
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.9.1+1
 
 * Remove Android folder from `google_sign_in_web`.
diff --git a/packages/google_sign_in/google_sign_in_web/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
index 76922d9..8b48d36 100644
--- a/packages/google_sign_in/google_sign_in_web/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for Google Sign-In, a secure authentication system
   for signing in with a Google account on Android, iOS and Web.
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in_web
-version: 0.9.1+1
+version: 0.9.1+2
 
 flutter:
   plugin:
diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md
index 0cec3a3..82bb5f3 100644
--- a/packages/image_picker/image_picker/CHANGELOG.md
+++ b/packages/image_picker/image_picker/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.6.7+5
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
+
 ## 0.6.7+4
 
 * Support iOS simulator x86_64 architecture.
diff --git a/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/EmbeddingV1ActivityTest.java b/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/EmbeddingV1ActivityTest.java
index 924cf2f..a9146df 100644
--- a/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/EmbeddingV1ActivityTest.java
+++ b/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.imagepickerexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/FlutterActivityTest.java b/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/FlutterActivityTest.java
index df9794c..6afe014 100644
--- a/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/FlutterActivityTest.java
+++ b/packages/image_picker/image_picker/example/android/app/src/main/java/io/flutter/plugins/imagepickerexample/FlutterActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.imagepickerexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/image_picker/image_picker/example/pubspec.yaml b/packages/image_picker/image_picker/example/pubspec.yaml
index 93df8df..63e42a1 100755
--- a/packages/image_picker/image_picker/example/pubspec.yaml
+++ b/packages/image_picker/image_picker/example/pubspec.yaml
@@ -14,7 +14,8 @@
 dev_dependencies:
   flutter_driver:
     sdk: flutter
-  e2e:  ^0.2.1
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/image_picker/image_picker/example/test_driver/test/image_picker_e2e_test.dart b/packages/image_picker/image_picker/example/test_driver/test/image_picker_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/image_picker/image_picker/example/test_driver/test/image_picker_e2e_test.dart
+++ b/packages/image_picker/image_picker/example/test_driver/test/image_picker_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml
index 06da529..94fa53b 100755
--- a/packages/image_picker/image_picker/pubspec.yaml
+++ b/packages/image_picker/image_picker/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for selecting images from the Android and iOS image
   library, and taking new pictures with the camera.
 homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker
-version: 0.6.7+4
+version: 0.6.7+5
 
 flutter:
   plugin:
@@ -23,7 +23,8 @@
   video_player: ^0.10.3
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.1
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md
index c159b09..3f6bd8e 100644
--- a/packages/in_app_purchase/CHANGELOG.md
+++ b/packages/in_app_purchase/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.4+2
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.3.4+1
 
 * iOS: Fix the bug that `SKPaymentQueueWrapper.transactions` doesn't return all transactions.
diff --git a/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/EmbeddingV1ActivityTest.java b/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/EmbeddingV1ActivityTest.java
index 1cac723..aaed781 100644
--- a/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/EmbeddingV1ActivityTest.java
+++ b/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.inapppurchaseexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/FlutterActivityTest.java b/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/FlutterActivityTest.java
index 1ebb9d2..1a6203b 100644
--- a/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/FlutterActivityTest.java
+++ b/packages/in_app_purchase/example/android/app/src/main/java/io/flutter/plugins/inapppurchaseexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.inapppurchaseexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/in_app_purchase/example/pubspec.yaml b/packages/in_app_purchase/example/pubspec.yaml
index 0d595bd..6d8fd0e 100644
--- a/packages/in_app_purchase/example/pubspec.yaml
+++ b/packages/in_app_purchase/example/pubspec.yaml
@@ -14,7 +14,8 @@
     sdk: flutter
   in_app_purchase:
     path: ../
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/in_app_purchase/example/test_driver/test/in_app_purchase_e2e_test.dart b/packages/in_app_purchase/example/test_driver/test/in_app_purchase_e2e_test.dart
index 449af66..7a2c213 100644
--- a/packages/in_app_purchase/example/test_driver/test/in_app_purchase_e2e_test.dart
+++ b/packages/in_app_purchase/example/test_driver/test/in_app_purchase_e2e_test.dart
@@ -2,14 +2,16 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'dart:io';
 import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml
index 58f8e11..907c8ce 100644
--- a/packages/in_app_purchase/pubspec.yaml
+++ b/packages/in_app_purchase/pubspec.yaml
@@ -1,7 +1,7 @@
 name: in_app_purchase
 description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
 homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase
-version: 0.3.4+1
+version: 0.3.4+2
 
 dependencies:
   async: ^2.0.8
@@ -22,7 +22,8 @@
     path: example/
   test: ^1.5.2
   shared_preferences: ^0.5.2
-  e2e: ^0.2.0
+  e2e:
+    path: ../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/local_auth/CHANGELOG.md b/packages/local_auth/CHANGELOG.md
index 8fec727..d6c5f61 100644
--- a/packages/local_auth/CHANGELOG.md
+++ b/packages/local_auth/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.6.2+4
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.6.2+3
 
 * Post-v2 Android embedding cleanup.
diff --git a/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/EmbeddingV1ActivityTest.java b/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/EmbeddingV1ActivityTest.java
index b2cea8d..354f86b 100644
--- a/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/EmbeddingV1ActivityTest.java
+++ b/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/EmbeddingV1ActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.localauth;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.plugins.localauthexample.EmbeddingV1Activity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/MainActivityTest.java b/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/MainActivityTest.java
index f717ac9..2223163 100644
--- a/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/MainActivityTest.java
+++ b/packages/local_auth/example/android/app/src/androidTest/java/io/flutter/plugins/localauth/MainActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.localauth;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterFragmentActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterFragmentActivityTest {
   @Rule
   public ActivityTestRule<FlutterFragmentActivity> rule =
diff --git a/packages/local_auth/example/pubspec.yaml b/packages/local_auth/example/pubspec.yaml
index f6e7f66..478b374 100644
--- a/packages/local_auth/example/pubspec.yaml
+++ b/packages/local_auth/example/pubspec.yaml
@@ -8,7 +8,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: ^0.2.1
+  e2e:
+    path: ../../e2e
   flutter_driver:
     sdk: flutter
   pedantic: ^1.8.0
diff --git a/packages/local_auth/pubspec.yaml b/packages/local_auth/pubspec.yaml
index d80ebeb..3546cb9 100644
--- a/packages/local_auth/pubspec.yaml
+++ b/packages/local_auth/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for Android and iOS device authentication sensors
   such as Fingerprint Reader and Touch ID.
 homepage: https://github.com/flutter/plugins/tree/master/packages/local_auth
-version: 0.6.2+3
+version: 0.6.2+4
 
 flutter:
   plugin:
@@ -22,7 +22,8 @@
   flutter_plugin_android_lifecycle: ^1.0.2
 
 dev_dependencies:
-  e2e: ^0.2.1
+  e2e:
+    path: ../e2e
   flutter_driver:
     sdk: flutter
   flutter_test:
diff --git a/packages/package_info/CHANGELOG.md b/packages/package_info/CHANGELOG.md
index 2344f37..5b5c781 100644
--- a/packages/package_info/CHANGELOG.md
+++ b/packages/package_info/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.2
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.4.1
 
 * Add support for macOS.
diff --git a/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/EmbedderV1ActivityTest.java b/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/EmbedderV1ActivityTest.java
index 47362ba..2da6799 100644
--- a/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/EmbedderV1ActivityTest.java
+++ b/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/EmbedderV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.packageinfoexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbedderV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbedderV1Activity> rule =
diff --git a/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/MainActivityTest.java b/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/MainActivityTest.java
index 7a1dfdb..363ccec 100644
--- a/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/MainActivityTest.java
+++ b/packages/package_info/example/android/app/src/androidTest/java/io/flutter/plugins/packageinfoexample/MainActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.packageinfoexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/package_info/example/pubspec.yaml b/packages/package_info/example/pubspec.yaml
index f6ea2f4..8b4bd88 100644
--- a/packages/package_info/example/pubspec.yaml
+++ b/packages/package_info/example/pubspec.yaml
@@ -6,7 +6,8 @@
     sdk: flutter
   package_info:
     path: ../
-  e2e: "^0.2.1"
+  e2e:
+    path: ../../e2e
 
 dev_dependencies:
   flutter_driver:
diff --git a/packages/package_info/example/test_driver/package_info_e2e_test.dart b/packages/package_info/example/test_driver/package_info_e2e_test.dart
index 1bcd0d3..f532c38 100644
--- a/packages/package_info/example/test_driver/package_info_e2e_test.dart
+++ b/packages/package_info/example/test_driver/package_info_e2e_test.dart
@@ -2,14 +2,18 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
-      await driver.requestData(null, timeout: const Duration(minutes: 1));
+  final String data = await driver.requestData(
+    null,
+    timeout: const Duration(minutes: 1),
+  );
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/package_info/pubspec.yaml b/packages/package_info/pubspec.yaml
index bb18407..0634da1 100644
--- a/packages/package_info/pubspec.yaml
+++ b/packages/package_info/pubspec.yaml
@@ -5,7 +5,7 @@
 # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.4.1
+version: 0.4.2
 
 flutter:
   plugin:
@@ -28,7 +28,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: "^0.2.1"
+  e2e:
+    path: ../e2e
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/path_provider/path_provider/CHANGELOG.md b/packages/path_provider/path_provider/CHANGELOG.md
index 07c82ca..eab5b5f 100644
--- a/packages/path_provider/path_provider/CHANGELOG.md
+++ b/packages/path_provider/path_provider/CHANGELOG.md
@@ -1,11 +1,18 @@
+## 1.6.13
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 1.6.12
 
 * Fixed a Java lint in a test.
 
 ## 1.6.11
+
 * Updated documentation to reflect the need for changes in testing for federated plugins
 
 ## 1.6.10
+
 * Linux implementation endorsement
 
 ## 1.6.9
diff --git a/packages/path_provider/path_provider/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java b/packages/path_provider/path_provider/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java
index cce04b7..00ebeff 100644
--- a/packages/path_provider/path_provider/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java
+++ b/packages/path_provider/path_provider/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java
@@ -2,12 +2,12 @@
 package io.flutter.plugins.pathprovider;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.plugins.pathproviderexample.EmbeddingV1Activity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/path_provider/path_provider/example/android/app/src/androidTest/java/MainActivityTest.java b/packages/path_provider/path_provider/example/android/app/src/androidTest/java/MainActivityTest.java
index 5c37b59..59725c7 100644
--- a/packages/path_provider/path_provider/example/android/app/src/androidTest/java/MainActivityTest.java
+++ b/packages/path_provider/path_provider/example/android/app/src/androidTest/java/MainActivityTest.java
@@ -2,12 +2,12 @@
 package io.flutter.plugins.pathprovider;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/path_provider/path_provider/example/pubspec.yaml b/packages/path_provider/path_provider/example/pubspec.yaml
index 1d6a50c..367c6c6 100644
--- a/packages/path_provider/path_provider/example/pubspec.yaml
+++ b/packages/path_provider/path_provider/example/pubspec.yaml
@@ -8,7 +8,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: ^0.2.1
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
   test: any
diff --git a/packages/path_provider/path_provider/example/test_driver/path_provider_e2e_test.dart b/packages/path_provider/path_provider/example/test_driver/path_provider_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/path_provider/path_provider/example/test_driver/path_provider_e2e_test.dart
+++ b/packages/path_provider/path_provider/example/test_driver/path_provider_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/path_provider/path_provider/pubspec.yaml b/packages/path_provider/path_provider/pubspec.yaml
index db2da41..cac4ff2 100644
--- a/packages/path_provider/path_provider/pubspec.yaml
+++ b/packages/path_provider/path_provider/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for getting commonly used locations on the Android &
   iOS file systems, such as the temp and app data directories.
 homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider
-version: 1.6.12
+version: 1.6.13
 
 flutter:
   plugin:
@@ -25,7 +25,8 @@
   path_provider_linux: ^0.0.1
 
 dev_dependencies:
-  e2e: ^0.2.1
+  e2e:
+    path: ../../e2e
   flutter_test:
     sdk: flutter
   flutter_driver:
diff --git a/packages/path_provider/path_provider_linux/example/pubspec.yaml b/packages/path_provider/path_provider_linux/example/pubspec.yaml
index 4d758b7..186142d 100644
--- a/packages/path_provider/path_provider_linux/example/pubspec.yaml
+++ b/packages/path_provider/path_provider_linux/example/pubspec.yaml
@@ -24,7 +24,8 @@
     sdk: flutter
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.1
+  e2e:
+    path: ../../../e2e
 
 # For information on the generic Dart part of this file, see the
 # following page: https://dart.dev/tools/pub/pubspec
diff --git a/packages/path_provider/path_provider_linux/example/test_driver/path_provider_e2e_test.dart b/packages/path_provider/path_provider_linux/example/test_driver/path_provider_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/path_provider/path_provider_linux/example/test_driver/path_provider_e2e_test.dart
+++ b/packages/path_provider/path_provider_linux/example/test_driver/path_provider_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java b/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java
index cce04b7..00ebeff 100644
--- a/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java
+++ b/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/EmbeddingV1ActivityTest.java
@@ -2,12 +2,12 @@
 package io.flutter.plugins.pathprovider;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.plugins.pathproviderexample.EmbeddingV1Activity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/MainActivityTest.java b/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/MainActivityTest.java
index 7bdd449..9f8e2c2 100644
--- a/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/MainActivityTest.java
+++ b/packages/path_provider/path_provider_macos/example/android/app/src/androidTest/java/MainActivityTest.java
@@ -2,12 +2,12 @@
 package io.flutter.plugins.pathprovider;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.plugins.pathproviderexample.MainActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class);
 }
diff --git a/packages/path_provider/path_provider_macos/example/pubspec.yaml b/packages/path_provider/path_provider_macos/example/pubspec.yaml
index e3242b8..e807687 100644
--- a/packages/path_provider/path_provider_macos/example/pubspec.yaml
+++ b/packages/path_provider/path_provider_macos/example/pubspec.yaml
@@ -9,7 +9,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: ^0.2.1
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
   test: any
diff --git a/packages/path_provider/path_provider_macos/example/test_driver/path_provider_e2e_test.dart b/packages/path_provider/path_provider_macos/example/test_driver/path_provider_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/path_provider/path_provider_macos/example/test_driver/path_provider_e2e_test.dart
+++ b/packages/path_provider/path_provider_macos/example/test_driver/path_provider_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/quick_actions/CHANGELOG.md b/packages/quick_actions/CHANGELOG.md
index 1afc92a..f1f7f85 100644
--- a/packages/quick_actions/CHANGELOG.md
+++ b/packages/quick_actions/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.0+7
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.4.0+6
 
 * Post-v2 Android embedding cleanup.
diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java
index b3e2a08..8a3d6be 100644
--- a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java
+++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java
@@ -5,11 +5,11 @@
 package io.flutter.plugins.quickactionsexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java
index d809140..84b0c3e 100644
--- a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java
+++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.quickactionsexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/quick_actions/example/pubspec.yaml b/packages/quick_actions/example/pubspec.yaml
index 058d208..38427fc 100644
--- a/packages/quick_actions/example/pubspec.yaml
+++ b/packages/quick_actions/example/pubspec.yaml
@@ -10,7 +10,8 @@
 dev_dependencies:
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart b/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart
+++ b/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml
index 570c864..be720f6 100644
--- a/packages/quick_actions/pubspec.yaml
+++ b/packages/quick_actions/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for creating shortcuts on home screen, also known as
   Quick Actions on iOS and App Shortcuts on Android.
 homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions
-version: 0.4.0+6
+version: 0.4.0+7
 
 flutter:
   plugin:
@@ -23,7 +23,8 @@
   mockito: ^3.0.0
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../e2e
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/sensors/CHANGELOG.md b/packages/sensors/CHANGELOG.md
index 5550143..236618d 100644
--- a/packages/sensors/CHANGELOG.md
+++ b/packages/sensors/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.2+3
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.4.2+2
 
 * Post-v2 Android embedding cleanup.
diff --git a/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/EmbeddingV1ActivityTest.java b/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/EmbeddingV1ActivityTest.java
index 6d0274f..92f0564 100644
--- a/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/EmbeddingV1ActivityTest.java
+++ b/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.sensorsexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/FlutterActivityTest.java b/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/FlutterActivityTest.java
index a0fff82..c5d0c93 100644
--- a/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/FlutterActivityTest.java
+++ b/packages/sensors/example/android/app/src/main/java/io/flutter/plugins/sensorsexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.sensorsexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/sensors/example/pubspec.yaml b/packages/sensors/example/pubspec.yaml
index 69aa54c..02bca30 100644
--- a/packages/sensors/example/pubspec.yaml
+++ b/packages/sensors/example/pubspec.yaml
@@ -10,7 +10,8 @@
 dev_dependencies:
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/sensors/example/test_driver/test/sensors_e2e_test.dart b/packages/sensors/example/test_driver/test/sensors_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/sensors/example/test_driver/test/sensors_e2e_test.dart
+++ b/packages/sensors/example/test_driver/test/sensors_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/sensors/pubspec.yaml b/packages/sensors/pubspec.yaml
index 3e3aed1..9abbe6b 100644
--- a/packages/sensors/pubspec.yaml
+++ b/packages/sensors/pubspec.yaml
@@ -5,7 +5,7 @@
 # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.4.2+2
+version: 0.4.2+3
 
 flutter:
   plugin:
@@ -24,7 +24,8 @@
   test: ^1.3.0
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../e2e
   mockito: ^4.1.1
   pedantic: ^1.8.0
 
diff --git a/packages/share/CHANGELOG.md b/packages/share/CHANGELOG.md
index b06f8de..e18933d 100644
--- a/packages/share/CHANGELOG.md
+++ b/packages/share/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.6.4+4
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.6.4+3
 
 * Post-v2 Android embedding cleanup.
diff --git a/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/EmbeddingV1ActivityTest.java b/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/EmbeddingV1ActivityTest.java
index 9585411..83e7cf0 100644
--- a/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/EmbeddingV1ActivityTest.java
+++ b/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.shareexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/FlutterActivityTest.java b/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/FlutterActivityTest.java
index 58c9edf..0ad24dd 100644
--- a/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/FlutterActivityTest.java
+++ b/packages/share/example/android/app/src/main/java/io/flutter/plugins/shareexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.shareexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/share/example/pubspec.yaml b/packages/share/example/pubspec.yaml
index f69de96..4c0bb73 100644
--- a/packages/share/example/pubspec.yaml
+++ b/packages/share/example/pubspec.yaml
@@ -10,7 +10,8 @@
 dev_dependencies:
   flutter_driver:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
@@ -19,4 +20,4 @@
 environment:
   sdk: ">=2.0.0-dev.28.0 <3.0.0"
   flutter: ">=1.9.1+hotfix.2 <2.0.0"
-  
+
diff --git a/packages/share/example/test_driver/test/share_e2e_test.dart b/packages/share/example/test_driver/test/share_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/share/example/test_driver/test/share_e2e_test.dart
+++ b/packages/share/example/test_driver/test/share_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/share/pubspec.yaml b/packages/share/pubspec.yaml
index f695dbd..8da4d85 100644
--- a/packages/share/pubspec.yaml
+++ b/packages/share/pubspec.yaml
@@ -5,7 +5,7 @@
 # 0.6.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.6.4+3
+version: 0.6.4+4
 
 flutter:
   plugin:
@@ -26,7 +26,8 @@
   mockito: ^3.0.0
   flutter_test:
     sdk: flutter
-  e2e: ^0.2.0
+  e2e:
+    path: ../e2e
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md
index d17bbb9..52f1c1e 100644
--- a/packages/shared_preferences/shared_preferences/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.5.9
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.5.8
 
 * Support Linux by default.
diff --git a/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java
index 3eb677b..6917efb 100644
--- a/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java
+++ b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java
@@ -2,11 +2,11 @@
 package io.flutter.plugins.sharedpreferencesexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/FlutterActivityTest.java b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/FlutterActivityTest.java
index e1ec837..62a00b9 100644
--- a/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/FlutterActivityTest.java
+++ b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/FlutterActivityTest.java
@@ -5,12 +5,12 @@
 package io.flutter.plugins.sharedpreferencesexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/shared_preferences/shared_preferences/example/pubspec.yaml b/packages/shared_preferences/shared_preferences/example/pubspec.yaml
index 1e6df16..7a24c3f 100644
--- a/packages/shared_preferences/shared_preferences/example/pubspec.yaml
+++ b/packages/shared_preferences/shared_preferences/example/pubspec.yaml
@@ -11,7 +11,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart b/packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart
+++ b/packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml
index ca8c443..6477b33 100644
--- a/packages/shared_preferences/shared_preferences/pubspec.yaml
+++ b/packages/shared_preferences/shared_preferences/pubspec.yaml
@@ -5,7 +5,7 @@
 # 0.5.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.5.8
+version: 0.5.9
 
 flutter:
   plugin:
@@ -42,7 +42,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 environment:
diff --git a/packages/shared_preferences/shared_preferences_linux/example/pubspec.yaml b/packages/shared_preferences/shared_preferences_linux/example/pubspec.yaml
index 8e726d6..6f06837 100644
--- a/packages/shared_preferences/shared_preferences_linux/example/pubspec.yaml
+++ b/packages/shared_preferences/shared_preferences_linux/example/pubspec.yaml
@@ -18,7 +18,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/shared_preferences/shared_preferences_linux/example/test_driver/shared_preferences_e2e_test.dart b/packages/shared_preferences/shared_preferences_linux/example/test_driver/shared_preferences_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/shared_preferences/shared_preferences_linux/example/test_driver/shared_preferences_e2e_test.dart
+++ b/packages/shared_preferences/shared_preferences_linux/example/test_driver/shared_preferences_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/shared_preferences/shared_preferences_macos/example/pubspec.yaml b/packages/shared_preferences/shared_preferences_macos/example/pubspec.yaml
index c31a063..c6f2026 100644
--- a/packages/shared_preferences/shared_preferences_macos/example/pubspec.yaml
+++ b/packages/shared_preferences/shared_preferences_macos/example/pubspec.yaml
@@ -12,7 +12,8 @@
   flutter_driver:
     sdk: flutter
   test: any
-  e2e: ^0.2.0
+  e2e:
+    path: ../../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/shared_preferences/shared_preferences_macos/example/test_driver/shared_preferences_e2e_test.dart b/packages/shared_preferences/shared_preferences_macos/example/test_driver/shared_preferences_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/shared_preferences/shared_preferences_macos/example/test_driver/shared_preferences_e2e_test.dart
+++ b/packages/shared_preferences/shared_preferences_macos/example/test_driver/shared_preferences_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java b/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java
index bae2957..9ce8eb2 100644
--- a/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java
+++ b/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.urllauncherexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/MainActivityTest.java b/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/MainActivityTest.java
index a9000fb..927ff1d 100644
--- a/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/MainActivityTest.java
+++ b/packages/url_launcher/url_launcher/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/MainActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.urllauncherexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/url_launcher/url_launcher/example/pubspec.yaml b/packages/url_launcher/url_launcher/example/pubspec.yaml
index 1eb3e60..576b104 100644
--- a/packages/url_launcher/url_launcher/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/example/pubspec.yaml
@@ -8,7 +8,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: "^0.2.0"
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
   pedantic: ^1.8.0
diff --git a/packages/url_launcher/url_launcher/example/test_driver/url_launcher_e2e_test.dart b/packages/url_launcher/url_launcher/example/test_driver/url_launcher_e2e_test.dart
index 1bcd0d3..7a2c213 100644
--- a/packages/url_launcher/url_launcher/example/test_driver/url_launcher_e2e_test.dart
+++ b/packages/url_launcher/url_launcher/example/test_driver/url_launcher_e2e_test.dart
@@ -2,14 +2,16 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
-
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/url_launcher/url_launcher_linux/example/pubspec.yaml b/packages/url_launcher/url_launcher_linux/example/pubspec.yaml
index a4d08f3..2d99a8c 100644
--- a/packages/url_launcher/url_launcher_linux/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_linux/example/pubspec.yaml
@@ -9,7 +9,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: "^0.2.0"
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
   pedantic: ^1.8.0
diff --git a/packages/url_launcher/url_launcher_linux/example/test_driver/url_launcher_e2e_test.dart b/packages/url_launcher/url_launcher_linux/example/test_driver/url_launcher_e2e_test.dart
index 1bcd0d3..7a2c213 100644
--- a/packages/url_launcher/url_launcher_linux/example/test_driver/url_launcher_e2e_test.dart
+++ b/packages/url_launcher/url_launcher_linux/example/test_driver/url_launcher_e2e_test.dart
@@ -2,14 +2,16 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
-
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java b/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java
index bae2957..9ce8eb2 100644
--- a/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java
+++ b/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.urllauncherexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/FlutterActivityTest.java b/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/FlutterActivityTest.java
index a9000fb..927ff1d 100644
--- a/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/FlutterActivityTest.java
+++ b/packages/url_launcher/url_launcher_macos/example/android/app/src/androidTestDebug/java/io/flutter/plugins/urllauncherexample/FlutterActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.urllauncherexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class FlutterActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/url_launcher/url_launcher_macos/example/pubspec.yaml b/packages/url_launcher/url_launcher_macos/example/pubspec.yaml
index 1125b6d..a03bce7 100644
--- a/packages/url_launcher/url_launcher_macos/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_macos/example/pubspec.yaml
@@ -9,7 +9,8 @@
     path: ../
 
 dev_dependencies:
-  e2e: "^0.2.0"
+  e2e:
+    path: ../../../e2e
   flutter_driver:
     sdk: flutter
   pedantic: ^1.8.0
diff --git a/packages/url_launcher/url_launcher_macos/example/test_driver/url_launcher_e2e_test.dart b/packages/url_launcher/url_launcher_macos/example/test_driver/url_launcher_e2e_test.dart
index 1bcd0d3..7a2c213 100644
--- a/packages/url_launcher/url_launcher_macos/example/test_driver/url_launcher_e2e_test.dart
+++ b/packages/url_launcher/url_launcher_macos/example/test_driver/url_launcher_e2e_test.dart
@@ -2,14 +2,16 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
-
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml
index 29f1c91..1fb4f5b 100644
--- a/packages/video_player/video_player/example/pubspec.yaml
+++ b/packages/video_player/video_player/example/pubspec.yaml
@@ -12,7 +12,8 @@
     sdk: flutter
   flutter_driver:
     sdk: flutter
-  e2e: "^0.2.0"
+  e2e:
+    path: ../../../e2e
   test: any
   pedantic: ^1.8.0
 
diff --git a/packages/video_player/video_player/example/test_driver/video_player_e2e_test.dart b/packages/video_player/video_player/example/test_driver/video_player_e2e_test.dart
index f3aa9e2..7a2c213 100644
--- a/packages/video_player/video_player/example/test_driver/video_player_e2e_test.dart
+++ b/packages/video_player/video_player/example/test_driver/video_player_e2e_test.dart
@@ -3,13 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md
index 04155a5..baa485b 100644
--- a/packages/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.22+2
+
+* Update package:e2e reference to use the local version in the flutter/plugins
+  repository.
+
 ## 0.3.22+1
 
 * Update the `setAndGetScrollPosition` to use hard coded values and add a `pumpAndSettle` call.
diff --git a/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1ActivityTest.java b/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1ActivityTest.java
index fe10c61..80c7318 100644
--- a/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1ActivityTest.java
+++ b/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1ActivityTest.java
@@ -1,11 +1,11 @@
 package io.flutter.plugins.webviewflutterexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule<EmbeddingV1Activity> rule =
diff --git a/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java b/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java
index 73387b8..de79981 100644
--- a/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java
+++ b/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java
@@ -1,12 +1,12 @@
 package io.flutter.plugins.webviewflutterexample;
 
 import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
+import dev.flutter.plugins.e2e.FlutterTestRunner;
 import io.flutter.embedding.android.FlutterActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;
 
-@RunWith(FlutterRunner.class)
+@RunWith(FlutterTestRunner.class)
 public class MainActivityTest {
   @Rule
   public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
diff --git a/packages/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/example/pubspec.yaml
index f5842fc..f330764 100644
--- a/packages/webview_flutter/example/pubspec.yaml
+++ b/packages/webview_flutter/example/pubspec.yaml
@@ -15,7 +15,8 @@
     sdk: flutter
   flutter_driver:
     sdk: flutter
-  e2e: "^0.2.0"
+  e2e:
+    path: ../../e2e
   pedantic: ^1.8.0
 
 flutter:
diff --git a/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart b/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart
index ccd7166..7a2c213 100644
--- a/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart
+++ b/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart
@@ -3,14 +3,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
-
 import 'package:flutter_driver/flutter_driver.dart';
 
 Future<void> main() async {
   final FlutterDriver driver = await FlutterDriver.connect();
-  final String result =
+  final String data =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
   await driver.close();
-  exit(result == 'pass' ? 0 : 1);
+  final Map<String, dynamic> result = jsonDecode(data);
+  exit(result['result'] == 'true' ? 0 : 1);
 }
diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml
index 2ccc3ef..ec81183 100644
--- a/packages/webview_flutter/pubspec.yaml
+++ b/packages/webview_flutter/pubspec.yaml
@@ -1,6 +1,6 @@
 name: webview_flutter
 description: A Flutter plugin that provides a WebView widget on Android and iOS.
-version: 0.3.22+1
+version: 0.3.22+2
 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter
 
 environment: