From d052b5180a74b3f19d4050c7df4c47aa9949c7d6 Mon Sep 17 00:00:00 2001 From: Rodolfo Berwanger Liberado <83656054+RodBerw@users.noreply.github.com> Date: Mon, 11 Mar 2024 06:40:40 -0300 Subject: [PATCH] Add chromium path arguments (#465) * Add chromium path arguments * Update simulate API * Argument correction and exception logs * Lowercase correction * Lowercase correction 1.0 * Fix chromium path argument validation * Fix chromium path argument validation 1.0 * Chromium target validation * Fix Chromium target validation * Target validation update * getBrowser chromiumPath argument location change --------- Co-authored-by: Rodolfo Liberado (BEYONDSOFT CONSULTING INC) --- bin/simulate | 8 +++++--- package-lock.json | 40 ++-------------------------------------- src/browsers/browser.js | 6 ++++-- src/simulate.js | 17 +++++++++++++---- 4 files changed, 24 insertions(+), 47 deletions(-) diff --git a/bin/simulate b/bin/simulate index 69845d85..b6b4077c 100755 --- a/bin/simulate +++ b/bin/simulate @@ -35,7 +35,7 @@ function unknownOptHandler(optName) { function processArgs() { try { var parserOptions = { - string: ['dir', 'simhostui', 'target', 'simulationpath', 'device', 'lang', 'theme', 'middleware'], + string: ['dir', 'simhostui', 'target', 'simulationpath', 'device', 'lang', 'theme', 'middleware', 'chromiumpath'], boolean: ['livereload', 'forceprepare', 'corsproxy', 'generateids', 'spaurlrewrites', 'showbrowser'], default: { dir: null, @@ -77,7 +77,8 @@ function processArgs() { middleware: parsed.middleware, generateids: parsed.generateids, spaurlrewrites: parsed.spaurlrewrites, - showbrowser: parsed.showbrowser + showbrowser: parsed.showbrowser, + chromiumpath: parsed.chromiumpath }; } catch (err) { throw new Error('Error parsing arguments: ' + (err.message || err) + os.EOL + os.EOL + getUsageString()); @@ -102,7 +103,8 @@ function getUsageString() { '[--middleware MIDDLEWARE_PATH]', '[--generateids (GENERATEIDS)]', '[--spaurlrewrites (SPA_URL_REWRITES)]', - '[--showbrowser (SHOWBROWSER)]' + '[--showbrowser (SHOWBROWSER)]', + '[--chromiumpath CHROMIUM_PATH]' ]; return message + options.join(' ') + os.EOL; diff --git a/package-lock.json b/package-lock.json index bff4c8da..ad9c47e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2974,11 +2974,6 @@ "has-binary2": "~1.0.2" } }, - "node_modules/engine.io/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/entities": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", @@ -8906,16 +8901,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/socket.io/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -10311,8 +10296,7 @@ "peer": true }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "version": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "peer": true, @@ -10586,8 +10570,7 @@ }, "dependencies": { "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "version": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "peer": true, @@ -12520,13 +12503,6 @@ "debug": "4.3.1", "engine.io-parser": "~2.2.0", "ws": "~7.4.2" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } } }, "engine.io-client": { @@ -17119,13 +17095,6 @@ "socket.io-adapter": "~1.1.0", "socket.io-client": "2.5.0", "socket.io-parser": "~3.4.0" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } } }, "socket.io-adapter": { @@ -17200,11 +17169,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, diff --git a/src/browsers/browser.js b/src/browsers/browser.js index 4baa2716..2e819293 100644 --- a/src/browsers/browser.js +++ b/src/browsers/browser.js @@ -17,6 +17,7 @@ function launchBrowser(opts) { let target = opts.target || 'default'; const url = opts.url || ''; let showBrowser = opts.showBrowser; + const chromiumPath = opts.chromiumPath; // Handle showbrowser argument sent from cordova-tools and other unknown scenarios // Only showbrowser = false will return method @@ -29,7 +30,7 @@ function launchBrowser(opts) { open(url); return Promise.resolve(); } else { - return getBrowser(target, opts.dataDir, url).then(browser => { + return getBrowser(target, opts.dataDir, url, chromiumPath).then(browser => { let args; switch (process.platform) { @@ -62,7 +63,7 @@ function launchBrowser(opts) { } } -function getBrowser(target, dataDir, url) { +function getBrowser(target, dataDir, url, chromiumPath) { if (target == 'chrome') { dataDir = dataDir || 'cordova_simulate_temp_chrome_user_data_dir'; } else if (target == 'edge') { @@ -73,6 +74,7 @@ function getBrowser(target, dataDir, url) { const browsers = { win32: { chrome: `chrome --user-data-dir=%TEMP%\\${dataDir}`, + chromium: chromiumPath, opera: 'opera', firefox: 'firefox', edge: `msedge ${url} --user-data-dir=%TEMP%\\${dataDir}` diff --git a/src/simulate.js b/src/simulate.js index 26d2e33e..6bbc4ebd 100644 --- a/src/simulate.js +++ b/src/simulate.js @@ -6,8 +6,8 @@ var Simulator = require('./server/simulator'); var BrowserHelper = require('./browsers/browser'); const log = require('./server/utils/log'); -var launchBrowser = function (target, url, showBrowser) { - return BrowserHelper.launchBrowser({ target: target, url: url, showBrowser: showBrowser }); +var launchBrowser = function (target, url, showBrowser, chromiumPath) { + return BrowserHelper.launchBrowser({ target: target, url: url, showBrowser: showBrowser, chromiumPath: chromiumPath }); }; var simulate = function (opts) { @@ -17,18 +17,27 @@ var simulate = function (opts) { var target = opts.target || 'default'; var simulator = new Simulator(opts); var showBrowser = opts.showbrowser; + var chromiumPath = opts.chromiumpath; if (!showBrowser) { var noBrowserMessage = 'The argument `showbrowser` is set to false. Please load simulated application in browser manually if needed.'; log.warning(noBrowserMessage); } + if(process.platform === 'win32' && target.toLowerCase() === 'chromium' && !chromiumPath){ + var win32NoPathMessage = 'Chromium path is required on Windows (win32).'; + throw new Error(win32NoPathMessage); + }else if(process.platform !== 'win32' && chromiumPath){ + var nonWin32PathMessage = 'Chromium path is not supported on this platform.'; + log.warning(nonWin32PathMessage); + } + return simulator.startSimulation() .then(function () { - return launchBrowser(target, simulator.appUrl(), showBrowser); + return launchBrowser(target, simulator.appUrl(), showBrowser, chromiumPath); }) .then(function () { - return launchBrowser(target, simulator.simHostUrl(), showBrowser); + return launchBrowser(target, simulator.simHostUrl(), showBrowser, chromiumPath); }) .then(function () { return simulator;