UNPKG

3.7 kBJavaScriptView Raw
1#! /usr/bin/env node
2const { ncp } = require('ncp');
3const path = require('path');
4const os = require('os');
5
6ncp(path.join(__dirname, '..', 'uiTests'), path.resolve('uiTests'), (err) => {
7 if (err) {
8 return console.error(err);
9 }
10 return console.log('uiTests folder created');
11});
12ncp(path.join(__dirname, '..', 'sample-conf.js'), path.resolve('conf.js'), (err) => {
13 if (err) {
14 return console.error(err);
15 }
16 return console.log('conf.js created');
17});
18
19const childProcess = require('child_process');
20
21function runScript(scriptPath, args, callback) {
22 let invoked = false;
23
24 const process = childProcess.fork(scriptPath, args);
25
26 process.on('error', (err) => {
27 if (invoked) return;
28 invoked = true;
29 callback(err);
30 });
31
32 process.on('exit', (code) => {
33 if (invoked) return;
34 invoked = true;
35 const err = code === 0 ? null : new Error(`exit code ${code}`);
36 callback(err);
37 });
38}
39
40function spawnScript(scriptPath, args, callback) {
41 let invoked = false;
42
43 const spawnedProcess = childProcess.spawn(scriptPath, args);
44
45 spawnedProcess.stdout.on('data', (data) => {
46 console.log(data.toString());
47 });
48
49 spawnedProcess.on('error', (err) => {
50 console.log('seffef');
51 if (invoked) return;
52 invoked = true;
53 callback(err);
54 });
55
56 spawnedProcess.on('exit', (code) => {
57 if (invoked) return;
58 invoked = true;
59 console.log(code);
60 const err = code === 0 ? null : new Error(`exit code ${code}`);
61 callback(err);
62 });
63}
64
65
66
67const addScriptToPackageJson = path.resolve(__dirname, 'add-script-to-packagejson.js');
68let scriptToAdd = 'PATH=$(npm bin):$PATH NODE_OPTIONS=--no-deprecation cuketractor';
69
70let isWindows = false;
71if (os.type().toLowerCase().includes('windows')) {
72 scriptToAdd = 'set NODE_OPTIONS=--no-deprecation | cuketractor';
73 isWindows = true;
74}
75
76const installChromedriver = './node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager update --gecko=false --versions.chrome 2.35';
77
78runScript(addScriptToPackageJson, ['ct', scriptToAdd], (err) => {
79 if (err) throw err;
80 console.log('added ct script to your package.json');
81
82 runScript(addScriptToPackageJson, ['cuketractor', scriptToAdd], (err2) => {
83 if (err2) throw err2;
84 console.log('added cuketractor script to your package.json');
85
86 runScript(addScriptToPackageJson, ['install-chromedriver', installChromedriver], (err3) => {
87 if (err3) throw err3;
88 console.log('added installChromedriver to your package.json');
89
90 runScript(addScriptToPackageJson, ['postinstall', 'npm run install-chromedriver'], (err4) => {
91 if (err4) throw err4;
92 console.log('added postinstall script to your package.json');
93
94 runScript('./node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager', 'update --gecko=false --versions.chrome 2.35'.split(' '), (err5) => {
95 if (err5) {
96 console.log(' ');
97 console.log('!!!!!!!!!!!-----------IMPORTANT----------!!!!!!!!!!!!!!!');
98 console.log('It looks like it hasn’t install properly, you may be behind a corporate proxy. You may have to add the --proxy flag to webdriver-manager in your package json.');
99 console.log('e.g. "install-chromedriver": "./node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager update --gecko=false --versions.chrome 2.35 --proxy http://127.0.0.1",');
100 console.log('Then run:');
101 console.log('npm run install-chromedriver');
102 console.log(' ');
103 throw err5
104 } else {
105 return console.log('ChromeDriver Installed');
106 }
107 });
108 });
109 });
110 });
111
112 return true;
113});