Android 移动应用 UI 使用 Espresso 测试 - Chrome 停止 运行

Android Mobile App UI Test with Espresso - Chrome stop running

我们有超过 400 个 UI 测试使用 espresso 运行 在本地 Android Studio 和远程持续集成系统上编写。

其中一些测试检查移动应用程序是否使用 Chrome 打开 http url。 在我们的测试套件中,我们使用以下方法验证 chrome 是否为 运行:

fun waitChrome(device: UiDevice): UiObject2? {
    return device.wait(Until.findObject(By.pkg("com.android.chrome")), 2500)
}

上周,可能 gradle 依赖项的更新导致测试失败。 Chrome 在执行这些测试期间不再打开。为了修复这些故障,我更改了上述方法的实现:

fun waitChrome(device: UiDevice): UiObject2? {
    return device.wait(Until.findObject(By.pkg("org.chromium.webview_shell")), 2500)
}

在持续集成系统上启动系统 WebView Shell 而不是 Chrome 应用程序。

我想知道在执行这些测试期间有一种方法可以恢复 Chrome 的使用。 也许在模拟器启动的时候可以传递一些参数。

您可以控制是否触发相关 activity 而不是包名称。

样本activity

"com.android.chrome/com.google.android.apps.chrome.Main"

示例代码

Espresso - How can I check if an activity is launched after performing a certain action?

可能在持续集成系统上启动了系统 WebView Shell 而不是 Chrome 应用程序,因为在创建模拟器时,它不会在 abi 和包中使用 google_apis_playstore。您可以尝试使用此配置而不是 google_apis.