@wdio/cli
Version:
WebdriverIO testrunner command line interface
51 lines (50 loc) • 2.15 kB
JavaScript
import pickBy from 'lodash.pickby';
import { remote } from 'webdriverio';
import { cmdArgs as runCmdArgs } from './run.js';
import { getCapabilities } from '../utils.js';
import { CLI_EPILOGUE } from '../constants.js';
const IGNORED_ARGS = [
'bail', 'framework', 'reporters', 'suite', 'spec', 'exclude',
'mochaOpts', 'jasmineOpts', 'cucumberOpts', 'autoCompileOpts'
];
export const command = 'repl <option> [capabilities]';
export const desc = 'Run WebDriver session in command line';
export const cmdArgs = {
platformVersion: {
alias: 'v',
desc: 'Version of OS for mobile devices',
type: 'string',
},
deviceName: {
alias: 'd',
desc: 'Device name for mobile devices',
type: 'string',
},
udid: {
alias: 'u',
desc: 'UDID of real mobile devices',
type: 'string',
}
};
export const builder = (yargs) => {
return yargs
.options(pickBy({ ...cmdArgs, ...runCmdArgs }, (_, key) => !IGNORED_ARGS.includes(key)))
.example('$0 repl firefox --path /', 'Run repl locally')
.example('$0 repl chrome -u <SAUCE_USERNAME> -k <SAUCE_ACCESS_KEY>', 'Run repl in Sauce Labs cloud')
.example('$0 repl android', 'Run repl browser on launched Android device')
.example('$0 repl "./path/to/your_app.app"', 'Run repl native app on iOS simulator')
.example('$0 repl ios -v 11.3 -d "iPhone 7" -u 123432abc', 'Run repl browser on iOS device with capabilities')
.example('$0 repl "./path/to/wdio.config.js" 0 -p 9515', 'Run repl using the first capability from the capabilty array in wdio.config.js')
.example('$0 repl "./path/to/wdio.config.js" "myChromeBrowser" -p 9515', 'Run repl using a named multiremote capabilities in wdio.config.js')
.epilogue(CLI_EPILOGUE)
.help();
};
export const handler = async (argv) => {
const caps = await getCapabilities(argv);
const client = await remote({ ...argv, ...caps });
global.$ = client.$.bind(client);
global.$$ = client.$$.bind(client);
global.browser = client;
await client.debug();
return client.deleteSession();
};