7

如何在 AWS Device Farm、Saucelabs、Firebase 测试实验室等基础设施中非本地运行颤振集成测试(flutter_driver)?

在我的本地机器上运行 flutter_driver 测试可以顺利且轻松地运行,但是基于云的移动测试服务没有安装使用 Flutter CLI 命令所需的依赖项。

Flutter 存储库中有几个地方表明这是可能的,但是我很难确切地找到使这成为可能需要发生的事情(我在 Android 和 iOS 集成测试方面的经验有限)。

我发现了一些参考资料
在flutter_gallery中讨论集成测试的评论:https ://github.com/flutter/flutter/issues/18879#issuecomment-400816050

添加 Firebase 测试实验室集成测试的 github 问题:https ://github.com/flutter/flutter/issues/11718

我需要向我的 Flutter 应用程序添加什么以允许在 AWS Device Farm、Saucelabs、Firebase 测试实验室等内部进行远程集成测试?

谢谢你的帮助。

4

2 回答 2

5

尽管我们并未正式支持 AWS Device Farm 上的 Flutter 框架和 Flutter 测试,但我们确实有办法让您使用我们的“自定义环境模式”并通过预先选择不同的受支持框架来运行这些测试。我的建议是执行以下操作:

  • 我有一个非常小的 Appium Python 虚拟测试,这是一个位于https://s3-us-west-2.amazonaws.com/aws-devicefarm-support/test_bundle_slim.zip的受支持的测试框架。从那里下载它,然后使用命令行工具 zip,将本地测试添加到这个 zip 文件中,使用诸如“zip -r ~/Downloads/test_bundle_slim.zip flutter-tests/”之类的命令
  • 转到 AWS Device Farm,设置自动化测试运行,上传您的应用程序,然后进入您选择测试类型的屏幕。选择 Appium Python,上传您的 zip 文件,AWS Device Farm 将接受测试,因为我们在 zip 文件中留下了原始的虚拟 Appium Python 文件。
  • 在下面选择“自定义您的测试环境”,下面会出现一个带有 YAML 测试规范文件的新窗口。将以下几行放在测试规范的预测试部分中,以代替用于启动 Appium 服务器的现有代码:

{代码}

  - >-
    if [ $DEVICEFARM_DEVICE_PLATFORM_NAME = "Android" ];
    then
        # Run EC2 setup code here
        curl https://storage.googleapis.com/flutter_infra/releases/beta/linux/flutter_linux_v0.11.3-beta.tar.xz -o flutter_linux_v0.11.3-beta.tar.xz
        tar xf flutter_linux_v0.11.3-beta.tar.xz
    fi

    if [ $DEVICEFARM_DEVICE_PLATFORM_NAME = "iOS" ];
    then
        # Run Mac setup code here
        curl https://storage.googleapis.com/flutter_infra/releases/beta/macos/flutter_macos_v0.11.3-beta.zip -o flutter_macos_v0.11.3-beta.zip
        unzip -qq flutter_macos_v0.11.3-beta.zip
    fi

  - mv flutter ~/flutter
  - echo "export PATH=$PATH:$HOME/flutter/bin">> ~/.bash_profile
  - export PATH=$PATH:$HOME/flutter/bin
  - flutter devices

{代码}

  • 同样,转到测试规范文件的测试部分并删除 python 测试命令“bin/py.test”并将其替换为您的 Flutter 测试命令,例如“flutter drive --target=./flutter-tests/main” 。镖
  • 保存并关闭此测试规范文件,然后通过选择您的设备并设置它们的状态来完成设置自动化运行。

祝您在 AWS Device Farm 上测试顺利!我已经确认这些步骤确实可以在我们的测试平台上正确设置 Flutter。

于 2018-11-15T21:40:19.773 回答
2

注意:这解决了导致您的问题的假设。不能直接回答你的问题。

可以仅使用模拟器(无需实际设备)在云上运行 Flutter 集成测试。以下文章介绍了如何设置它。这篇文章包括一个关于 Travis-CI 的工作示例。

在 Travis-CI 上使用 IOS 和 Android 模拟器进行 Flutter 单元、小部件和集成测试

可以在此处找到 GitHub 上的源代码,以及最新构建的链接,包括在 iOS 和 Android 上运行的集成测试结果。随意克隆并用作您自己项目的起点。

如果您正在构建具有广泛分布(大量用户)的复杂应用程序等,那么在实际设备上运行集成测试可能是您想要做的事情......

于 2018-12-10T04:54:02.477 回答