Можно ли запустить один и тот же прибор testcafe с разными условиями - PullRequest
4 голосов
/ 13 марта 2019

Может ли кто-нибудь помочь найти наиболее подходящий способ запуска одного и того же прибора с различными предварительными условиями, используя testcafe ( fixture beforeEach )?

Учитывая, что у меня есть следующий прибор:

  fixture('[Test] My Page')
  .meta({ env: 'aat', mobile: 'true', author: 'me' })
  .beforeEach(async t => {
    await t.navigateTo(myPage.url)
    await waitForReact(10000)
  })

test('Page should load all data successfully', async t => {
  const { Query: queries } = await t.ctx.graphQLTools.mockManagementClient.getCalls()
  for (const q of Object.keys(queries)) {
    for (const { args, context } of Object.keys(queries[q])) {
      await t.expect(queries[q][args]).typeOf('undefined')
      await t.expect(queries[q][context]).typeOf('undefined')
    }
  }
})

В приведенном выше примере кода мне нужно выполнить этот тест несколько раз:

  1. Я - анонимный пользователь
  2. Я - администратор
  3. Я пользователь по умолчанию

Я попробовал следующий код, но он выглядит громоздким и создаст сложность, когда у меня будет более 1 теста в приборе, который необходимо проверить (взятот https://testcafe -discuss.devexpress.com / t / многократное выполнение одного теста с разными данными / 219 ):

const a = ['anonymous', 'logged In']
for (const user of a) {
  test.meta({ wip: 'true' })(`Page should load all data successfully for ${user} user`, async t => {
    if (R.equals('logged In', user)) {
      await helpers.setCookie({ key: 'access_token', value: '123123123' })
      await helpers.reloadPage()
    }

    const { Query: queries } = await t.ctx.graphQLTools.mockManagementClient.getCalls()

    await t.expect(helpers.isEqlToEmptyQuery(queries.basket)).eql(true)
    await t.expect(helpers.isEqlToEmptyQuery(queries.categories)).eql(true)

    if (R.equals('logged In', user)) {
      await t.expect(helpers.isEqlToEmptyQuery(queries.customer)).eql(true)
    }
  })
}

Есть лиКак я могу запустить весь прибор 2-3 раза с разными крючками до каждого?

1 Ответ

5 голосов
/ 14 марта 2019

Одним из простых решений может быть добавление трех скриптов npm в package.json:

"test": "testcafe chrome <all testcafe options>"
"test-anonymous": "npm test -- --user=anonymous"
"test-admin": "npm test -- --user=admin"
"test-default": "npm test -- --user=default"

Затем прочитайте этот пользовательский параметр командной строки в beforeEach, как я объяснил в Testcafe - Проверить аргумент командной строки вне тестового случая

...