TestCafe 'динамические' тесты - PullRequest
0 голосов
/ 07 сентября 2018

Я создал несколько тестов на безопасность 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
    });
});

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

1 Ответ

0 голосов
/ 15 ноября 2018

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

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

...