首页 > 解决方案 > 在 Azure DevOps 上运行的 Detox(反应原生)问题

问题描述

我有一些使用 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-nativeazure-pipelinesdetox

解决方案


不确定您描述的这个结果是否是这样的:

在此处输入图像描述

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

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

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

您最好配置自己的Mac 代理,以便完全控制机器环境。


推荐阅读