【问题标题】:Running Flutter Integration Tests in AWS Device Farm, Saucelabs, Firebase Test Lab etc在 AWS Device Farm、Saucelabs、Firebase 测试实验室等中运行 Flutter 集成测试
【发布时间】:2019-04-17 20:34:15
【问题描述】:

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

Running flutter_driver tests 在我的本地机器上运行顺畅且轻松,但是基于云的移动测试服务没有安装使用 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 测试实验室等中进行远程集成测试?

感谢您的帮助。

【问题讨论】:

标签: flutter flutter-test


【解决方案1】:

尽管我们并未正式支持 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 将接受测试,因为我们将原始虚拟 Appium Python 文件留在了 zip 文件中。
  • 在下面选择“自定义您的测试环境”,下面会出现一个带有 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-测试/main.dart
  • 保存并关闭此测试规范文件,然后通过选择您的设备并设置其状态来完成自动化运行设置。

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

【讨论】:

  • Anurag Goyal,Flutter 集成测试需要 Android SDK 附带的标准 adb。 Device Farm 使用来自 Amazon 的自定义 adb 覆盖标准 adb,该自定义 adb 禁用端口转发,这是颤振测试所需的功能。 AFAIK,让 Flutter 集成测试运行的唯一方法是使用比共享 Device Farm 贵得多的私有 Device Farm。这是正确的吗?
  • 忽略最后一条消息。我能够在共享的 Android 设备农场上运行颤振集成测试
  • 你试过用 iOS 测试吗?到目前为止我没有任何运气...... AWS Device Farm 是否提供支持?
【解决方案2】:

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

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

Flutter unit, widget and integration testing with IOS and Android emulators on Travis-CI

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

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

【讨论】:

  • mmcabe - 您如何将 ios 和 integration_test 插件与 aws 设备场一起使用? (例如,不是 appium,不是 sylph,不是旧的测试驱动框架)
猜你喜欢
  • 2020-01-03
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多