cucumber-protractor
Version:
POM CukeTractor - Bootstrap your cucumber tests with cucumber, protractor and a structured way of creating page objects and component objects
88 lines (72 loc) • 3.18 kB
JavaScript
const { ncp } = require('ncp');
const path = require('path');
const os = require('os');
ncp(path.join(__dirname, '..', 'uiTests'), path.resolve('uiTests'), (err) => {
if (err) {
return console.error(err);
}
return console.log('uiTests folder created');
});
ncp(path.join(__dirname, '..', 'sample-conf.js'), path.resolve('conf.js'), (err) => {
if (err) {
return console.error(err);
}
return console.log('conf.js created');
});
const childProcess = require('child_process');
function runScript(scriptPath, args, callback) {
let invoked = false;
const process = childProcess.fork(scriptPath, args);
process.on('error', (err) => {
if (invoked) return;
invoked = true;
callback(err);
});
process.on('exit', (code) => {
if (invoked) return;
invoked = true;
const err = code === 0 ? null : new Error(`exit code ${code}`);
callback(err);
});
}
const addScriptToPackageJson = path.resolve(__dirname, 'add-script-to-packagejson.js');
let scriptToAdd = 'PATH=$(npm bin):$PATH NODE_OPTIONS=--no-deprecation cuketractor';
// let isWindows = false;
if (os.type().toLowerCase().includes('windows')) {
scriptToAdd = 'set NODE_OPTIONS=--no-deprecation | cuketractor';
// isWindows = true;
}
const installChromedriver = './node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager update --gecko=false --versions.chrome 2.35';
runScript(addScriptToPackageJson, ['ct', scriptToAdd], (err) => {
if (err) throw err;
console.log('added ct script to your package.json');
runScript(addScriptToPackageJson, ['cuketractor', scriptToAdd], (err2) => {
if (err2) throw err2;
console.log('added cuketractor script to your package.json');
runScript(addScriptToPackageJson, ['install-geckodriver', installChromedriver], (err3) => {
if (err3) throw err3;
console.log('added installChromedriver to your package.json');
runScript(addScriptToPackageJson, ['postinstall', 'npm run install-geckodriver'], (err4) => {
if (err4) throw err4;
console.log('added postinstall script to your package.json');
runScript('./node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager', 'update --gecko=false --versions.chrome 2.35'.split(' '), (err5) => {
if (err5) {
console.log(' ');
console.log('!!!!!!!!!!!-----------IMPORTANT----------!!!!!!!!!!!!!!!');
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.');
const eg = '"./node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager update --gecko=false --standalone=false --versions.chrome 2.35 --proxy http://127.0.0.1"';
console.log(`e.g. "install-geckodriver": ${eg},`);
console.log('Then run:');
console.log('npm run install-geckodriver');
console.log(' ');
throw err5;
} else {
return console.log('ChromeDriver Installed');
}
});
});
});
});
return true;
});