UNPKG

3.47 kBJavaScriptView Raw
1const gulp = require("gulp");
2const fs = require("fs-extra");
3const path = require("path");
4const {parseGulpArgs} = require("../helpers/utils");
5const yargs = require("../helpers/yargs").argv;
6const clean = require("gulp-clean");
7const {protractor} = require("gulp-protractor");
8const server = require("gulp-express");
9const Reporter = require("../../framework/reporter/Reporter");
10const TasksKiller = require("../../framework/taskskiller/TasksKiller");
11const CredentialManager = require("../credential_manager/ServerCredentialManager");
12const GherkinPrecompiler = require("../gherkin_precompiler/GherkinPrecompiler");
13const child_process = require("child_process");
14const {update} = require("webdriver-manager-replacement");
15
16module.exports = function (gulp, envs, credentialManagerClass = CredentialManager) {
17
18 gulp.task("folders:create", () => {
19 fs.emptyDirSync("./dist");
20 fs.mkdirsSync("./dist/temp_features");
21 });
22
23 gulp.task("webdriver:update", () => {
24 const browserDrivers = [
25 {
26 name: "chromedriver"
27 },
28 {
29 name: "iedriver"
30 }
31 ];
32 const server = {
33 name: "selenium",
34 runAsNode: false,
35 runAsDetach: true,
36 };
37 return update({
38 browserDrivers,
39 server
40 });
41 });
42
43 gulp.task("test:gherkin_precompile", ["webdriver:update", "folders:create"], () => {
44 const config = getConfig();
45 return new GherkinPrecompiler(config.specs, yargs.argv.tags).compile().catch(e => {
46 throw e
47 });
48 });
49
50 gulp.task("test", ["test:gherkin_precompile", "c_server"], () => {
51 const config = getConfig();
52 return gulp.src([])
53 .pipe(protractor({
54 configFile: getConfigFile(),
55 args: parseGulpArgs(yargs.argv),
56 autoStartStopServer: true,
57 debug: yargs.debug === "true"
58 }))
59 .on("end", function () {
60 server.stop();
61 console.log("E2E Testing complete");
62 generateReport(config);
63 })
64 .on("error", function (error) {
65 server.stop();
66 generateReport(config);
67 console.log("E2E Tests failed");
68 })
69 });
70
71 gulp.task("kill", () => TasksKiller.kill(["chromedriver", "iedriverserver"]));
72
73 gulp.task("report", () => {
74 const config = getConfig();
75 generateReport(config);
76 });
77
78 gulp.task("c_server", () => {
79 if (yargs.argv.credentialServerPort) {
80 server.run([__dirname + "/credential_server.js", "--credentialServerPort", yargs.argv.credentialServerPort]);
81 }
82 });
83
84};
85
86function generateReport(config) {
87 Reporter.generateHTMLReport(
88 config.capabilities.metadata,
89 config.boilerplateOpts.reportFolder,
90 config.boilerplateOpts.reportFolder
91 );
92 Reporter.generateXMLReport(
93 config.boilerplateOpts.reportFolder + "report.json",
94 config.boilerplateOpts.reportFolder + "report.xml"
95 );
96}
97
98function getConfig() {
99 return yargs.argv.config
100 ? require(path.resolve(yargs.argv.config)).config
101 : require(path.resolve("./protractor.conf.js")).config
102}
103
104function getConfigFile() {
105 return yargs.argv.config
106 ? path.resolve(yargs.argv.config)
107 : path.resolve("./protractor.conf.js")
108}
\No newline at end of file