Я пытаюсь создать репозиторий с тестами E2E для моего веб-приложения, используя Protractor и Cucumber.Я начал с этого репозитория: https://github.com/spektrakel-blog/angular-protractor-cucumber
Когда я заставляю Protractor рассматривать приложение как обычную веб-страницу, тесты запускаются нормально.Тестовый бегун взаимодействует с приложением и ожидает некоторого результата.Дело в том, что я хотел бы, чтобы Protractor обнаружил Angular, чтобы дождаться стабильности зон перед проверкой утверждений «Тогда».
Вот мой protractor.conf.js:
exports.config = {
allScriptsTimeout: 30000,
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--no-sandbox']
}
},
directConnect: true,
baseUrl: 'http://<ci-server-address>/',
specs: [
'./e2e/features/*.feature'
],
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: ['./e2e/steps/**/*.ts'],
strict: true,
format: [
'json:reports/summary.json'
],
dryRun: false,
compiler: []
},
onPrepare() {
browser.ignoreSynchronization = true;
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
}
};
Вкратце - тесты выполняются со следующей конфигурацией, но когда я удаляю browser.ignoreSynchronization = true;
, я получаю следующую ошибку: Timed out waiting for asynchronous Angular tasks to finish after 30 seconds. This may be because the current page is not an Angular application.
.
Вещи, которые я пробовал до сих пор (без улучшений):
- добавление
ng-app
к тегу <body>
- проверка
window.getAllAngularRootElements()
- возвращает app-root
правильно - проверка
window.getAllAngularTestabilities()
- возвращает Testability
object - запуск тестов в Chrome (с изолированной программной средой или без нее)
- запуск тестов в Firefox
- с попытками сервера CI с развернутым приложением и локального env с
ng serve
Я использую последние версии Protractor, Cucumber, Chai и TypeScript.Любая помощь приветствуется.Заранее большое спасибо!