标签: firebase-test-lab

无法在要在Firebase测试实验室上运行的Espresso脚本中找到检测不同设备的相机按钮的解决方案

我必须使用Espresso创建脚本来在Firebase测试实验室中测试我的应用程序。我的应用程序使用相机捕获图像,并且我已打开默认的相机应用程序。

为了在我的设备上进行测试,我给了我正在使用的测试设备的软件包名称。问题在于,不同Android设备的相机应用程序包名称不同,我们不知道每个。硬编码程序包名称也不是一件好事。

我已经搜索出了,但是找不到找到解决方案的方法。

在此先感谢。

testing android android-camera-intent android-espresso firebase-test-lab

5
推荐指数
1
解决办法
123
查看次数

React Native 0.60.4 / 找不到要加载的 DSO:Firebase 测试实验室上的 libhermes.so

仅在 Firebase 测试实验室 (Robo) 上测试我的本机应用程序时,我才在启动时遇到此错误

java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
Run Code Online (Sandbox Code Playgroud)

在具有不同 API 的多个设备上进行了测试,它仅适用于 API 21 和 22。奇怪的是,该应用程序通过了 Play 商店预发布报告中的所有测试。

其实最让人惊讶的是我用的不是hermes而是JSC。该错误仅在我上传 aab (gradlew bundleRelease) 时出现。当我上传通用 apk (gradlew assembleRelease) 时,一切顺利。

这是我的 package.json

{
  "name": "",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-community/netinfo": "^4.1.4",
    "@redux-offline/redux-offline": "^2.5.2-native.0",
    "buffer": "^5.4.2",
    "hermes-engine": "^0.2.1",
    "jsc-android": "^241213.1.0",
    "prop-types": "^15.7.2",
    "react": "16.8.6",
    "react-native": "0.60.4",
    "react-native-animatable": "^1.3.2",
    "react-native-bootsplash": "^0.1.1",
    "react-native-device-info": "^3.0.1",
    "react-native-elements": "^1.1.0",
    "react-native-extended-stylesheet": "^0.12.0",
    "react-native-firebase": "^5.5.6", …
Run Code Online (Sandbox Code Playgroud)

android react-native firebase-test-lab react-native-hermes

5
推荐指数
0
解决办法
3374
查看次数

Orchestrator 权限被拒绝的 Firebase 测试实验室覆盖范围

我们目前正在尝试使用 Google 的 Firebase 测试实验室在设备上测试我们的 android 应用程序。为了测试,我创建了一个小应用程序,除了测试之外什么都不做,到目前为止它运行良好,除了推荐的方法(直接取自文档页面)来实现代码覆盖率,似乎没有与协调器正常工作。

使用以下 gcloud 命令:

gcloud firebase test android run --results-bucket=<hidden> --use-orchestrator --type instrumentation --device model=Pixel2,version=29 --device model=Pixel2,version=28 --app app/build/outputs/apk/debug/app-debug.apk  --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk --environment-variables clearPackageData=true,coverage=true,coverageFilePath=/sdcard/  --directories-to-pull=/sdcard/
Run Code Online (Sandbox Code Playgroud)

测试成功运行,但对于每个单独的测试执行,覆盖执行数据的创建失败。logcat 条目如下所示:

04-08 09:50:37.874: E/CoverageListener(8114): Failed to generate Emma/JaCoCo coverage. 
04-08 09:50:37.874: E/CoverageListener(8114): java.lang.reflect.InvocationTargetException
04-08 09:50:37.874: E/CoverageListener(8114):   at java.lang.reflect.Method.invoke(Native Method)
04-08 09:50:37.874: E/CoverageListener(8114):   at androidx.test.internal.runner.listener.CoverageListener.generateCoverageReport(CoverageListener.java:101)
04-08 09:50:37.874: E/CoverageListener(8114):   at androidx.test.internal.runner.listener.CoverageListener.instrumentationRunFinished(CoverageListener.java:70)
04-08 09:50:37.874: E/CoverageListener(8114):   at androidx.test.internal.runner.TestExecutor.reportRunEnded(TestExecutor.java:92)
04-08 09:50:37.874: E/CoverageListener(8114):   at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:65)
04-08 09:50:37.874: E/CoverageListener(8114):   at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:392)
04-08 09:50:37.874: E/CoverageListener(8114): …
Run Code Online (Sandbox Code Playgroud)

android code-coverage firebase firebase-test-lab

5
推荐指数
1
解决办法
493
查看次数

动态功能模块的合并测试 apk

有没有办法为仪器测试创建通用 APK?我想在 Firebase 测试实验室上运行整个测试套件,但为每个动态功能模块的测试 APK 上传一个 APK 似乎很乏味。

对于该应用程序,您可以执行以下操作,packageVariantUniversalApk但我似乎找不到用于测试 APK 的任何内容。

任何帮助将不胜感激。

android firebase-test-lab instrumented-test dynamic-feature dynamic-feature-module

5
推荐指数
1
解决办法
128
查看次数

如何从CLI测试后获取gcloud Firebase测试实验室Android Espresso结果?

我们将Travis CI与Fastlane结合使用,进行自动构建和夜间UI Espresso测试.对于仪器测试,我们尝试使用gcloud命令行工具使用Firebase测试实验室.

我试图让测试结果易于使用格式,以便我可以在内部向Slack报告,例如通过或失败的测试数量以及哪些测试失败.

./google-cloud-sdk/bin/gcloud beta firebase test android run \
--type instrumentation \
--app ourapp/app/build/outputs/apk/mock/debug/app-mock-debug-local.apk \
--test ourapp/app/build/outputs/apk/androidTest/mock/debug/ourapp-mock-debug-androidTest.apk \
--device-ids hammerhead \
--os-version-ids 22 \
--locales en \
--orientations portrait \
--project ourappgoogleprojectid \
--timeout 15m
Run Code Online (Sandbox Code Playgroud)

这一切都可以很好地执行测试并打印两个指向Google云存储桶中原始结果的链接,其中包含一些随机链接以及一些这样的日志:

Raw results will be stored in your GCS bucket at [https://console.developers.google.com/storage/browser/test-lab-vx5ak1y4tt3sw-yrzyhxjh4r1r6/]

13:25:59 Test is Pending
13:26:06 Starting attempt 1
13:26:06 Test is Running
13:26:46 Logging into the device
13:26:53 Installing APK: com.ourcompany.ourapp.debug
13:27:13 Installing APK: com.ourcompany.ourapp.test
13:27:33 Running instrumentation test. Package: com.ourcompany.ourapp.test …
Run Code Online (Sandbox Code Playgroud)

android travis-ci firebase gcloud firebase-test-lab

4
推荐指数
1
解决办法
1018
查看次数

gcloud Firebase Android测试:无法访问测试环境目录:ResponseError 403:未获得项目授权

我做了什么:

  • 我通过以下指南在jenkins Docker容器上设置了gcloud:https://firebase.google.com/docs/test-lab/continuous

我要执行的是:

gcloud firebase test android run --app ./app/build/outputs/apk/app-debug.apk
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

ERROR: (gcloud.firebase.test.android.run) Unable to access the test environment catalog: ResponseError 403: Not authorized for project <project-id>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试使用所有服务帐户规则在IAM下添加服务帐户,但这无济于事。

是否可以专门为服务帐户启用这些API?我只对整个项目和gmail帐户这样做:启用必需的API。使用服务帐户登录后:“在Google Developers Console API库页面中,启用Google Cloud Testing API和Cloud Tool Results API。要启用这些API,请在控制台顶部的搜索框中输入以下API名称,然后在概述页面上针对该API单击启用API。”

到目前为止,我的步骤非常详细:

docker exec -it container bash

export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
gcloud init

# …
Run Code Online (Sandbox Code Playgroud)

android jenkins firebase gcloud firebase-test-lab

4
推荐指数
1
解决办法
1182
查看次数

如何编写模拟GPS位置的Espresso测试,并在Google Testlab中使用它们?

我用Espresso Recorder录制了浓缩咖啡测试。我想测试我的应用中的一些位置更改。

目前,我正在使用以下代码来模拟位置:

LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy( Criteria.ACCURACY_FINE );

String mocLocationProvider = LocationManager.GPS_PROVIDER;//lm.getBestProvider( criteria, true );

lm.addTestProvider(mocLocationProvider, false, false,
        false, false, true, true, true, 0, 5);
lm.setTestProviderEnabled(mocLocationProvider, true);

Location loc = new Location(mocLocationProvider);
Location mockLocation = new Location(mocLocationProvider); // a string
mockLocation.setLatitude(-26.902038);  // double
mockLocation.setLongitude(-48.671337);
mockLocation.setAltitude(loc.getAltitude());
mockLocation.setTime(System.currentTimeMillis());
mockLocation.setAccuracy(1);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
}
lm.setTestProviderLocation( mocLocationProvider, mockLocation);
Run Code Online (Sandbox Code Playgroud)

我还向调试清单文件添加了权限:

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我仍然收到安全异常:

java.lang.SecurityException: mypackage.test from uid not allowed to perform MOCK_LOCATION
Run Code Online (Sandbox Code Playgroud)

我想使用Google Firebase测试实验室中的模拟位置来运行记录的测试用例。我怎么解决这个问题?

android android-location android-testing android-espresso firebase-test-lab

4
推荐指数
2
解决办法
1139
查看次数

IOS 上的 Firebase TestLab - .xctestrun 文件未指定任何测试目标

我正在尝试使用本指南在 iOS 上使用 firebase TestLab:

https://firebase.google.com/docs/test-lab/ios/firebase-console#build_xctests_for_your_app

但是在我上传包含 xctestrun 文件的 zip 文件后,我收到以下错误:

Upload invalid: the .xctestrun file didn't specify any test targets.
Run Code Online (Sandbox Code Playgroud)

我的应用程序中有两个目标,一个测试目标和一个 UI 测试目标,在这两个测试目标上,我将要测试的目标设置为主机应用程序。

有任何想法吗?

unit-testing ios firebase firebase-test-lab

4
推荐指数
1
解决办法
1211
查看次数

如何从 Firebase 测试实验室设备下载文件

我正在尝试从 Google Firebase 测试实验室设备下载文件。这些文件是通过运行仪器测试生成的。文件是截图。我需要下载屏幕截图,因为后续运行的测试会将屏幕与这些屏幕截图进行比较。因此,屏幕截图是视觉变化检测的基线。

我尝试寻找一种方法来连接到 Firebase 测试实验室设备的设备文件资源管理器。但似乎没有办法远程访问它。

由于Firebase 测试实验室会在测试后清理设备,因此我认为我可以实现我想要做的唯一方法是向测试添加代码以文件送到某个地方。

我想将文件推送到的一个地方是存储测试结果的 Google Cloud 存储桶。从下面的文档来看,这似乎是存储桶的预期用途:

测试实验室完成对您的应用的测试后,您可以在 Firebase 控制台或项目中的 Google Cloud 存储分区中查看测试结果。您还可以在上面显示的 shell 命令中添加 gsutil 命令,以将测试结果数据复制到本地计算机。要了解更多信息,请参阅分析 Firebase 测试实验室结果。( Firebase 文档)

对于这种方法,我的检测测试将如何将文件推送到存储桶?它如何知道使用哪个存储桶?执行文件传输的 API 是什么?

我可以采取的另一种方法是从 Firebase 测试实验室仪器测试 中截取屏幕截图,这会将屏幕截图放入存储桶中。但我看到了两个潜在的问题。

第一个问题是截屏库的截屏可能与从UiAutomation.takeScreenshot()截取的截屏不同。换句话说,基线屏幕截图是使用屏幕截图库拍摄的,但在后续运行中,我将使用 UiAutomation.takeScreenshot() 拍摄屏幕截图并进行比较。由于库不同,它们的屏幕截图可能会有所不同。一个可能的解决方案是使用屏幕截图库拍摄两个屏幕截图。但随后我需要弄清楚如何将屏幕截图读回内存,以便我可以执行比较操作。今天我将它们作为Bitmaps读入。

对于这种方法,我的检测测试将如何将屏幕截图库的屏幕截图加载为Bitmaps

第二个问题是弄清楚如何将屏幕截图从存储桶下载到我的本地计算机。存储桶的用户界面没有下载按钮。它只有一个上传按钮:

在此处输入图片说明

对于这种方法,我如何将文件从存储桶下载到我的本地计算机,以便我可以将它们添加到我的检测测试可以读取的资源目录中?

android firebase firebase-test-lab

4
推荐指数
1
解决办法
1408
查看次数

如何为 firebase testlab 添加 testInstrumentation 环境变量?

如果我要在本地运行浓缩咖啡测试并传递环境变量,我可以通过添加来做到这一点

defaultConfig {
 testInstrumentationRunnerArgument 'USERNAME' 'David'
}
Run Code Online (Sandbox Code Playgroud)

build.gradle 文件中

然后我可以通过调用这个变量

InstrumentationRegistry.getArguments().getString("USERNAME")
Run Code Online (Sandbox Code Playgroud)

但是当我在 firebase testlab 上运行此参数时,instrumentationrunner 参数不起作用

android android-testing firebase android-espresso firebase-test-lab

3
推荐指数
1
解决办法
1580
查看次数