[移动模拟器/模拟器Detox屏幕快照工件在不同主机上运行时有所不同

问题描述 投票:0回答:1

我正在本地使用Detox截取屏幕截图,并将其提交到我的源仓库中。在持续集成(Circle / macOS执行程序)中,我再次运行测试并检测任何文件差异。基本上是视觉回归测试的一种形式。出乎意料的是,在CI上运行时,PNG文件会有所不同。 iOS和Android均会发生这种情况。检查在CI上运行的结果PNG文件,RGB值随机相差一。例如RGB(23,42,23)与RGB(23,42,24)。区别可能在于任何颜色通道。抽查结果,通常只有一个通道(但可能不止一个)。

一些注意事项:

  • 对于Android,看起来Detox使用了adb screencap命令,看起来它可以发出原始或PNG输出(Detox使用后者)。
  • 测试中使用相同的模拟器(Android)和模拟器(iOS)类型

所以我的问题是:

  • 给定相同的输入,PNG输出是否确定?
  • adb screencap(以及Detox使用的iOS上的同等功能吗?
android ios circleci libpng detox
1个回答
0
投票

这是预期的行为,也将在iOS上发生。

例如,参见类似问题的本期:https://github.com/uber/ios-snapshot-test-case/issues/109

OS,CPU和GPU硬件上的差异都会导致渲染上的细微差异,您可以通过允许比较容忍度来尝试抵消,但这绝不是灵丹妙药,而且并非总是可能。

我认为屏幕截图比较不是一个好主意,它会给您的测试带来很多脆弱性。

© www.soinside.com 2019 - 2024. All rights reserved.