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

时间:2019-01-25 23:16:23

标签: android firebase firebase-test-lab

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

我尝试寻找一种连接到Firebase测试实验室设备的Device File Explorer的方法。但是似乎没有一种远程访问它的方法。

Firebase Test Lab cleans up the device进行测试以来,我认为我能实现的唯一方法是在测试中添加代码,以便在某处 push

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

  

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

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

我可以采用的另一种方法是Take Screenshots from Firebase Test Lab Instrumentation Tests,这将使屏幕截图进入存储桶。但是我看到两个潜在的问题。

第一个问题是屏幕截图库的屏幕截图可能与从UiAutomation.takeScreenshot()截取的屏幕截图不同。换句话说,基线屏幕截图是使用屏幕截图库获取的,但是在随后的运行中,我将使用UiAutomation.takeScreenshot()进行屏幕截图并进行比较。由于库不同,因此它们的屏幕快照可能不同。一种可能的解决方案是将两个屏幕截图都与屏幕截图库一起使用。但是随后,我需要弄清楚如何将屏幕截图读回到内存中,以便执行比较操作。今天,我以Bitmaps的形式阅读它们。

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

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

enter image description here

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

2 个答案:

答案 0 :(得分:2)

好的,我希望我能捕捉到您在下面的所有问题:

默认情况下,/ sdcard / Screenshots中的所有文件都将从设备复制到您有权访问的GCS存储桶。您可以在测试期间将自己的文件写入设备上的同一文件夹。测试实验室会捡起来并将它们复制到存储桶中。

如果要下载其他文件夹并在本地下载它们,我建议使用flank,它具有一个称为“目录直接拉出”的选项来指定多个目录。它已经提供了您尝试手动实现的许多功能。

如果您不想使用侧面,gcloud也提供此选项,但会将文件放入GCS存储桶中。无法下载到本地计算机。

Cloud Storage UI似乎相当有限。它允许您下载单个文件,但不能以zip格式下载文件夹。使用gsutil递归下载文件:

gsutil -m cp -r gs://path/to/bucket/folder path/to/local/folder

默认情况下,测试实验室会为您提供GCS存储桶位置,它将文件复制到其中,但是您可以使用自己的存储桶和位置,例如使用gcloud客户端:

gcloud firebase test android run --results-bucket=gs://my-bucket --results-dir=path/to/folder

答案 1 :(得分:1)

为您提供更多信息。您无需使用Flank即可使用--directories-to-pull。该标记可在测试实验室的gcloud firebase test android run命令中使用-有关更多信息,请参见https://cloud.google.com/sdk/gcloud/reference/firebase/test/android/run

此外,您当然可以从Cloud Storage用户界面下载文件-只需单击文件名,它就会询问您要将文件保存到本地驱动器的位置(或取决于文件的类型,您可能需要右键单击并选择“将链接另存为...”。)