Этот выпуск является продолжением https://github.com/angular/protractor/issues/4311 . Здесь я обсуждаю изменения синтаксиса о том, как использовать транспортир для выполнения скриптов Cucumberjs.
По просьбе @wswebcreation https://github.com/wswebcreation я закрыл эту другую проблему и открыл новую здесь.
Последний рекорд успешной казни у меня был 12 мая 2017 года, 14:03. Точная дата в вашем документе.
Ваш пример с тегами очень упрощен ... как тогда я должен вызывать 3 тега, два, которые должны быть выполнены, и один, который игнорируется. До 12 мая это работало нормально, но теперь это не так:
protractor ./FM_IntTest_UI_conf.js --disableChecks [email protected] --params.login.passw=mypassword --cucumberOpts.tags ~<strong i="13">@ignore</strong> --cucumberOpts.tags <strong i="14">@smoke</strong>,@sprint
В вашем документе говорится, что теперь это должно быть так, но не работает, возвращает то же сообщение об ошибке, которое я отправил с «тикетом».
protractor ./FM_IntTest_UI_conf.js --disableChecks [email protected] --params.login.passw=mypassword --cucumberOpts.tags '<strong i="18">@smoke</strong> or <strong i="19">@rt</strong>' --cucumberOpts.tags 'not <strong i="20">@ignore</strong>'
Ошибка: ошибка: указано более одного файла конфигурации
в C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ built \ cli.js: 155: 15
в C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 307: 21
в Array.forEach (собственный)
в parseArgs (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 305: 16)
в Object.Argv.self.parse (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 140: 16)
на объекте. (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ built \ cli.js: 158: 21)
в Module._compile (module.js: 571: 32)
в Object.Module._extensions..js (module.js: 580: 10)
в Module.load (module.js: 488: 32)
в tryModuleLoad (module.js: 447: 12)
Я вижу в документе Cucumber, что также изменился синтаксис кодирования для определения шага? Зачем все усложнять сейчас? Потому что с новым синтаксисом я должен сгруппировать шаги по сценариям. Но есть ли некоторые шаги, которые повторяются в нескольких сценариях, таким образом, повторяя код в каждом сценарии? Я получу дублирование в моем коде. Почему?
Вот фрагмент того, что у меня есть СЕЙЧАС в моем файле test.spec.js:
this.Given('I am testing my Widget Application', function (callback) {
edirp.edirejectwidgetlink.click().then(function(){
callback();
}).catch(function(reason) {
console.log('ERROR: Widget button not found');
callback(reason);
});
});
this.When('There are records in the Widget List', function() {
edirp.edigetrow.count().then(function(cnt){
if(cnt>0){
return recordsFound = cnt;
}else{
return recordsFound = 0;
}
});
});
this.Then('Header name of the Widget List is '(.+)'', function(header, callback) {
expect(po.headertext.getText()).to.eventually.equal(header).then(function(){
callback();
}).catch(function(reason) {
console.log('Warning: Incorrect Text.');
callback(reason);
});
});
Вот фрагмент того, что предлагается в качестве «обновления» ... для меня это ПОНИЖЕНИЕ:
var seleniumWebdriver = require('selenium-webdriver');
var {defineSupportCode} = require('cucumber');
defineSupportCode(function({Given, When, Then}) {
Given('I am testing my Widget Application', function (callback) {
edirp.edirejectwidgetlink.click().then(function(){
callback();
}).catch(function(reason) {
console.log('ERROR: Widget button not found');
callback(reason);
});
When('There are records in the Widget List', function() {
edirp.edigetrow.count().then(function(cnt){
if(cnt>0){
return recordsFound = cnt;
}else{
return recordsFound = 0;
}
});
Then('Header name of the Widget List is '(.+)'', function(header, callback) {
expect(po.headertext.getText()).to.eventually.equal(header).then(function(){
callback();
}).catch(function(reason) {
console.log('Warning: Incorrect Text.');
callback(reason);
});
});
Если в сценарии есть несколько Данных, Когда, Тогда ... должны ли они быть перечислены здесь, например ?:
defineSupportCode (function ({Дано, И, И, Когда, И, И, Тогда, И, И, И}) {
Если это правда ... Итак, теперь, если я хочу снова использовать шаг «Когда есть записи в виджете EDI-Rejects» в другом сценарии моей функции, нужно ли мне снова кодировать всю функцию?
Все, что мне нужно, это ответы с аргументами. Не принимайте это на свой счет.
Если в сценарии есть несколько Данных, Когда, Тогда ... должны ли они быть перечислены здесь, например ?:
defineSupportCode (function ({Дано, И, И, Когда, И, И, Тогда, И, И, И}) {
Нет. Given
, When
и Then
- это функции, которые можно вызывать несколько раз (аналогично this.Given
и т. Д. Из 1.x). And
не является функцией. Вы можете увидеть все функции, переданные defineSupportCode
в Справочнике по README.md
Я вижу в документе Cucumber, что также изменился синтаксис кодирования для определения шага?
См. Https://github.com/cucumber/cucumber-js/issues/679
Зачем все усложнять сейчас? Потому что с новым синтаксисом я должен сгруппировать шаги по сценариям.
Это не правда
Спасибо, проверю!
@charlierudolph Tnx за объяснение!
Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.