109 lines
4.1 KiB
JavaScript
109 lines
4.1 KiB
JavaScript
const chrome = require('selenium-webdriver/chrome');
|
|
const ffox = require('selenium-webdriver/firefox');
|
|
const fs = require('fs');
|
|
const {Builder, Capabilities, By, Key, LocalFileDetector, logging, PageLoadStrategy, promise, until} = require('selenium-webdriver');
|
|
//following provides cleaner paths in require statements
|
|
global.__basedir = __dirname;
|
|
global.__srcdir = __dirname + "/src";
|
|
global.__runtime = new Date();
|
|
global.__runtimeStr = __runtime.getFullYear().toString() +
|
|
(__runtime.getMonth() + 1).toString().padStart(2, '0') +
|
|
__runtime.getDate().toString().padStart(2, '0') + "-" +
|
|
__runtime.getHours().toString().padStart(2, '0') +
|
|
__runtime.getMinutes().toString().padStart(2, '0') +
|
|
__runtime.getSeconds().toString().padStart(2, '0');
|
|
|
|
|
|
const { flush, config, defaultUser } = require(__srcdir + '/utils/influxUtils');
|
|
|
|
global.__screenShotDir = process.cwd() + "/" + __config.screenshot_dir + "/" + __runtimeStr;
|
|
global.__dataBuffer = {};
|
|
|
|
fs.mkdirSync(__screenShotDir, { recursive: true });
|
|
|
|
var common = '--require "src/step_definitions/**/*.js" --require hooks.js --require-module babel-core/register ';
|
|
|
|
let caps = new Capabilities();
|
|
caps.set('enableVNC', true);
|
|
//caps.set('enableVideo', true);
|
|
caps.set('pageLoadStrategy', 'normal');
|
|
|
|
let chromeUserPreferences = { 'download.prompt_for_download': false, "download.default_directory": __config.download_dir };
|
|
let windowSize = { "width": 1024, "height": 768 };
|
|
|
|
console.log("DEBUG chromeUserPreferences " + JSON.stringify(chromeUserPreferences));
|
|
|
|
if(__config.window_size){
|
|
windowSize.width = parseInt(__config.window_size.width);
|
|
windowSize.height = parseInt(__config.window_size.height);
|
|
}
|
|
|
|
console.log("DEBUG windowSize " + JSON.stringify(windowSize));
|
|
|
|
let logPrefs = new logging.Preferences();
|
|
logPrefs.setLevel(logging.Type.BROWSER, logging.Level.ALL);
|
|
logPrefs.setLevel(logging.Type.DRIVER, logging.Level.INFO);
|
|
|
|
let chromeArguments = ['--no-sandbox'];
|
|
|
|
if(__config.sel_docker){
|
|
chromeArguments.push('--disable-dev-shm-usage')
|
|
}
|
|
|
|
if(__config.headless) {
|
|
caps.set('applicationCacheEnabled', false);
|
|
|
|
switch (__config.browser.toLowerCase()) {
|
|
case "chrome":
|
|
global.__wdriver = new Builder()
|
|
.withCapabilities(caps)
|
|
.forBrowser(__config.browser)
|
|
.setChromeOptions(new chrome.Options().headless()
|
|
.addArguments(chromeArguments)
|
|
.setUserPreferences(chromeUserPreferences)
|
|
.setLoggingPrefs(logPrefs)
|
|
.windowSize({width: windowSize.width, height: windowSize.height}))
|
|
.build();
|
|
break;
|
|
case "firefox":
|
|
global.__wdriver = new Builder()
|
|
.forBrowser(__config.browser)
|
|
.setFirefoxOptions(new ffox.Options().headless().windowSize({width: windowSize.width,
|
|
height: windowSize.height}))
|
|
.build();
|
|
break;
|
|
|
|
}
|
|
}else{
|
|
switch (__config.browser.toLowerCase()) {
|
|
case "chrome":
|
|
global.__wdriver = new Builder()
|
|
.withCapabilities(caps)
|
|
.forBrowser(__config.browser)
|
|
.setChromeOptions(new chrome.Options().addArguments("--incognito")
|
|
.addArguments(chromeArguments)
|
|
.setUserPreferences(chromeUserPreferences)
|
|
.setLoggingPrefs(logPrefs)
|
|
.windowSize({width: windowSize.width, height: windowSize.height}))
|
|
.build();
|
|
break;
|
|
case "firefox":
|
|
global.__wdriver = new Builder()
|
|
.withCapabilities(caps)
|
|
.forBrowser(__config.browser)
|
|
.build();
|
|
break;
|
|
}
|
|
}
|
|
|
|
__wdriver.manage().setTimeouts({implicit: 3000});
|
|
//__wdriver.setFileDetector(LocalFileDetector);
|
|
__wdriver.executor_.w3c = true;
|
|
console.log("DEBUG __wdriver: " + JSON.stringify(__wdriver));
|
|
|
|
module.exports = {
|
|
'default': common + '--format summary --format node_modules/cucumber-pretty --format json:report/cucumber_report.json',
|
|
dry: common + '--dry-run',
|
|
progress: common + '--format progress'
|
|
};
|