Настройка транспортира с помощью cucumberjs (транспортир-огурец-каркас)
cucumberjs --version 1.2.2
protractor --version 4.0.1
Both installed globally via npm
Я попытался перейти по этим 2 ссылкам, чтобы настроить мой Protractor с более новыми cucumberJs: Protractor-cucumber-framework: https://github.com/mattfritz/protractor-cucumber-framework cucumberJs: https://github.com/cucumber/cucumber-js
К сожалению, когда я запускаю свои тесты, они всегда проходят независимо от того, провалились ли тесты или нет.
И иногда они превышают 5000 миллисекунд, которые я решил, выполнив это:
exports.config = {
// set to "custom" instead of cucumber.
framework: 'custom',
// path relative to the current config file
frameworkPath: require.resolve('protractor-cucumber-framework'),
// relevant cucumber command line options
cucumberOpts: {
require: [
conf.paths.e2e + '/steps/**/*Steps.js',
conf.paths.e2e + '/support/env.js',
],
format: 'pretty'
}
};
Обратите внимание, что я включил мои env.js выше в блок опций cucumber, и вот мой контент env.js:
// features / support / env.js
var configure = function () {
this.setDefaultTimeout(60*1000);
};
module.exports = configure;
Также у меня есть этот world.js, который я не знаю, как использовать в своих тестах:
// features/support/world.js
var zombie = require('zombie');
function World() {
this.browser = new zombie(); // this.browser will be available in step definitions
this.visit = function (url, callback) {
this.browser.visit(url, callback);
};
}
module.exports = function() {
this.World = World;
};
Я заглянул в "zoombie.js", и это похоже на браузер без головы, о котором я не забочусь, потому что команда транспортировщиков не рекомендует нам использовать браузеры без головы, такие как PhantomJS; см.: http://www.protractortest.org/ ("Примечание. Мы не рекомендуем использовать PhantomJS для тестов с Protractor. Существует много сообщений о проблемах, связанных с падением PhantomJS и его поведением, отличным от реального браузеры.")
Я также попытался вернуть обратный вызов внутри потока управления Protractor с помощью: return browser.controlFlow(). Execute(callback); но это, кажется, не работает, вместо этого он выдает эту ошибку:
функция принимает обратный вызов и возвращает обещание
Мой файл определения шага выглядит так:
module.exports = function () {
this.Given(/^I am logged in as "([^"]*)" for "([^"]*)"$/, function (username, password, callback) {
return app.getShell().getLogonPage().logonWithoutAngular(username, password, org).then(null, function (error) {
console.error('Sorry an error occurred: ' + error);
throw error;
});
return browser.controlFlow().execute(callback); //returning the callback within the Protractor controlFlow queue
});
Я думаю, что моя самая большая путаница в том, что я не знаю, нужен ли мне этот world.js для запуска моих тестов в браузере Chrome; Меня не волнует браузер без головы zombie.js, так как они используются на странице gitub cucumberjs: https://github.com/cucumber/cucumber-js
Возникают ли у меня все эти проблемы при настройке моих тестов транспортира с более новыми cucumberJs из-за этого world.js? В основном все мои тесты проходят, все зеленые, даже когда я специально выбрасываю неисправный футляр. Срыв; надеюсь, кто-то может помочь