в течение нескольких дней я борюсь с параллельным выполнением тестов с помощью докера селеном.
Следующий сценарий:
- Определение браузеров в multiCapabilities со спецификациями.
- Развертывание контейнеровс selenium-hub, 2 firefox, 2 chrome узлами.
- Выполнение тестов
Проблемы возникают, когда chrome и firefox параллельно выполняют одну и ту же спецификацию.В зависимости от скорости выполнения, скажем, является ли Firefox первым и Chrome вторым.(spec1 работает в обоих браузерах одновременно).
Должная зависимость spec1 успешна в Firefox (как и ожидалось), а в chrome она должна завершиться с исключением (как и ожидалось).Здесь начинается интересная часть:
тест Firefox заканчивается, но chrome зависает (часть, в которой он генерирует исключение), и тест завершается неудачно после заданного времени ожидания jasmine / test, скажем, 3 минуты с " невыполненное обещание".... Так как я ожидал метода и обернул его в try catch, исключение должно перейти к тесту, где я также обернул методы теста впопробуйте catch, и если есть исключение done.fail () должно остановить тест.
Но это никогда не идет туда ... после долгого времени отладки, единственное, что я вижу, это исключение:брошен, и он никогда не идет в тест, где я должен поймать его и провалить тест.
Конфигурация мульти-возможностей
{
browserName: 'chrome',
shardTestFiles: true,
maxInstances: 2,
specs: [
'../spec/**/spec1.js'
]
},
{
browserName: 'firefox',
maxInstances: 2,
shardTestFiles: true,
marionette: true,
specs: [
'../spec/**/spec1.js'
]
},
Специфический для транспортира:
SELENIUM_PROMISE_MANAGER: false,
seleniumAddress: 'ip of the selenium hub'
maxSessions: 4
framework: 'jasmine'
... and other custom not related props as loggers, reporters etc.
Тестовый пример:
describe('test 1', () => {
it('can done something', async (done) => {
try {
await doSomething();
} catch (e) {
done.fail(e);
}
done();
}, 1000 * 60 * 5);
}
если есть исключение из doSomething (), тест должен быть принудительно завершен с ошибкой, но он зависает при параллельном выполнении.
Я что-то пропускаю и / или можете ли вы предложитьпочему это виситs, при выполнении одного и того же теста в разных браузерах?
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.