Интересно, есть ли возможность провести управляемые данными тесты с транспортиром + жасмин, чтобы выполнить его параллельно.
У меня есть следующее:
storeList.json - массив с входными параметрами для проверки отдельного хранилища. У нас около 40 магазинов - рекорды.
[
{
"storeId": "Store_ID_1",
"storeController": "Store_Controller_1"
},
{
"storeId": "Store_ID_2",
"storeController": "Store_Controller_2"
}
]
ordering.js - код (транспортир), который берет каждый элемент из json выше и выполняет его как отдельный тест.
describe('Ordering', function () {
all(require('../../assets/data/storeList'), (storeData) => {
it(`Add all items with all modifiers to cart and checkout on ${storeData.storeId}`, async function () {
let user = await userGenerator.Registered(storeData);
await shoppingCartActions.fillCart(storeData,user);
await homePageActions.openCart();
await shoppingCartActions.validateCartMath();
await shoppingCartActions.proceedToCheckout();
await recommendedActions.continueToDeliveryOptions();
await deliveryAndTipsActions.pickupAnd15PercentTip();
await deliveryAndTipsActions.validateCartMath();
await deliveryAndTipsActions.continueToAddressConfirmation();
await pickupAddressConfirmationActions.continueToPaymentMethod();
await paymentActions.fillCardData(storeData);
await paymentActions.pay();
});
});});
all.js - фрагмент, чтобы сделать ordering.js управляемым данными
module.exports = (data, test) => {
const rows = Array.isArray(data) ? data : [data];
rows.forEach((row, index) => {
test(row, index + 1)
})};
config.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
baseUrl : 'localhost',
restartBrowserBetweenTests: true,
maxSessions: 3,
multiCapabilities: [{
'browserName': 'chrome'
}, {
'browserName': 'chrome'
}, {
'browserName': 'chrome'
}],
specs: ['./testsuite/ordering/*.js'],
allScriptsTimeout: 20000,
framework: 'jasmine2',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 600000,
isVerbose: true,
},
onPrepare: () => {
global.all = require('./all');
}};
Используя эту настройку, я получаю 3 экземпляра chrome, каждый из которых выполняет тест ordering.js со всеми доступными входными данными из storeList. Итак, я выполнил 6 тестов, но на самом деле я хочу, чтобы 2 теста выполнялись параллельно.
Еще один вариант, который я попробовал, - это иметь несколько json для ввода данных и копии упорядочивания js, но это плохая практика.
Может ли кто-нибудь указать мне правильное направление, если параллельно проводить тесты, основанные на данных транспортира.