Testcafe找不到包装在迭代器中的测试

时间:2019-06-19 17:57:44

标签: typescript automated-tests e2e-testing testcafe data-driven-tests

我的“常见问题”页面中只有很少的扩展元素,因此我想测试所有这些元素。 在foreach部分中编写夹具和/或测试时,终端反映了一个错误 ERROR no test to run.我不明白为什么

我尝试将唯一的测试包装在foreach中,并将所有夹具与该测试包装在一起,结果是相同的。

fixture('check FAQ expand items').page(URL.local.faq)//.meta({ status: 'indev' })
  .beforeEach(async () => {await waitForReact();
  })
  .before(async t => {
  await waitForReact();
  await list();
  }).only;
faqItems.forEach( (element) => {
  test(`check that ${element.getReact(({key})=>key)} is present`, async t => {
    await t.expect(element.find('[expanded={true]]').exists).ok();
  });
});

我希望测试咖啡馆可以将faqItems.length数量的测试运行到“检查常见问题解答扩展项目”工具中

我使用命令testcafe chrome faq.test.ts

运行测试

screen shot of run test result

UPD

let faqItems: Array<Selector> = [faq.item];
async function list() {
  const count =  await faq.item.count;
  console.log(`count = ${count}`)
  for (let i = 0; i < count; i++) {
    await faqItems.push( await faq.item.nth(i));
    console.log(await faqItems[i].getReact(({key})=> key));
  }
}

fixture('check FAQ expand items').page(URL.local.faq)//.meta({ status: 'indev' })
  .beforeEach(async () => {
    await waitForReact();
    await list();
  })
faqItems.forEach((element)=>{
  test(`check that ${element.getReact(({key})=>key)} is present`, async t => {
    await t.expect(element.find('[expanded={true}]').exists).ok();
  });
})

result pic

2 个答案:

答案 0 :(得分:3)

首先,您对代码的前提条件不属于forEach循环的一部分,这可能会给您带来麻烦。我考虑将faqItems.forEach()移到fixture上方

faqItems.forEach( (element) => {
   fixture('check FAQ expand items').page(URL.local.faq)//.meta({ status: 'indev' })
     .beforeEach(async () => {await waitForReact();
     })
     .before(async t => {
        await waitForReact();
        await list();
     }).only;

     test(`check that ${element.getReact(({key})=>key)} is present`, async t => {
        await t.expect(element.find('[expanded={true]]').exists).ok();
     });
   });
})

如果在fixture中有一些不应针对每个FAQ项目运行的测试,则将其移至另一个灯具。

第二,我不确定,您可以在此处使用forEach,因为forEach作为循环和Arrays的函数不能与async/await一起使用。您可以使用for...of循环或标准for循环

答案 1 :(得分:0)

问题是该数组初始化为空。我不知道为什么,但是在测试数组中包含初始化的数据,而不是在“ BeforeAll”中生成。看来这是一个testcafe错误,但也许我还不太懂根本原因。  ps。顺便说一下,夹具在内部/外部循环中的位置都没有关系。