在 Azure DevOps 上运行的 Detox(反应原生)问题

Posted

技术标签:

【中文标题】在 Azure DevOps 上运行的 Detox(反应原生)问题【英文标题】:Issue with Detox (react native) running on Azure DevOps 【发布时间】:2020-05-19 13:28:38 【问题描述】:

我使用 Detox for React Native 进行了一些集成测试,它们在我的本地机器上使用 Release 配置运行良好。

但是,当我尝试在 Azure DevOps 管道上设置相同的配置时,测试似乎没有通过。

看起来 Metro Bundler 试图在新的终端窗口上运行,但由于它是 Azure Pipeline VM,它会卡住吗?然后,测试不通过。既然是发布版,或许有办法屏蔽这个事件?发布版本不需要运行捆绑器。

我的排毒命令:

detox build --configuration ios.sim.release

我的排毒配置:

 "ios.sim.release": 
        "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/raio.app",
        "build": "RN_SRC_EXT=e2e.js xcodebuild -workspace ios/raio.xcworkspace -scheme raio -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
        "type": "ios.simulator",
        "device": 
          "type": "iPhone 11 Pro"
        
      

附加问题:有谁知道在终端中运行此 xcodebuild 行如何使 Metro 捆绑器启动?是否有任何自定义构建阶段添加到 xcode 以触发它的 react native?

【问题讨论】:

我可以知道周末之后的情况如何吗? 你好,梅林,我一直在忙其他事情。这周我会努力做到的。但我认为你的解释真的很有意义,可能一个自我 Mac 代理会解决这个问题。我将尝试按照步骤操作,并在完成后通知您!感谢您迄今为止的支持! :) 没关系。只是确认它仍然是私人代理的问题,所以我可能需要让我们的团队知道。期待:-) 嘿,@MerlinLiang-MSFT,我使用作为 LaunchAgent 运行的自我代理对其进行了测试,它运行良好! :) 谢谢 【参考方案1】:

不知道你描述的这个结果是不是这样的:

这是您使用通过管道运行的托管 MacOS 代理时的限制。

这个守护进程(Metro bundler)在单独的终端窗口中启动需要interactive模式,但Hosted MacOS agents作为服务运行。所以不是interactive 模式,这可能是它失败的原因之一。

另外,到目前为止,我们还没有扩展Hosted MacOS agents 上的功能以支持通过构建管道在单独的终端中启动此守护进程并使其作为后台进程运行。

您最好配置您的self Mac-agent,以便您可以完全控制机器环境。

【讨论】:

嗨梅林梁 - 对此有任何更改/更新吗?我们还在托管的 macOS 代理上通过 Azure DevOps 上的 Detox 在 React Native 应用程序上运行 UI 测试,并且遇到了类似的问题。我怀疑这是因为托管的 mac 代理只能作为服务运行而不能交互? 我正在尝试同样的事情,但它也失败了。很想听听解决方案。

以上是关于在 Azure DevOps 上运行的 Detox(反应原生)问题的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 构建管道自托管代理“设备上没有剩余空间”

在 Azure Devops 上运行构建时找不到资产文件 project.assets.json

在 Azure Devops 上运行 SQ 不会扫描所有文件/子文件夹/项目,尤其是 c# 文件

用于运行进程的 Azure DevOps 管道

使用调度程序和变量组运行 Azure DevOps CI 管道

在 azure devops 门户上查看代码覆盖率报告