防止 fastlane 扫描隐藏模拟器

Posted

技术标签:

【中文标题】防止 fastlane 扫描隐藏模拟器【英文标题】:Prevent fastlane scan from hiding the simulator 【发布时间】:2017-12-01 09:49:11 【问题描述】:

自从最近更新 fastlane 以来,它会阻止模拟器打开可见窗口。仍然可以听到键盘按钮的敲击声,并且执行了 UI 测试,但模拟器窗口本身并未打开。

这在大多数情况下是可以的,但是现在我需要深入挖掘,看看发生了什么,因为 fastlane 执行的测试与 Xcode 略有不同,导致我们的 CI 服务器发疯。 (Xcode = 所有测试运行顺利。fastlane = 所有 UI 测试都失败,本地和 CI 服务器上。)

那么:有没有办法,一些参数或环境变量,告诉扫描打开那个窗口能够看到发生了什么?

(是的,我可以使用快照来生成特定点的屏幕截图,但如果想知道到底发生了什么,这根本不够。)

希望有人可以提供帮助:)

找到解决方案:

scan 应该使用已经打开的模拟器,但是当模拟器运行时运行scan 时出现错误消息。更新到 2.68.0 对我有用。

【问题讨论】:

如果它在 Xcode 中工作,那么这可能是一些缺失的设置,您是否尝试将 open_report 设置为 true 您可以在此处查看更多信息docs fastlane 该报告仅指出 UI 测试失败以及哪个断言是原因。它没有给我更多信息:/ 另外:如果我告诉 fastlane 也收集模拟器日志,它们完全是空的。所以那里没有线索.. 【参考方案1】:

不幸的是,快照和扫描没有内置选项。作为一种解决方法,您可以手动启动模拟器(右键单击 Dock 中的 Xcode 图标,Open Developer Tool > Simulator)。

如果模拟器在运行时打开,快照将关闭模拟器并打印以下行:

Patching simulators '/Users/<home>/Library/Preferences/com.apple.iphonesimulator.plist' to scale to 100%

之后,重新启动模拟器是安全的。对于扫描,您可以让模拟器保持运行。

当快照或扫描启动您已配置的模拟器并且模拟器应用程序正在运行时,将显示窗口并且您将能够看到正在发生的事情 - 但要小心,因为快照现在同时运行,并且这个将为所有配置的设备打开窗口。

您可以在测试时修改配置以仅在单个设备上运行,或者您可以通过从终端运行快照来运行一次性操作,如下所示:

fastlane run snapshot devices:"iPhone 6" languages:"de-DE" #... all other parameters are similarly supported

【讨论】:

我的问题是关于扫描的。那么是否可以将您建议的解决方法也用于扫描? 哦,对不起,我刚看到“UI 测试”,我的脑海里立刻出现了“快照”。回答您的问题:scan 不会进行任何修补,因此只需在运行扫描之前启动模拟器即可查看屏幕上发生的情况 嗯,很有趣。这仅在我从命令行运行fastlane scan 而不是我的fastlane test 通道时才有效。 (我的测试通道只是使用正确的参数集开始扫描。)当我使用我的test 通道时,我收到以下错误:格式错误的版本号字符串 com.apple.CoreSimulator.SimRuntime.ios-11-1 This自从最近的更新以来就是这种情况,因此我的 SO 问题。只有当我关闭模拟器并然后运行fastlane test...时,此错误消息才会消失 有趣,你能在 GitHub 上提交问题吗?在那种情况下,这似乎是一个错误,因为在我的测试设置中,我能够完全按照您的描述进行操作。但是您现在应该仍然可以运行您的测试通道,然后启动模拟器进行调试 在帖子正文中的某处提及@milch,以便在那里收到通知,然后我会看看。请确保也遵循问题模板中的所有说明

以上是关于防止 fastlane 扫描隐藏模拟器的主要内容,如果未能解决你的问题,请参考以下文章

如何在模拟器中使用 fastlane 运行仪器测试?

如何使用 fastlane 重置特定 Xcode 版本的模拟器?

fastlane 抓屏和快照

Fastlane 扫描显示零单元测试

如何使用 fastlane 扫描设置 COMPILER_INDEX_STORE_ENABLE=NO?

运行 UI 测试时,Fastlane 扫描“无法合成事件”,适用于 Xcode