Fastlane/CircleCI 上的 UI 测试失败,因为没有在新的模拟器上设置位置

Nic*_*ing 5 xcode circleci xcode-ui-testing fastlane

目前我们的测试失败了,因为当授予位置权限时,我们永远不会进入下一个屏幕,因为位置更新永远不会发生。

这是因为使用 Fastlane 设置的新模拟器实例不会设置位置。app 目标方案指定了默认位置,UI 测试目标也是如此;两者都没有受到尊重。当从 Xcode 运行测试时,位置确实会得到尊重,而不是当模拟器从命令行激活时,因为模拟器应用程序从未真正打开过,只是存在,由终端拥有但不可见。测试套件上的位置也已设置。

当模拟器以不可见的方式运行时,如何在脚本中设置模拟器的位置?

我发现了这个:https : //github.com/lyft/set-simulator-location

它需要这个脚本:

# download set-simulator-location
brew install lyft/formulae/set-simulator-location

# run simulator
export IOS_SIMULATOR_UDID=`instruments -s devices | grep "iPhone 6 (10.3) \[" | awk -F '[ ]' '{print $4}' | awk -F '[\[]' '{print $2}' | sed 's/.$//'`
echo $IOS_SIMULATOR_UDID
open -a "simulator" --args -CurrentDeviceUDID $IOS_SIMULATOR_UDID

# wait simulator to start fully
sleep 15

# set location
set-simulator-location -q London
Run Code Online (Sandbox Code Playgroud)

但它看起来很笨重,需要硬编码特定的模拟器然后打开它,等待 15 秒,然后在上面设置位置。我觉得一定有更好的方法。