Skip to content

Fix crash from property 'browser_version' undefined #244

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 19, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions lib/configParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
var Log = require('./logger'),
logger = new Log(global.logLevel || 'info');

var BROWSER_LIST_URL = 'https://www.browserstack.com/list-of-browsers-and-platforms/js_testing';

var ConfigParser = {
finalBrowsers: [],

Expand Down Expand Up @@ -54,10 +56,12 @@ var ConfigParser = {
var mobileFiltered = ConfigParser.bsBrowsers.filter(function(currentValue) {
return currentValue.browser.toLowerCase() === browserObject.browser && parseFloat(currentValue.os_version).toPrecision(4) === parseFloat(browserObject.os_version).toPrecision(4);
});
if (!mobileFiltered.length) {
throw new Error('No mobile match found for ' + JSON.stringify(browserObject) + '\nCheck ' + BROWSER_LIST_URL);
}

browserObject = mobileFiltered[Math.floor(Math.random() * mobileFiltered.length)];
}
else {
} else {

var windowsFiltered = ConfigParser.bsBrowsers.filter(function(currentValue) {
return currentValue.os === 'Windows' && currentValue.browser_version.match(/metro/i) == null && currentValue.browser === browserObject.browser && ((browserObject.browser_version && browserObject.browser_version.indexOf('latest') > -1) || parseFloat(currentValue.browser_version).toPrecision(4) === parseFloat(browserObject.browser_version).toPrecision(4));
Expand All @@ -66,8 +70,13 @@ var ConfigParser = {
var osxFiltered = ConfigParser.bsBrowsers.filter(function(currentValue) {
return currentValue.os === 'OS X' && currentValue.browser === browserObject.browser && ((browserObject.browser_version && browserObject.browser_version.indexOf('latest')) > -1 || parseFloat(currentValue.browser_version).toPrecision(4) === parseFloat(browserObject.browser_version).toPrecision(4));
});
// Use Windows VMs if no OS specified
var desktopFiltered = windowsFiltered.length > 0 ? windowsFiltered : osxFiltered;

let filteredObject = windowsFiltered.length > 0 ? windowsFiltered[Math.floor(Math.random() * windowsFiltered.length)] : osxFiltered[Math.floor(Math.random() * osxFiltered.length)];
if (!desktopFiltered.length) {
throw new Error('No desktop match found for ' + JSON.stringify(browserObject) + '\nCheck ' + BROWSER_LIST_URL);
}
var filteredObject = desktopFiltered[Math.floor(Math.random() * desktopFiltered.length)];
if (browserObject.browser_version.indexOf('latest') > -1) {
filteredObject.browser_version = browserObject.browser_version;
}
Expand All @@ -82,15 +91,14 @@ var ConfigParser = {
var browserObject = {};
var version = null;
var sliceStart = 1;
if (typeof(entry) === 'string') {
if (typeof entry === 'string') {
var browserData = entry.split('_');
var lindex = browserData.length - 1;
if (browserData[0] === 'mobile' || browserData[0] === 'android' || (browserData[0] === 'opera' && browserData[1] === 'browser')) {
browserObject.browser = browserData[0] + ' ' + browserData[1];
browserObject.mobile = true;
sliceStart = 2;
}
else {
} else {
browserObject.browser = browserData[0];
}
if (browserData[lindex] && browserData[lindex].indexOf('+') === -1) {
Expand All @@ -100,15 +108,13 @@ var ConfigParser = {
else {
version = browserData.slice(sliceStart, lindex + 1).join('.');
}
}
else {
} else {
version = browserData.slice(sliceStart, lindex + 1).join('.');
}
if (browserObject.mobile) {
browserObject.os_version = version;
browserObject.browser_version = null;
}
else {
} else {
browserObject.browser_version = version;
}
} else {
Expand Down