Skip to content

Commit

Permalink
add sauce custom browsers (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
gkushang committed Nov 2, 2020
1 parent c554ad5 commit 449379f
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 36 deletions.
27 changes: 11 additions & 16 deletions packages/codeceptjs-configure/lib/config/drivers/webdriver.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@ const webdriver_conf = {
'page load': 10000
}
}
},
plugins: {
wdio: {
enabled: true,
services: [STANDALONE_SERVICE]
}
}
};

const isRunningLocally = (profile) => {
return profile && !(profile.match('sauce:') || profile.match('selenoid:'));
};

const get = function (conf) {
conf = merge(conf, webdriver_conf);
let profile = process.env.profile;
Expand All @@ -44,16 +42,13 @@ const get = function (conf) {
conf.multiple.parallel.browsers = [BROWSER];
}

if (profile && profile.match('selenoid:[a-zA-Z]') && conf.plugins.wdio) {
delete conf.plugins.wdio;
}

if (profile && profile.match('sauce:') && conf.plugins.wdio) {
if (conf.plugins.wdio.services && Array.isArray(conf.plugins.wdio.services)) {
conf.plugins.wdio.services = conf.plugins.wdio.services.filter((item) => {
return item !== STANDALONE_SERVICE;
});
}
if (isRunningLocally(profile)) {
conf.plugins = {
wdio: {
enabled: true,
services: [STANDALONE_SERVICE]
}
};
}

return conf;
Expand Down
29 changes: 28 additions & 1 deletion packages/codeceptjs-saucelabs/lib/browsers.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,31 @@ let browsers = {
}
};

exports.browsers = browsers;
let customConfig = (conf) => {
let sauceCustomConf = {
capabilities: {
'sauce:options': sauceOptions
}
};

customConf = conf.split(':');
customConf.shift();
customConf.shift();

if (customConf.length < 2) {
throw new Error('Sauce Custom Config in the "--profile" was not defined correctly. It should be in the format of "sauce:config:\'plaformName\':browserName:brwoserVersion"');
}

sauceCustomConf.capabilities.platformName = customConf[0];
sauceCustomConf.browser = customConf[1];

if (customConf.length > 2) {
sauceCustomConf.capabilities.browserVersion = customConf[2];
} else {
sauceCustomConf.capabilities.browserVersion = 'latest';
}

return sauceCustomConf;
};

module.exports = { browsers, customConfig };
44 changes: 25 additions & 19 deletions packages/codeceptjs-saucelabs/lib/codecept.sauce.conf.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const defaultBrowsers = require('./browsers.conf').browsers;
const customConfig = require('./browsers.conf').customConfig;
const debug = require('debug')('codeceptjs-saucelabs:config');
const merge = require('deepmerge');
const chalk = require('chalk');
Expand Down Expand Up @@ -38,25 +39,30 @@ function config(sauceUsername, sauceKey, userSpecificBrowsers) {

function getBrowsers() {
if (isSauceRequested()) {
let multibrowsers = [];
let requestedBrowsers = getRequestedBrowser();
debug('Tests are running on Sauce Labs on Multi-Browsers:', requestedBrowsers);
requestedBrowsers.forEach((browser) => {
let sauceBrowser = sauceBrowsers[browser];
if (!sauceBrowser) {
throw new Error(
`'${browser}' is not defined in Sauce Browsers. Please update your '--profile' argument to choose from below available browsers.\n Available Sauce Browsers: ${JSON.stringify(
sauceBrowsers,
undefined,
2
)}\n`
);
}
multibrowsers.push(sauceBrowsers[browser]);
});

debug('Sauce Labs Config for Multi-Browsers:', multibrowsers);
return multibrowsers;
if (gProfile.match('sauce:config:')) {
console.log('customConfig: ', customConfig);
return [customConfig(gProfile)];
} else {
let multibrowsers = [];
let requestedBrowsers = getRequestedBrowser();
debug('Tests are running on Sauce Labs on Multi-Browsers:', requestedBrowsers);
requestedBrowsers.forEach((browser) => {
let sauceBrowser = sauceBrowsers[browser];
if (!sauceBrowser) {
throw new Error(
`'${browser}' is not defined in Sauce Browsers. Please update your '--profile' argument to choose from below available browsers.\n Available Sauce Browsers: ${JSON.stringify(
sauceBrowsers,
undefined,
2
)}\n`
);
}
multibrowsers.push(sauceBrowsers[browser]);
});

debug('Sauce Labs Config for Multi-Browsers:', multibrowsers);
return multibrowsers;
}
}

return [sauceBrowsers.chrome];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
NODE_TLS_REJECT_UNAUTHORIZED = 0
CODECEPT_RELATIVE_PATH = ./acceptance/

# SELENOID OPTIONS
HUB_BASE_HOST = localhost
HUB_PORT = 4445

# DRIVER ENV
DRIVER = playwright
HEADLESS = false
Expand Down

0 comments on commit 449379f

Please sign in to comment.