TestCafe 'динамические' тестовые случаи

Я создал несколько тестов работоспособности e2e для моего текущего проекта с помощью TestCafe. Эти тесты являются стандартными тестами TestCafe:

fixture(`Basic checkout flow`)

test('Main Flow', async (t) => {

});

Я хотел бы выполнить этот тест для нескольких локалей сайта и для нескольких каналов. т.е. мне нужно, чтобы этот тест запускался для nl_nl, nl_be, en_gb, .., а также для таких каналов, как b2c, b2b, ...

Самый простой способ - создать цикл в самом тесте, чтобы перебирать языковые стандарты и каналы, но я хочу запускать эти тесты одновременно.

Я попытался создать функцию для динамической генерации этих тестов, но TestCafe, похоже, не может обнаружить тесты.

dynamicTest('Main Flow', async (t) => {

});

function dynamicTest(testName, testFn) => {
  const channels = ['b2c']

  channels.forEach((channel) => {
    test(`[Channel] ${channel}] ${testName}`, testFn);
  });
};

Есть ли лучший способ сделать это? Единственное решение, которое я вижу, - это запускать тестовый сценарий несколько раз из Jenkins для обеспечения параллелизма.

более подробный код:

import HomePage from '../../page/HomePage/HomePage';
import EnvUtil from '../../util/EnvUtil';

const wrapper = (config, testFn) => {
  config.locales.forEach(async locale =>
    config.channels.forEach(async channel => {
      const tstConfig = {
        locale,
        channel
      };

      tstConfig.env = EnvUtil.parse(tstConfig, config.args.env);
      testConfig.foo = await EnvUtil.get() // If I remove this line it works!

      testFn(config, locale, channel)
    })
  );
};

fixture(`[Feature] Feature 1`)
  .beforeEach(async t => {
    t.ctx.pages = {
      home: new HomePage(),
      ... more pages here
    };
  });

wrapper(global.config, (testConfig, locale, channel) => {
  test
    .before(async (t) => {
      t.ctx.config = testConfig;
    })
    .page(`foo.bar.com`)
    (`[Feature] [Locale: ${locale.key}] [Channel: ${channel.key}] Feature 1`, async (t) => {
      await t.ctx.pages.home.header.search(t, '3301');

      .. more test code here
    });
});

Если я запустил его таким образом, я получу ошибку «тест не определен». Что-то не так в способе заворачивания "теста"?


person Cornel Janssen    schedule 07.09.2018    source источник
comment
Не могли бы вы сообщить мне, какую версию TestCafe вы используете?   -  person Marion    schedule 07.09.2018
comment
У меня последняя версия (0.22.0)   -  person Cornel Janssen    schedule 08.09.2018
comment
Этот пример у меня правильно работает с TetstCafe v0.22: github.com/MarinaRukavitsyna/TestCafe_Dynamic_Test. Не могли бы вы это проверить?   -  person Marion    schedule 10.09.2018
comment
Я проверю, спасибо!   -  person Cornel Janssen    schedule 10.09.2018
comment
Я пробовал ваше решение, но при работе получаю сообщение об ошибке test is undefined. Я добавил свой образец кода в сообщение. Я что, оборачиваю неправильно?   -  person Cornel Janssen    schedule 10.09.2018
comment
Я понял, что причина в await fn () в файле оболочки. Я добавил это в пример. Не уверен, почему   -  person Cornel Janssen    schedule 10.09.2018


Ответы (1)


Используя TestCafe версии 0.23.1, вы можете запускать тесты, импортированные из внешних библиотек или созданные динамически, даже если предоставленный вами тестовый файл не содержит никаких тестов.

Вы можете узнать больше здесь: Запуск динамически загружаемых тестов

person Alex Skorkin    schedule 15.11.2018