diff --git a/packages/e2e/CHANGELOG.md b/packages/e2e/CHANGELOG.md index 86f37b291549..ab17150d7448 100644 --- a/packages/e2e/CHANGELOG.md +++ b/packages/e2e/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.3.0 + +* Updates documentation to instruct developers not to launch the activity since + we are doing it for them. +* Renames `FlutterRunner` to `FlutterTestRunner` to avoid conflict with Fuchsia. + ## 0.2.4+4 * Fixed a hang that occurred on platforms that don't have a `MethodChannel` listener registered.. diff --git a/packages/e2e/README.md b/packages/e2e/README.md index 3e27ff36afa3..7d571a522057 100644 --- a/packages/e2e/README.md +++ b/packages/e2e/README.md @@ -93,10 +93,10 @@ import dev.flutter.plugins.e2e.FlutterRunner; import org.junit.Rule; import org.junit.runner.RunWith; -@RunWith(FlutterRunner.class) +@RunWith(FlutterTestRunner.class) public class MainActivityTest { @Rule - public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class); + public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class, true, false); } ``` diff --git a/packages/e2e/android/src/main/java/dev/flutter/plugins/e2e/FlutterRunner.java b/packages/e2e/android/src/main/java/dev/flutter/plugins/e2e/FlutterTestRunner.java similarity index 74% rename from packages/e2e/android/src/main/java/dev/flutter/plugins/e2e/FlutterRunner.java rename to packages/e2e/android/src/main/java/dev/flutter/plugins/e2e/FlutterTestRunner.java index 31f3e8431cad..f214cd7ce3fe 100644 --- a/packages/e2e/android/src/main/java/dev/flutter/plugins/e2e/FlutterRunner.java +++ b/packages/e2e/android/src/main/java/dev/flutter/plugins/e2e/FlutterTestRunner.java @@ -5,6 +5,7 @@ package dev.flutter.plugins.e2e; import android.app.Activity; +import android.util.Log; import androidx.test.rule.ActivityTestRule; import java.lang.reflect.Field; import java.util.Map; @@ -15,11 +16,13 @@ import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunNotifier; -public class FlutterRunner extends Runner { +public class FlutterTestRunner extends Runner { + private static final String TAG = "FlutterTestRunner"; final Class testClass; + ActivityTestRule rule = null; - public FlutterRunner(Class testClass) { + public FlutterTestRunner(Class testClass) { super(); this.testClass = testClass; @@ -29,8 +32,7 @@ public FlutterRunner(Class testClass) { if (field.isAnnotationPresent(Rule.class)) { try { Object instance = testClass.newInstance(); - ActivityTestRule rule = (ActivityTestRule) field.get(instance); - rule.launchActivity(null); + rule = (ActivityTestRule) field.get(instance); } catch (InstantiationException | IllegalAccessException e) { // This might occur if the developer did not make the rule public. // We could call field.setAccessible(true) but it seems better to throw. @@ -47,6 +49,17 @@ public Description getDescription() { @Override public void run(RunNotifier notifier) { + if (rule == null) { + throw new RuntimeException("Unable to run tests due to missing activity rule"); + } + try { + rule.launchActivity(null); + } catch (RuntimeException e) { + Log.v(TAG, "launchActivity failed, possibly because the activity was already running. " + e); + Log.v( + TAG, + "Try disabling auto-launch of the activity, e.g. ActivityTestRule<>(MainActivity.class, true, false);"); + } Map results = null; try { results = E2EPlugin.testResults.get(); diff --git a/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/EmbedderV1ActivityTest.java b/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/EmbedderV1ActivityTest.java index a526c1c8422e..eedde293eb6c 100644 --- a/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/EmbedderV1ActivityTest.java +++ b/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/EmbedderV1ActivityTest.java @@ -1,13 +1,13 @@ package com.example.e2e_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 EmbedderV1ActivityTest { @Rule public ActivityTestRule rule = - new ActivityTestRule<>(EmbedderV1Activity.class); + new ActivityTestRule<>(EmbedderV1Activity.class, true, false); } diff --git a/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/MainActivityTest.java b/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/MainActivityTest.java index b61c056e176d..93b1f923ee05 100644 --- a/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/MainActivityTest.java +++ b/packages/e2e/example/android/app/src/androidTest/java/com/example/e2e_example/MainActivityTest.java @@ -1,11 +1,13 @@ package com.example.e2e_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 rule = new ActivityTestRule<>(MainActivity.class); + @Rule + public ActivityTestRule rule = + new ActivityTestRule<>(MainActivity.class, true, false); } diff --git a/packages/e2e/pubspec.yaml b/packages/e2e/pubspec.yaml index 21e1210bd23e..e05bc1b560d8 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.2.4+4 +version: 0.3.0 homepage: https://github.com/flutter/plugins/tree/master/packages/e2e environment: