Skip to content

Commit

Permalink
Add --standalone flag for Android setup (#27)
Browse files Browse the repository at this point in the history
Co-authored-by: Priyansh Garg <[email protected]>
  • Loading branch information
itsspriyansh and garg3133 authored Mar 13, 2024
1 parent 9caa6b8 commit f6c78e8
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 7 deletions.
4 changes: 4 additions & 0 deletions src/commands/android/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ export const AVAILABLE_OPTIONS: AvailableOptions = {
appium: {
alias: [],
description: 'Make sure the final setup works with Appium out-of-the-box.'
},
standalone: {
alias: [],
description: 'Do standalone setup for Android Emulator (no Nightwatch-related requirements will be downloaded).'
}
};

Expand Down
26 changes: 20 additions & 6 deletions src/commands/android/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,18 @@ export class AndroidSetup {
}
}

// For standalone mode, don't ask the browser question (set `configs.browsers` to 'none').
// But if a user explicitly provides a browser using the `--browsers` flag, use it.
if (options.standalone && !configs.browsers) {
configs.browsers = 'none';

// if just the `--browsers` flag is passed with no argument,
// ask the browser question even in the case of standalone.
if (options.browsers === true) {
delete configs.browsers;
}
}

return configs;
}

Expand Down Expand Up @@ -858,12 +870,14 @@ export class AndroidSetup {

// TODO: add major version of Chrome as suffix to chromedriver.
// Or, check the version of existing chromedriver using --version.
Logger.log('Checking if chromedriver is already downloaded...');
if (fs.existsSync(chromedriverDownloadPath)) {
Logger.log(` ${colors.green(symbols().ok)} chromedriver already present at '${chromedriverDownloadPath}'\n`);
} else {
Logger.log(` ${colors.red(symbols().fail)} chromedriver not found at '${chromedriverDownloadPath}'\n`);
downloadChromedriver = true;
if (!this.options.standalone) {
Logger.log('Checking if chromedriver is already downloaded...');
if (fs.existsSync(chromedriverDownloadPath)) {
Logger.log(` ${colors.green(symbols().ok)} chromedriver already present at '${chromedriverDownloadPath}'\n`);
} else {
Logger.log(` ${colors.red(symbols().fail)} chromedriver not found at '${chromedriverDownloadPath}'\n`);
downloadChromedriver = true;
}
}
} else if (stdout !== null) {
Logger.log(` ${colors.red(symbols().fail)} Chrome browser not found in the AVD.\n`);
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export const run = () => {
try {
const argv = process.argv.slice(2);
const {_: args, ...options} = minimist(argv, {
boolean: ['install', 'setup', 'help', 'appium'],
boolean: ['install', 'setup', 'help', 'appium', 'standalone'],
alias: {
help: 'h',
mode: 'm',
Expand Down
19 changes: 19 additions & 0 deletions tests/unit_tests/commands/android/testIndex.js
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,25 @@ describe('test getConfigFromOptions', function() {

configs = androidSetup.getConfigFromOptions({mode: true, browsers: []});
assert.deepStrictEqual(configs, {});

configs = androidSetup.getConfigFromOptions({standalone: true});
assert.deepStrictEqual(configs, {browsers: 'none'});

configs = androidSetup.getConfigFromOptions({standalone: true, browsers: false});
assert.deepStrictEqual(configs, {browsers: 'none'});

// if just `--browsers` option is passed with no argument, ask the browsers question.
configs = androidSetup.getConfigFromOptions({standalone: true, browsers: true});
assert.deepStrictEqual(configs, {});

configs = androidSetup.getConfigFromOptions({standalone: true, browsers: 'chrome'});
assert.deepStrictEqual(configs, {browsers: 'chrome'});

configs = androidSetup.getConfigFromOptions({standalone: true, browsers: 'chrome,firefox'});
assert.deepStrictEqual(configs, {browsers: 'both'});

configs = androidSetup.getConfigFromOptions({standalone: true, browsers: 'brave'});
assert.deepStrictEqual(configs, {browsers: 'none'});
});
});

Expand Down

0 comments on commit f6c78e8

Please sign in to comment.