Skip to content

Commit

Permalink
Rewrite EspressoTest#closeSoftKeyboard.
Browse files Browse the repository at this point in the history
It was never actually opening the soft keyboard. This caused
failures in the upcoming android platform that no longer silently
ignores attempts to close keyboard that isn't open.

This commit rewrites the test so it opens the virtual keyboard
and asserts it is open before proceeding.

PiperOrigin-RevId: 619640236
  • Loading branch information
brettchabot authored and copybara-androidxtest committed Mar 27, 2024
1 parent 10dfce5 commit 6910488
Show file tree
Hide file tree
Showing 49 changed files with 82 additions and 102 deletions.
2 changes: 1 addition & 1 deletion BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
load("//build_extensions/maven:maven_repo.bzl", "maven_repository")
load("@rules_jvm_external//:defs.bzl", "artifact")
load("@rules_license//rules:license.bzl", "license")
load("//build_extensions/maven:maven_repo.bzl", "maven_repository")

package(default_visibility = ["//:__subpackages__"])

Expand Down
2 changes: 1 addition & 1 deletion annotation/java/androidx/test/annotation/BUILD
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Description: Build rules for building androidx.test.annotation from source

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

# all users should reference the equivalent targets in //annotation
package(
Expand Down
2 changes: 1 addition & 1 deletion build_extensions/android_app_instrumentation_tests.bzl
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""A rule wrapper for an instrumentation test for an android binary."""

load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load(
"//build_extensions:generate_instrumentation_tests.bzl",
"generate_instrumentation_tests",
Expand All @@ -10,6 +9,7 @@ load(
"infer_java_package_name",
"infer_java_package_name_from_label",
)
load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load("//build_extensions:register_extension_info.bzl", "register_extension_info")

def android_app_instrumentation_tests(
Expand Down
2 changes: 1 addition & 1 deletion build_extensions/android_library_instrumentation_tests.bzl
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""A rule wrapper for an instrumentation test for an android library."""

load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load(
"//build_extensions:generate_instrumentation_tests.bzl",
"generate_instrumentation_tests",
Expand All @@ -9,6 +8,7 @@ load(
"//build_extensions:infer_java_package_name.bzl",
"infer_java_package_name",
)
load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load("//build_extensions:register_extension_info.bzl", "register_extension_info")

def android_library_instrumentation_tests(
Expand Down
2 changes: 1 addition & 1 deletion core/java/androidx/test/core/BUILD
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description: Build rules for building androidx.test.truth from source

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

# all users should reference the equivalent targets in //core
package(
Expand Down
2 changes: 1 addition & 1 deletion core/javatests/androidx/test/core/app/BUILD
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Description: Tests for androidx.test.core

load("@build_bazel_rules_android//android:rules.bzl", "android_binary")
load("//build_extensions:android_library_test.bzl", "axt_android_library_test")
load("//build_extensions:axt_android_application_test.bzl", "axt_android_application_test")
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load("@build_bazel_rules_android//android:rules.bzl", "android_binary")
load("//build_extensions:phone_devices.bzl", "devices")

package(
Expand Down
2 changes: 1 addition & 1 deletion core/javatests/androidx/test/core/content/pm/BUILD
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Description: Tests for androidx.test.core

load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load("//build_extensions:android_library_test.bzl", "axt_android_library_test")
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")

package(
default_applicable_licenses = ["//:license"],
Expand Down
2 changes: 1 addition & 1 deletion core/javatests/androidx/test/core/os/BUILD
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Description: Tests for androidx.test.core

load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load("//build_extensions:android_library_test.bzl", "axt_android_library_test")
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")

package(
default_applicable_licenses = ["//:license"],
Expand Down
2 changes: 1 addition & 1 deletion core/javatests/androidx/test/core/view/BUILD
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Description: Tests for androidx.test.core

load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load("//build_extensions:android_library_test.bzl", "axt_android_library_test")
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")

package(
default_applicable_licenses = ["//:license"],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:api_checks.bzl", "api_checks")

# Description:
# Espresso Accessibility APIs
Expand Down
4 changes: 2 additions & 2 deletions espresso/contrib/java/androidx/test/espresso/contrib/BUILD
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:jetify.bzl", "jetify_android_library")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions:jetify.bzl", "jetify_android_library")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

# Description:
# Contributed / non-core functionality of Espresso. Tools which add on to
Expand Down
2 changes: 1 addition & 1 deletion espresso/core/java/androidx/test/espresso/BUILD
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description:
# Espresso - the new UI Test API for Android.

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

licenses(["notice"])

Expand Down
2 changes: 1 addition & 1 deletion espresso/core/javatests/androidx/test/espresso/BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Description:
# Tests for espresso core

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load(
"//build_extensions:android_library_test.bzl",
"axt_android_library_test",
Expand All @@ -9,7 +10,6 @@ load(
"//build_extensions:axt_android_application_test.bzl",
"axt_android_application_test",
)
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

package(default_applicable_licenses = ["//espresso:license"])

Expand Down
44 changes: 12 additions & 32 deletions espresso/core/javatests/androidx/test/espresso/EspressoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package androidx.test.espresso;

import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static androidx.test.espresso.Espresso.onData;
import static androidx.test.espresso.Espresso.onIdle;
import static androidx.test.espresso.Espresso.onView;
Expand All @@ -32,7 +33,6 @@
import static com.google.common.truth.Truth.assertThat;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.any;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.hasValue;
Expand All @@ -58,7 +58,6 @@
import androidx.test.ui.app.KeyboardTestActivity;
import androidx.test.ui.app.MainActivity;
import androidx.test.ui.app.R;
import androidx.test.ui.app.SendActivity;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
Expand Down Expand Up @@ -262,45 +261,26 @@ public void openOverflowInActionMode() {
}

@Test
public void closeSoftKeyboard() {
onData(allOf(instanceOf(Map.class), hasValue(SendActivity.class.getSimpleName())))
public void closeSoftKeyboard() throws InterruptedException {
onData(allOf(instanceOf(Map.class), hasValue(KeyboardTestActivity.class.getSimpleName())))
.perform(click());
// click on the edit text which bring the soft keyboard up
onView(withId(R.id.editTextUserInput)).perform(typeText("Espresso"));

onView(withId(R.id.enter_data_edit_text))
.perform(
new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return any(View.class);
}

onView(withId(R.id.editTextUserInput))
.check(
new ViewAssertion() {
@Override
public void perform(UiController uiController, View view) {
// This doesn't do anything if hardware keyboard is present - that is, soft keyboard
// is _not_ present. Whether it's present or not can be verified under the following
// device settings: Settings > Language & Input > Under Keyboard and input method
public void check(View view, NoMatchingViewException noViewFoundException) {
InputMethodManager imm =
(InputMethodManager)
getInstrumentation()
.getTargetContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, 0);
uiController.loopMainThreadUntilIdle();
}

@Override
public String getDescription() {
return "show soft input";
getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
assertTrue(imm.isActive(view));
}
});

onView(withId(R.id.enter_data_edit_text)).perform(ViewActions.closeSoftKeyboard());
onView(withId(R.id.editTextUserInput)).perform(ViewActions.closeSoftKeyboard());

assertThat(tracer.getSpans())
.containsAtLeast(
"beginSpan: Espresso.perform(show soft input, view.getId() is <ID>)",
"+-endSpan: Espresso.perform(show soft input, view.getId() is <ID>)")
.inOrder();
assertThat(tracer.getSpans())
.containsAtLeast(
"beginSpan: Espresso.perform(CloseKeyboardAction, view.getId() is <ID>)",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description:
# Tests for espresso matchers

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load(
"//build_extensions:android_library_test.bzl",
"axt_android_library_test",
)
load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load(
"//build_extensions:phone_devices.bzl",
"apis",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description:
# Tests for espresso remote classes

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load(
"//build_extensions:android_library_test.bzl",
"axt_android_library_test",
)
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

package(default_applicable_licenses = ["//espresso:license"])

Expand Down
2 changes: 1 addition & 1 deletion espresso/device/java/androidx/test/espresso/device/BUILD
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Description:
# EspressoDevice - the new Synchronized Device State Change API for Android.

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

licenses(["notice"])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# Light weight module that contains IdlinResources around concurrent Java APIs

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")

package(
default_applicable_licenses = ["//espresso:license"],
Expand Down
6 changes: 3 additions & 3 deletions espresso/idling_resource/java/androidx/test/espresso/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
# Light weight module represents a resources of an application under test which can cause
# asynchronous background work to happen during test execution.

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:api_checks.bzl", "api_checks")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

package(
default_applicable_licenses = ["//espresso:license"],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:api_checks.bzl", "api_checks")

# Description:
# Network Idling Resources
Expand Down
4 changes: 2 additions & 2 deletions espresso/intents/java/androidx/test/espresso/intent/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# Common library for testing inter and intra app communication via intents.

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:api_checks.bzl", "api_checks")

licenses(["notice"])

Expand Down
2 changes: 1 addition & 1 deletion espresso/remote/java/androidx/test/espresso/remote/BUILD
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description:
# Remote package for espresso.

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

licenses(["notice"])

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description:
# Tests for espresso remote classes

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load(
"//build_extensions:android_library_test.bzl",
"axt_android_library_test",
)
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

package(default_applicable_licenses = ["//espresso:license"])

Expand Down
4 changes: 2 additions & 2 deletions espresso/web/java/androidx/test/espresso/web/BUILD
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:api_checks.bzl", "api_checks")

licenses(["notice"])

Expand Down
2 changes: 1 addition & 1 deletion ext/junit/java/androidx/test/ext/junit/BUILD
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Description: Build rules for building androidx.test.junit from source

load("@build_bazel_rules_android//android:rules.bzl", "android_library")
load("//build_extensions:api_checks.bzl", "api_checks")
load("//build_extensions:dackka_test.bzl", "dackka_test")
load("//build_extensions:kt_android_library.bzl", "kt_android_library")
load("//build_extensions/maven:axt_android_aar.bzl", "axt_android_aar")
load("//build_extensions/maven:maven_artifact.bzl", "maven_artifact")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")

# all users should reference the equivalent targets in //ext/junit
package(
Expand Down
2 changes: 1 addition & 1 deletion ext/junit/javatests/androidx/test/ext/junit/rules/BUILD
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load("//build_extensions:android_library_test.bzl", "axt_android_library_test")
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")

package(default_applicable_licenses = ["//:license"])

Expand Down
2 changes: 1 addition & 1 deletion ext/junit/javatests/androidx/test/ext/junit/runners/BUILD
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load("//build_extensions:android_library_test.bzl", "axt_android_library_test")
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")

package(default_applicable_licenses = ["//:license"])

Expand Down
Loading

0 comments on commit 6910488

Please sign in to comment.