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