@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
60 lines • 4.5 kB
JavaScript
import { capabilitiesEnvironmentDetector } from '@wdio/utils';
/**
* create `browser` object with capabilities and environment flags before session is started
* so that Mocha/Jasmine users can filter their specs based on flags or use capabilities in test titles
*/
export default class ProtocolStub {
static async newSession(options) {
const capabilities = emulateSessionCapabilities((options.capabilities || {}));
const browser = {
options,
capabilities,
requestedCapabilities: capabilities,
customCommands: [], // internally used to transfer custom commands to the actual protocol instance
overwrittenCommands: [], // internally used to transfer overwritten commands to the actual protocol instance
commandList: [],
...capabilitiesEnvironmentDetector(capabilities, options._automationProtocol || 'webdriver')
};
browser.addCommand = (...args) => browser.customCommands.push(args);
browser.overwriteCommand = (...args) => browser.overwrittenCommands.push(args);
return browser;
}
/**
* added just in case user wants to somehow reload webdriver or devtools session
* before it was started.
*/
static reloadSession() {
throw new Error('Protocol Stub: Make sure to start webdriver or devtools session before reloading it.');
}
static attachToSession(options, modifier) {
if (options || !modifier) {
throw new Error('You are trying to attach to a protocol stub, this should never occur, please file an issue.');
}
/**
* MultiRemote is needed
*/
return modifier({
commandList: []
});
}
}
/**
* transform capabilities provided by user to look like
* capabilities returned by WebDriver
* @param {object} caps user defined capabilities
* @return {object}
*/
function emulateSessionCapabilities(caps) {
const capabilities = {};
// remove appium vendor prefix from capabilities
Object.entries(caps).forEach(([key, value]) => {
const newKey = key.replace('appium:', '');
capabilities[newKey] = value;
});
// isChrome
if (caps.browserName && caps.browserName.toLowerCase() === 'chrome') {
capabilities.chrome = true;
}
return capabilities;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wtc3R1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbC1zdHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUc3RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLFlBQVk7SUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUUsT0FBMEI7UUFDL0MsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQzNDLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQWdELENBQzlFLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBUTtZQUNqQixPQUFPO1lBQ1AsWUFBWTtZQUNaLHFCQUFxQixFQUFFLFlBQVk7WUFDbkMsY0FBYyxFQUFFLEVBQUUsRUFBRSw4RUFBOEU7WUFDbEcsbUJBQW1CLEVBQUUsRUFBRSxFQUFFLG1GQUFtRjtZQUM1RyxXQUFXLEVBQUUsRUFBRTtZQUNmLEdBQUcsK0JBQStCLENBQUMsWUFBWSxFQUFHLE9BQWUsQ0FBQyxtQkFBbUIsSUFBSSxXQUFXLENBQUM7U0FDeEcsQ0FBQTtRQUVELE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEUsT0FBTyxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkYsT0FBTyxPQUFPLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxhQUFhO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0ZBQXNGLENBQUMsQ0FBQTtJQUMzRyxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBRSxPQUFjLEVBQUUsUUFBbUI7UUFDdkQsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDZGQUE2RixDQUFDLENBQUE7UUFDbEgsQ0FBQztRQUVEOztXQUVHO1FBQ0gsT0FBTyxRQUFRLENBQUM7WUFDWixXQUFXLEVBQUUsRUFBRTtTQUNsQixDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0o7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsMEJBQTBCLENBQUUsSUFBc0M7SUFDdkUsTUFBTSxZQUFZLEdBQXdCLEVBQUUsQ0FBQTtJQUU1QyxnREFBZ0Q7SUFDaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzFDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUE7SUFDaEMsQ0FBQyxDQUFDLENBQUE7SUFFRixXQUFXO0lBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEUsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7SUFDOUIsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFBO0FBQ3ZCLENBQUMifQ==