使用 Detox 测试与超时相关的测试,例如 Popups/Tooltips 等

Testing timeout-related tests, such as Popups/Tooltips etc with Detox

我已经使用 detox 一段时间了,但是在升级到 17.5.+ 之后,我开始面临弹出窗口测试的问题。我没有找到有关堆栈溢出和排毒问题的有用信息。

这里的问题如下:我有一个测试来检查是否显示了正确的弹出窗口。看起来像:

it('expect to see "Answer correct" popup', async () => {
  await openQuestionnaire('theory_questionnaire_learn_button');

  await scroll('questionnaire_scroll_view', 150);

  await element(by.id('select_1_button')).tap();

  await element(by.id('questionnaire_answer_button')).tap();

  // @ts-ignore
  await expect(element(by.id('questionnaire_simple_popup'))).toBeVisible();
  // @ts-ignore
  await expect(element(by.id('questionnaire_simple_popup'))).toHaveLabel('correct');

  await delay(500);

  // @ts-ignore
  await expect(element(by.id('questionnaire_simple_popup'))).toNotExist();
});

背景:点击 questionnaire_answer_button 后,会出现弹出窗口。它可见 500 毫秒,然后消失。对于这 500 毫秒,我使用 setTimeout({ () => dismiss() }, 500).

弹出窗口在模拟器上可见,但我的测试失败 Test Failed: No elements found for “MATCHER(identifier: == “questionnaire_simple_popup”)”

正在检查层次结构我在那里找不到这个元素。也许其他人已经遇到过这个问题并且知道解决方案?

如果没有找到标识符,则表示标识符没有正确设置为原生视图的无障碍标识符。与弹出窗口开发人员核实 testID 是否已正确转发到本机视图。

好的,我尝试了几次后发现了什么。它在将超时时间从 500 毫秒增加到 3000 毫秒后开始工作。 2500还是不行,2750没试过。关于匹配器。 by.idby.text 也适用。

所以原因可能是超时持续时间。