向用户显示视图面积的至少75%的排毒

问题描述

我尝试用排毒检查该元素在android模拟器中是否可见。 我滚动页面并看到该元素,但是当我用排毒检查该元素是否可见时,出现此错误

 Test Failed: 'at least 75 percent of the view's area is displayed to the user.' doesn't match the selected view.
    Expected: at least 75 percent of the view's area is displayed to the user.
         Got: "ReactViewGroup{id=1227,visibility=VISIBLE,width=250,height=250,has-focus=false,has-focusable=true,has-window-focus=true,is-clickable=true,is-enabled=true,is-focused=false,is-focusable=true,is-layout-requested=false,is-selected=false,layout-params=android.view.ViewGroup$LayoutParams@a376217,tag=test1,root-is-layout-requested=false,has-input-connection=false,x=0.0,y=95.0,child-count=1}"

我尝试滚动更多内容以将元素放置在屏幕中间,但是没有区别。

await expect(element(by.id('test1')).atIndex('2')).toBeVisible();

我使用react-native,所以它是相同的代码..,它可以完美地与iOS一起使用,但是在android中,我得到了我提到的错误

* detox是e2e测试库,用于使用android-espresso的react-native

解决方法

就我而言,事实证明,我在本地拥有比 CI 更大的设备。因此,当我使用 --take-screenshots failing 制作失败的屏幕截图时,我注意到,经过测试的视图位于绝对视图下方并且被覆盖。 IDK,如果它与上述问题有关,但也许对其他人有帮助。

,

虽然与 OP 的场景不同,但我在 Android 上遇到了这个错误,因为我在每次测试之前调用了 device.reloadReactNative,这导致“至少 75% 的视图区域显示给用户”。错误。

这就是我在我的 jest 设置文件中所做的导致错误的事情:

beforeEach(async () => {
  await device.reloadReactNative();
});

删除修复了我的测试。

(请注意,我仅在 CI(devops 管道)而非本地运行时才收到此错误,我的理论是该错误是由于虚拟机速度较慢而导致的,因为应用程序没有足够快地“稳定”。)