1 | const gulp = require("gulp");
|
2 | const fs = require("fs-extra");
|
3 | const path = require("path");
|
4 | const {parseGulpArgs} = require("../helpers/utils");
|
5 | const yargs = require("../helpers/yargs").argv;
|
6 | const clean = require("gulp-clean");
|
7 | const {protractor} = require("gulp-protractor");
|
8 | const server = require("gulp-express");
|
9 | const Reporter = require("../../framework/reporter/Reporter");
|
10 | const TasksKiller = require("../../framework/taskskiller/TasksKiller");
|
11 | const CredentialManager = require("../credential_manager/ServerCredentialManager");
|
12 | const GherkinPrecompiler = require("../gherkin_precompiler/GherkinPrecompiler");
|
13 | const child_process = require("child_process");
|
14 | const {update} = require("webdriver-manager-replacement");
|
15 |
|
16 | module.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 |
|
86 | function 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 |
|
98 | function getConfig() {
|
99 | return yargs.argv.config
|
100 | ? require(path.resolve(yargs.argv.config)).config
|
101 | : require(path.resolve("./protractor.conf.js")).config
|
102 | }
|
103 |
|
104 | function 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 |