测试在本地 AS 模拟器上通过,但在 Firebase 测试实验室上失败
Tests pass on local AS emulator but fail on Firebase test-lab
我有以下代码:
- 在 Firefox 应用程序中单击切换按钮
- 切换从系统设置打开默认应用程序菜单
- 我打开浏览器列表,选择我的浏览器,然后按返回键 return 进入应用程序。
这部分在我的本地 Android 工作室模拟器和真实设备上工作正常,但是当我 运行 它在 Firebase 测试实验室中使用相同的虚拟设备配置时:Pixel 2 API 28,它不会检测到 "Browser app" 文本并失败。
知道为什么它在 Firebase 虚拟设备上的行为不同吗?
fun selectDefaultBrowser() {
clickSetDefaultBrowserToggle()
mDevice.waitNotNull(
Until.findObject(By.text("Browser app")),
TestAssetHelper.waitingTime
)
assertAndroidSettingsPackage()
defaultBrowserAppList().waitForExists(waitingTime)
defaultBrowserAppList().clickAndWaitForNewWindow()
fenixDebugOption().click()
mDevice.pressBack()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mDevice.pressBack()
}
}
fun clickSetDefaultBrowserToggle() =
setDefaultBrowserToggle().clickAndWaitForNewWindow()
fun setDefaultBrowserToggle() = mDevice.findObject(
UiSelector().resourceId("org.mozilla.fenix.debug:id/switch_widget")
)
fun defaultBrowserAppList() = mDevice.findObject(
(UiSelector()
.className("android.widget.TextView"))
.resourceId("android:id/title")
.text("Browser app")
)
fun assertAndroidSettingsPackage() = assertTrue(
mDevice.findObject(
(UiSelector().packageName("com.android.settings"))
).waitForExists(waitingTime)
)
fun fenixDebugOption() = mDevice.findObject(UiSelector().text("Firefox Preview"))```
找到罪魁祸首。
这还不够:有趣的 defaultBrowserAppList() = mDevice.findObject((UiSelector().text("Browser app"))。出于某种原因,它与文本不匹配。
应替换为 UiSelector().textContains("Browser app") 然后它起作用(忽略 caps/non-caps)。
同样适用于:mDevice.findObject(UiSelector().textContains("Firefox Preview"))
我有以下代码:
- 在 Firefox 应用程序中单击切换按钮
- 切换从系统设置打开默认应用程序菜单
- 我打开浏览器列表,选择我的浏览器,然后按返回键 return 进入应用程序。
这部分在我的本地 Android 工作室模拟器和真实设备上工作正常,但是当我 运行 它在 Firebase 测试实验室中使用相同的虚拟设备配置时:Pixel 2 API 28,它不会检测到 "Browser app" 文本并失败。
知道为什么它在 Firebase 虚拟设备上的行为不同吗?
fun selectDefaultBrowser() {
clickSetDefaultBrowserToggle()
mDevice.waitNotNull(
Until.findObject(By.text("Browser app")),
TestAssetHelper.waitingTime
)
assertAndroidSettingsPackage()
defaultBrowserAppList().waitForExists(waitingTime)
defaultBrowserAppList().clickAndWaitForNewWindow()
fenixDebugOption().click()
mDevice.pressBack()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mDevice.pressBack()
}
}
fun clickSetDefaultBrowserToggle() =
setDefaultBrowserToggle().clickAndWaitForNewWindow()
fun setDefaultBrowserToggle() = mDevice.findObject(
UiSelector().resourceId("org.mozilla.fenix.debug:id/switch_widget")
)
fun defaultBrowserAppList() = mDevice.findObject(
(UiSelector()
.className("android.widget.TextView"))
.resourceId("android:id/title")
.text("Browser app")
)
fun assertAndroidSettingsPackage() = assertTrue(
mDevice.findObject(
(UiSelector().packageName("com.android.settings"))
).waitForExists(waitingTime)
)
fun fenixDebugOption() = mDevice.findObject(UiSelector().text("Firefox Preview"))```
找到罪魁祸首。 这还不够:有趣的 defaultBrowserAppList() = mDevice.findObject((UiSelector().text("Browser app"))。出于某种原因,它与文本不匹配。
应替换为 UiSelector().textContains("Browser app") 然后它起作用(忽略 caps/non-caps)。 同样适用于:mDevice.findObject(UiSelector().textContains("Firefox Preview"))