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

Dan*_*iel 7 flutter flutter-test

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

谢谢你的帮助。

小智 5

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

  • 我有一个非常小的 Appium Python 虚拟测试,这是一个受支持的测试框架,位于https://s3-us-west-2.amazonaws.com/aws-devicefarm-support/test_bundle_slim.zip。从那里下载它,然后使用命令行工具 zip,使用诸如“zip -r ~/Downloads/test_bundle_slim.zip flutter-tests/”之类的命令将本地测试添加到此 zip 文件中
  • 转到 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
Run Code Online (Sandbox Code Playgroud)

{代码}

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

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