Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_before(function(done) {
if (onSauce && this.currentTest) {
caps.name = this.currentTest.parent.title + " " + this.currentTest.title;
}
driverHolder.driver = wd.promiseChainRemote(host, port);
if (process.env.VERBOSE) {
driverHolder.driver.on('status', function(info) {
console.log(info);
});
driverHolder.driver.on('command', function(meth, path, data) {
console.log(' > ' + meth, path, data || '');
});
}
driverHolder.driver
.init(caps)
.then(
// ok
function(sessionId) {
driverHolder.sessionId = sessionId;
tunnelIdentifier: tunnelId,
name: tmp[1] + ' - ' + tunnelId,
// timeouts
// tunnelTimeout: 30 * 60 * 1000,
// 'max-duration': 60 * 45,
// 'command-timeout': 599,
// 'idle-timeout': 599
};
chai.use(chaiAsPromised);
chai.should();
// enables chai assertion chaining
chaiAsPromised.transferPromiseness = wd.transferPromiseness;
devServer.start(function() {
if (client.runner === 'saucelabs') {
startSauceConnect(startTest);
} else {
startSelenium(startTest);
}
});
function startTest(browser, subProcess) {
// optional extra logging
// browser.on('status', function(info) {
// console.log(info.cyan);
// });
browser.on('command', function(eventType, command, response) {
if (eventType === 'CALL') {
var wd = require('wd')
, imageDiff = require('image-diff')
;
require('colors');
var _ = require("lodash");
var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;
// checking sauce credential
if(!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY){
console.warn(
'\nPlease configure your sauce credential:\n\n' +
'export SAUCE_USERNAME=\n' +
'export SAUCE_ACCESS_KEY=\n\n'
);
throw new Error("Missing sauce credentials");
}
// http configuration, not needed for simple runs
wd.configureHttp( {
timeout: 60000,
retryDelay: 15000,
retries: 5
var errors;
var length;
var browserName;
var browserVersion;
var sessionName;
var driver;
count = 0;
errors = 0;
length = urls.length;
browserName = browser.browserName;
browserVersion = browser.version;
sessionName = browserName + ' ' + browserVersion;
browser.name = sessionName;
driver = wd.promiseRemote('ondemand.saucelabs.com', 80, saucelabsUser, saucelabsKey);
driver.init(browser)
.then(iterateTests)
.fail(function () {
console.log('Browser ' + sessionName + ' was not available');
// SauceLabs' shitty API returns browsers that it doesn't support.
// This hack retries progressively later versions of those browsers
// until we find one that works or there are no more versions.
var targetBrowser = {
browserName: browserName,
version: Math.floor(parseFloat(browserVersion) + 1)
};
saucelabs.getWebDriverBrowsers(retryTests.bind(null, targetBrowser));
});
const setupDriver = async () => {
const branch = process.env.CIRCLE_BRANCH || '';
const safeBranchName = branch.replace( /\//g, '-' );
if ( isLocalEnvironment() ) {
try {
appiumProcess = await AppiumLocal.start( localAppiumPort );
} catch ( err ) {
// Ignore error here, Appium is probably already running (Appium desktop has its own server for instance)
// eslint-disable-next-line no-console
console.log( 'Could not start Appium server', err.toString() );
}
}
const serverConfig = isLocalEnvironment() ? serverConfigs.local : serverConfigs.sauce;
const driver = wd.promiseChainRemote( serverConfig );
let desiredCaps;
if ( isAndroid() ) {
desiredCaps = _.clone( android8 );
if ( isLocalEnvironment() ) {
desiredCaps.app = path.resolve( localAndroidAppPath );
try {
const androidVersion = childProcess
.execSync( 'adb shell getprop ro.build.version.release' )
.toString()
.replace( /^\s+|\s+$/g, '' );
delete desiredCaps.platformVersion;
desiredCaps.deviceName = 'Android Emulator';
// eslint-disable-next-line no-console
console.log( 'Detected Android device running Android %s', androidVersion );
} catch ( error ) {
var createClient = function createClient() {
var res = wd.promiseChainRemote('localhost', process.env.LOCAL_SELENIUM_PORT || 4444)
.init(automatedBrowsers.phantomjs.driver.config)
.setWindowSize(1000, 1000) // do something
.quit();
return res;
};
.then(() => {
let action = new wd.TouchAction(driver);
action = action.tap({x, y});
if (profile.platformName === "iOS") {
action = action.release(); // Android doesn't like this much
}
action = action.wait({ms:1000});
return action.perform();
})
.then(switchToWebViewContext);
var async = require('async');
var wd = require('wd');
var remote = JSON.parse(process.env.WEBDRIVER_REMOTE || '{"hostname":"localhost", "port":9515}');
var browsers = JSON.parse(process.env.BROWSERS || '[{"browserName":"chrome"}]' );
var strider = require('./strider');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;
describe('Strider', function () {
this.timeout(20000);
// TESTS
var tests = (
process.env.TEST_SUITE ?
[ './integration/'+process.env.TEST_SUITE+'.js' ] :
[ './integration/build_page_test.js'
, './integration/login_test.js'
, './integration/global_admin_test.js'
//, './integration/github_test.js'
, './integration/branch_management_test.js'
]);
wd.addPromiseChainMethod('rel', function (url, cb) {
describe('Strider', function () {
this.timeout(20000);
// TESTS
var tests = (
process.env.TEST_SUITE ?
[ './integration/'+process.env.TEST_SUITE+'.js' ] :
[ './integration/build_page_test.js'
, './integration/login_test.js'
, './integration/global_admin_test.js'
//, './integration/github_test.js'
, './integration/branch_management_test.js'
]);
wd.addPromiseChainMethod('rel', function (url, cb) {
return this.get('http://localhost:4000' + url, cb);
});
var runTests = function (conn, doneBrowser) {
var commands = [];
async.each(tests, function (suite, cb) {
var browser = wd.promiseChainRemote(remote);
browser.on('status', function (info) {
console.log(info);
});
browser.on('command', function (meth, path, data) {
if (meth && path && data) commands.push([' command > ' + meth, path, JSON.stringify(data || '')].join(' '));
});
browser.on('error', function (info) {
console.log(info);
const jobOpenings = 'WE\'RE HIRING';
const joinSlug = 'join';
const joinURL = baseURL + '/join-us';
const workURL = baseURL + '/work';
const workItem = '.page-work .work-item';
const workReadmore = 'Read more';
const workSlug = 'work';
const sandboxURL = baseURL + '/sandbox';
const sandboxComponentList = 'body > ol';
const sandboxComponentName = 'blog';
const sandboxSlug = 'sandbox';
const badURL = baseURL + '/blog/press/asdf';
const page404 = '.page-404';
// helpers
wd.addPromiseChainMethod('openPageByMenuLink', (linkText) => {
return browser
.elementByCss(navigationToggle)
.isDisplayed()
.then((isDisplayed) => {
if (isDisplayed) {
console.log('We have a mobile menu so need to open it first...');
return browser
.elementByCss(navigationToggle)
.click()
.waitForElementByPartialLinkText(linkText.toUpperCase(), 5000)
.click();
} else {
console.log('We are on desktop resolution now, no need to open mobile menu!');
return browser
.elementByPartialLinkText(linkText)
.click();