在AWS设备场,Saucelabs,Firebase测试实验室等中运行Flutter集成测试

时间:2018-11-14 19:38:02

标签: flutter flutter-test

我如何在AWS Device Farm,Saucelabs,Firebase Test Lab等基础架构中非本地运行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 Test Lab等内部进行远程集成测试?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

尽管我们并未正式支持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服务器的现有代码:

{code}

  - >-
    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

{code}

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

在AWS Device Farm上进行好运测试!我已经确认这些步骤确实可以在我们的测试平台上正确设置Flutter。

答案 1 :(得分:1)

注意:这解决了导致您提出问题的假设。不是您问题的直接答案。

可以仅使用仿真器(无实际设备)在云上运行Flutter集成测试。下面的文章介绍了如何进行设置。本文包括一个有关Travis-CI的工作示例。

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

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

如果您要构建具有广泛分布(许多用户)等的复杂应用,则可能需要在实际设备上运行集成测试。