Also habe ich sehr schöne E2e Tests mit Winkelmesser (Jasmine 2) geschrieben, aber jetzt haben sich meine Anforderungen geändert: Ich muss von Jasmine2 zu Gurke wechseln. Ab sofort wird Cucumber nicht mehr direkt von Protractor unterstützt. Ich habe versucht, ein benutzerdefiniertes Framework Setup => nicht erfolgreich. Wie erwähnt, benutze ich gulp-angular-protractor, die mir eine großartige und einfache Arbeitsumgebung bieten (Turn-on/Off Webdriver während Tests, Schluckbefehl usw.) und ich möchte es immer noch behalten.gulp-eckig-Winkelmesser Integration mit Gurke
hier ist meine config:
package.json
...
"devDependencies": {
"angular-mocks": "^1.5.1",
"browser-sync": "^2.10.0",
"cucumber": "^0.10.2",
"del": "^2.1.0",
"gulp": "^3.9.1",
"gulp-angular-protractor": "^0.1.1",
...
gulpfile.js:
gulp.task('e2e', function(callback) {
gulp
.src(['./dist/**/*.e2e.js'])
.pipe(gulpProtractorAngular({
'configFile': 'protractor.conf.js',
'debug': false,
'autoStartStopServer': true
}))
.on('error', function(e) {
console.log(e);
})
.on('end', callback);
});
protractor.conf.js
exports.config = {
baseUrl: 'http://localhost:3000',
specs: ['dist/**/*.feature'],
directConnect: true,
exclude: [],
multiCapabilities: [{
browserName: 'chrome'
}],
allScriptsTimeout: 110000,
getPageTimeout: 100000,
framework: 'custom',
frameworkPath: require.resolve('cucumber'),
cucumberOpts: {
require: 'dist/**/*steps.js',
format: 'pretty'
},
/**
* ng2 related configuration
*
* useAllAngular2AppRoots: tells Protractor to wait for any angular2 apps on the page instead of just the one matching
* `rootEl`
*
*/
useAllAngular2AppRoots: true
};
Dummy-Tests:
world.js
module.exports = function() {
this.World = function World(callback) {
this.prop = "Hello from the World!"; // this property will be available in step definitions
this.greetings = function(name, callback) {
console.log("\n----Hello " + name);
callback();
};
callback(); // tell Cucumber we're finished and to use 'this' as the world instance
};
}
login.component.feature
Feature: Sample
Scenario: First sample
Given this is the first sample
Scenario: Second sample
Given this is the second sample
login.component.steps.js
var sampleSteps = function() {
this.Given(/^this is the first sample$/, function (callback) {
console.log("\n----" + this.prop);
callback();
});
this.Given(/^this is the second sample$/, function (callback) {
this.greetings("everybody", callback);
});
};
module.exports = sampleSteps;
Projektordnerstruktur wie folgt aussieht:
Problem: Als ich schluck e2e laufen erhalte ich:
launcher] Error: TypeError: require(...).run is not a function
unter C: \ Benutzer \ Dokumente \ dev \ node_modules \ schlucke-Winkel Winkelmesser \ node_m Dules \ schluck-Transporteur \ node_modules \ Winkelmesser \ lib \ runner.js: 337: 35 um _fulfilled (C: \ Benutzer \ Dokumente \ dev \ node_modules \ gulp-eckig-protr ctor \ node_modules \ gulp-winkelmesser \ node_modules \ winkelmesser \ node_modules \ q \ q.js: 7 7:54) bei self.promiseDispatch.done (C: \ Benutzer \ Dokumente \ dev \ node_modules \ gul -Winkel-Winkelmesser \ node_modules \ gulp-Winkelmesser \ node_modules \ Winkelmesser \ node_m dules \ q \ q.js: 826: 30) bei Promise.promise.promiseDispatch (C: \ Benutzer \ Dokumente \ dev \ node_modul s \ gulp-Winkel-Winkelmesser \ node_modules \ gulp-Winkelmesser \ node_modules \ Winkelmesser \ ode_modules \ q \ q.js: 759: 13) bei C: \ Benutzer \ Dokumente \ dev \ node_modules \ gulp-Winkel-Winkelmesser \ node_m dules \ gulp-Winkelmesser \ node_modules \ Winkelmesser \ node_modules \ q \ q.js: 525: 49 bei Flush (C: \ Benutzer \ Dokumente \ dev \ node_modules \ schlucke-Winkel Winkelmesser node_modules \ schlucke-Transporteur \ node_modules \ Winkelmesser \ node_modules \ q \ q.js: 108: 17
Jede Idee, was mache ich falsch?