Я создал несколько тестов на безопасность 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
});
});
Если я запустил его таким образом, я получаю "тест не определен" ошибка.Что-то не так в том, как я упаковываю "тест"?