You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP →

cross-tester

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cross-tester - npm Package Compare versions

Comparing version

to
3.1.0

@@ -107,4 +107,13 @@ 'use strict';

var browser = _ref2.browser;
var browserName = browser.displayName;
function print(message) {
return (0, _promisesUtil.andReturn)(function () {
return Promise.resolve(verbose ? console.log(browserName + ' - ' + message) : 0);
});
}
return function () {
return Promise.resolve().then(print('starting testing session in browser ' + browser.displayName)).then(test.enter()).then(print('connected'))
return Promise.resolve().then(print('starting')).then(test.enter()).then(print('connected'))
// we need very simple page always available online

@@ -121,3 +130,3 @@ .then(test.open('about:blank')).then(test.execute(code)).then(print('code executed'))

return {
browser: browser.displayName,
browser: browserName,
results: results,

@@ -133,3 +142,3 @@ logs: logs

return {
browser: browser.displayName,
browser: browserName,
results: [{

@@ -141,3 +150,3 @@ type: 'FAIL',

};
}).then(print('testing session in browser ' + browser.displayName + ' finished'));
}).then(print('finished'));
};

@@ -162,8 +171,2 @@ });

});
function print(message) {
return (0, _promisesUtil.andReturn)(function () {
return Promise.resolve(verbose ? console.log(message) : 0);
});
}
}

@@ -27,2 +27,10 @@ 'use strict';

var _systemBrowsers = require('../system-browsers');
var osVersionForBrowser = _interopRequireWildcard(_systemBrowsers);
var _osxVersions = require('../osx-versions');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -270,5 +278,10 @@

// ex. MS Edge likes return arrays as object with numeric keys
// on the other hand, strngification fails in IE 9, so we need a fallback
return function () {
return driver.executeScript('return JSON.stringify(' + RESULTS_ARRAY_NAME + ');').then(function (json) {
return JSON.parse(json);
return driver.executeScript('try {\n return JSON.stringify(' + RESULTS_ARRAY_NAME + ');\n } catch(err) {\n return ' + RESULTS_ARRAY_NAME + ';\n }').then(function (jsonOrNot) {
try {
return JSON.parse(jsonOrNot);
} catch (err) {
return jsonOrNot;
}
});

@@ -364,12 +377,3 @@ };

var osVersion = (({
'OS X': {
'10.6': 'Snow Leopard',
'10.7': 'Lion',
'10.8': 'Mountain Lion',
'10.9': 'Mavericks',
'10.10': 'Yosemite',
'10.11': 'El Capitan'
}
})[osName] || {})[browser.osVersion.toLowerCase()] || browser.osVersion;
var osVersion = osName === 'MAC' ? _osxVersions.numberToName[browser.osVersion.toLowerCase()] : browser.osVersion;

@@ -379,2 +383,3 @@ var appium = false;

if (browserName === 'Safari' && ['iphone', 'ipad'].indexOf((deviceName || '').split(' ')[0]) !== -1) {
// Safari on iOS
browserName = 'iPad';

@@ -407,2 +412,3 @@ appium = true;

} else if (browserName === 'Android') {
// Android Browser
appium = true;

@@ -427,2 +433,17 @@

if (!osVersion) {
if (osName === 'Windows' && browserName === 'Internet Explorer') {
osVersion = osVersionForBrowser.ie[browser.version];
}
if (osName === 'Windows' && browserName === 'MicrosoftEdge') {
osVersion = osVersionForBrowser.edge[browser.version];
}
if (osName === 'OS X' && browserName === 'Safari') {
osVersion = osVersionForBrowser.safari[browser.version];
osVersion = _osxVersions.numberToName[osVersion] || osVersion;
}
}
var config = {

@@ -429,0 +450,0 @@ name: 'CrossTester - ' + displayName

@@ -25,2 +25,10 @@ 'use strict';

var _lodash = require('lodash');
var _systemBrowsers = require('../system-browsers');
var osVersionForBrowser = _interopRequireWildcard(_systemBrowsers);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -76,3 +84,3 @@

var DEFAULT_TIMEOUT = 60 * 1000;
var DEFAULT_TIMEOUT = 300 * 1000;
var chromeLogMessagePattern = /^(javascript|(?:(?:https?|chrome-extension)\:\/\/\S+))\s+(\d+:\d+)\s+(.*)$/i;

@@ -262,5 +270,10 @@ var firefoxAddonLogPattern = /^(\d{13})\t(\S*(?:addons|extensions)\S*)\t([A-Z]+)\t(.*)\n?$/i;

// ex. MS Edge likes return arrays as object with numeric keys
// on the other hand, strngification fails in IE 9, so we need a fallback
return function () {
return driver.execute('return JSON.stringify(' + RESULTS_ARRAY_NAME + ');').then(function (json) {
return JSON.parse(json);
return driver.execute('try {\n return JSON.stringify(' + RESULTS_ARRAY_NAME + ');\n } catch(err) {\n return ' + RESULTS_ARRAY_NAME + ';\n }').then(function (jsonOrNot) {
try {
return JSON.parse(jsonOrNot);
} catch (err) {
return jsonOrNot;
}
});

@@ -334,7 +347,19 @@ };

'mozilla firefox': 'firefox',
'ff': 'firefox'
'ff': 'firefox',
'apple safari': 'Safari',
'ios safari': 'Safari',
'safari mobile': 'Safari',
'iphone': 'Safari',
'ipad': 'Safari',
'android browser': 'Android'
})[browser.name.toLowerCase()] || browser.name;
var osName = ({
'mac': 'OS X'
'win': 'Windows',
'windows': 'Windows',
'mac': 'OS X',
'os x': 'OS X',
'ios': 'iOS',
'android': 'Android',
'linux': 'Linux'
})[browser.os.toLowerCase()] || browser.os;

@@ -353,9 +378,97 @@

return {
name: 'CrossTester - ' + displayName,
browserName: browserName,
version: browser.version,
platform: osName + (browser.hasOwnProperty('osVersion') && 'undefined' !== typeof osVersion ? ' ' + osVersion : ''),
device: browser.device
var appium = false;
var appiumLegacy = false;
var deviceName = (browser.device || '').toLowerCase();
if (browserName === 'Safari' && ['iphone', 'ipad'].indexOf((deviceName || '').split(' ')[0]) !== -1) {
// Safari on iOS
osName = 'iOS';
appium = true;
if (deviceName === 'iphone') {
deviceName = 'iPhone Simulator';
}
if (deviceName === 'ipad') {
deviceName = 'iPad Simulator';
}
} else if (browserName === 'Android') {
// Android Browser
osName = 'Android';
appium = true;
// find device based on OS version
if (!deviceName) {
deviceName = 'Android Emulator';
}
if (!osVersion) {
osVersion = browser.version;
}
if (isNaN(parseFloat(osVersion, 10))) {
// find numeric version by name
osVersion = ({
'lolipop': '5.1',
'kitkat': '4.4',
'jelly bean': '4.3',
'ice cream sandwich': '4.0'
})[osVersion.toLowerCase()];
}
// for some reason platform is different for older Androids
if (parseFloat(osVersion, 10) < 4.4) {
appiumLegacy = true;
} else {
browserName = 'Browser';
}
}
var config = {
name: 'CrossTester - ' + displayName
};
if (!osVersion) {
if (osName === 'Windows' && browserName === 'Internet Explorer') {
osVersion = osVersionForBrowser.ie[browser.version];
}
if (osName === 'Windows' && browserName === 'MicrosoftEdge') {
osVersion = osVersionForBrowser.edge[browser.version];
}
if (osName === 'OS X' && browserName === 'Safari') {
osVersion = osVersionForBrowser.safari[browser.version];
}
}
if (appium) {
(0, _lodash.assign)(config, {
browserName: browserName,
deviceOrientation: 'portrait',
deviceName: deviceName
});
if (appiumLegacy) {
(0, _lodash.assign)(config, {
platform: 'Linux',
version: osVersion
});
} else {
(0, _lodash.assign)(config, {
platformName: osName,
platformVersion: osVersion,
appiumVersion: '1.4.16'
});
}
} else {
(0, _lodash.assign)(config, {
browserName: browserName,
version: browser.version,
platform: osName + (osVersion ? ' ' + osVersion : '')
});
}
console.log(config);
return config;
}

@@ -27,4 +27,3 @@ #!/usr/bin/env node

},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -36,4 +35,3 @@ 'Mozilla Firefox': {

},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -43,6 +41,7 @@ 'Microsoft Internet Explorer': {

versions: {
latest: '11'
latest: '11',
previous: '10',
old: '9'
},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -52,6 +51,7 @@ 'Apple Safari': {

versions: {
latest: '9'
latest: '9',
previous: '8',
old: '7'
},
os: 'OS X',
osVersion: '10.11'
os: 'OS X'
},

@@ -64,4 +64,3 @@ 'Microsoft Edge': {

},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -85,8 +84,4 @@ 'Safari Mobile': {

versions: {
'Lollipop': {
osVersion: '5.0'
},
'Kitkat': {
osVersion: 'KitKat'
}
'Lollipop': '5.0',
'Jelly Bean': 'Jelly Bean'
}

@@ -93,0 +88,0 @@ }

{
"name": "cross-tester",
"version": "3.0.0",
"version": "3.1.0",
"description": "Utility for automated cross-browser testing with SauceLabs",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -82,6 +82,12 @@ import {

})
.map(({ test, browser }) =>
() =>
.map(({ test, browser }) => {
const browserName = browser.displayName;
function print(message) {
return andReturn(() => Promise.resolve(verbose ? console.log(`${browserName} - ${message}`) : 0));
}
return () =>
Promise.resolve()
.then(print(`starting testing session in browser ${browser.displayName}`))
.then(print('starting'))
.then(test.enter())

@@ -103,3 +109,3 @@ .then(print('connected'))

]).then(([results, logs]) => ({
browser: browser.displayName,
browser: browserName,
results,

@@ -117,3 +123,3 @@ logs

return {
browser: browser.displayName,
browser: browserName,
results: [{

@@ -126,4 +132,4 @@ type: 'FAIL',

})
.then(print(`testing session in browser ${browser.displayName} finished`))
);
.then(print('finished'));
});

@@ -141,7 +147,2 @@ // run all tests with some concurrency

);
function print(message) {
return andReturn(() => Promise.resolve(verbose ? console.log(message) : 0));
}
}

@@ -7,2 +7,4 @@ import webdriver from 'browserstack-webdriver';

import { assign } from 'lodash';
import * as osVersionForBrowser from '../system-browsers';
import { numberToName as osxVersions } from '../osx-versions';

@@ -318,4 +320,15 @@

// ex. MS Edge likes return arrays as object with numeric keys
return () => driver.executeScript(`return JSON.stringify(${RESULTS_ARRAY_NAME});`)
.then((json) => JSON.parse(json));
// on the other hand, strngification fails in IE 9, so we need a fallback
return () => driver.executeScript(`try {
return JSON.stringify(${RESULTS_ARRAY_NAME});
} catch(err) {
return ${RESULTS_ARRAY_NAME};
}`)
.then((jsonOrNot) => {
try {
return JSON.parse(jsonOrNot);
} catch(err) {
return jsonOrNot;
}
});
}

@@ -412,12 +425,5 @@

const osVersion = (({
'OS X': {
'10.6': 'Snow Leopard',
'10.7': 'Lion',
'10.8': 'Mountain Lion',
'10.9': 'Mavericks',
'10.10': 'Yosemite',
'10.11': 'El Capitan'
}
})[osName] || {})[browser.osVersion.toLowerCase()] || browser.osVersion;
let osVersion = osName === 'MAC' ?
osxVersions[browser.osVersion.toLowerCase()] :
browser.osVersion;

@@ -427,2 +433,3 @@ let appium = false;

if ((browserName === 'Safari') && (['iphone', 'ipad'].indexOf((deviceName || '').split(' ')[0]) !== -1)) {
// Safari on iOS
browserName = 'iPad';

@@ -455,2 +462,3 @@ appium = true;

} else if (browserName === 'Android') {
// Android Browser
appium = true;

@@ -475,2 +483,17 @@

if (!osVersion) {
if ((osName === 'Windows') && (browserName === 'Internet Explorer')) {
osVersion = osVersionForBrowser.ie[browser.version];
}
if ((osName === 'Windows') && (browserName === 'MicrosoftEdge')) {
osVersion = osVersionForBrowser.edge[browser.version];
}
if ((osName === 'OS X') && (browserName === 'Safari')) {
osVersion = osVersionForBrowser.safari[browser.version];
osVersion = osxVersions[osVersion] || osVersion;
}
}
const config = {

@@ -477,0 +500,0 @@ name: `CrossTester - ${displayName}`

@@ -6,2 +6,4 @@ import webdriver from 'wd';

import request from 'request-promise';
import { assign } from 'lodash';
import * as osVersionForBrowser from '../system-browsers';

@@ -111,3 +113,3 @@

const DEFAULT_TIMEOUT = 60 * 1000;
const DEFAULT_TIMEOUT = 300 * 1000;
const chromeLogMessagePattern = /^(javascript|(?:(?:https?|chrome-extension)\:\/\/\S+))\s+(\d+:\d+)\s+(.*)$/i;

@@ -307,4 +309,15 @@ const firefoxAddonLogPattern = /^(\d{13})\t(\S*(?:addons|extensions)\S*)\t([A-Z]+)\t(.*)\n?$/i;

// ex. MS Edge likes return arrays as object with numeric keys
return () => driver.execute(`return JSON.stringify(${RESULTS_ARRAY_NAME});`)
.then((json) => JSON.parse(json));
// on the other hand, strngification fails in IE 9, so we need a fallback
return () => driver.execute(`try {
return JSON.stringify(${RESULTS_ARRAY_NAME});
} catch(err) {
return ${RESULTS_ARRAY_NAME};
}`)
.then((jsonOrNot) => {
try {
return JSON.parse(jsonOrNot);
} catch(err) {
return jsonOrNot;
}
});
}

@@ -373,3 +386,3 @@

export function parseBrowser(browser, displayName) {
const browserName = ({
let browserName = ({
'microsoft edge': 'MicrosoftEdge',

@@ -380,10 +393,22 @@ 'edge': 'MicrosoftEdge',

'mozilla firefox': 'firefox',
'ff': 'firefox'
'ff': 'firefox',
'apple safari': 'Safari',
'ios safari': 'Safari',
'safari mobile': 'Safari',
'iphone': 'Safari',
'ipad': 'Safari',
'android browser': 'Android'
})[browser.name.toLowerCase()] || browser.name;
const osName = ({
'mac': 'OS X'
let osName = ({
'win': 'Windows',
'windows': 'Windows',
'mac': 'OS X',
'os x': 'OS X',
'ios': 'iOS',
'android': 'Android',
'linux': 'Linux'
})[browser.os.toLowerCase()] || browser.os;
const osVersion = (({
let osVersion = (({
'OS X': {

@@ -399,9 +424,97 @@ 'Snow Leopard': '10.6',

return {
name: `CrossTester - ${displayName}`,
browserName: browserName,
version: browser.version,
platform: osName + (browser.hasOwnProperty('osVersion') && ('undefined' !== typeof osVersion) ? ` ${osVersion}` : ''),
device: browser.device
let appium = false;
let appiumLegacy = false;
let deviceName = (browser.device || '').toLowerCase();
if ((browserName === 'Safari') && (['iphone', 'ipad'].indexOf((deviceName || '').split(' ')[0]) !== -1)) {
// Safari on iOS
osName = 'iOS';
appium = true;
if (deviceName === 'iphone') {
deviceName = 'iPhone Simulator';
}
if (deviceName === 'ipad') {
deviceName = 'iPad Simulator';
}
} else if (browserName === 'Android') {
// Android Browser
osName = 'Android';
appium = true;
// find device based on OS version
if (!deviceName) {
deviceName = 'Android Emulator';
}
if (!osVersion) {
osVersion = browser.version;
}
if (isNaN(parseFloat(osVersion, 10))) {
// find numeric version by name
osVersion = ({
'lolipop': '5.1',
'kitkat': '4.4',
'jelly bean': '4.3',
'ice cream sandwich': '4.0'
})[osVersion.toLowerCase()];
}
// for some reason platform is different for older Androids
if (parseFloat(osVersion, 10) < 4.4) {
appiumLegacy = true;
} else {
browserName = 'Browser';
}
}
const config = {
name: `CrossTester - ${displayName}`
};
if (!osVersion) {
if ((osName === 'Windows') && (browserName === 'Internet Explorer')) {
osVersion = osVersionForBrowser.ie[browser.version];
}
if ((osName === 'Windows') && (browserName === 'MicrosoftEdge')) {
osVersion = osVersionForBrowser.edge[browser.version];
}
if ((osName === 'OS X') && (browserName === 'Safari')) {
osVersion = osVersionForBrowser.safari[browser.version];
}
}
if (appium) {
assign(config, {
browserName: browserName,
deviceOrientation: 'portrait',
deviceName
});
if (appiumLegacy) {
assign(config, {
platform: 'Linux',
version: osVersion
});
} else {
assign(config, {
platformName: osName,
platformVersion: osVersion,
appiumVersion: '1.4.16'
});
}
} else {
assign(config, {
browserName: browserName,
version: browser.version,
platform: osName + (osVersion ? ` ${osVersion}` : ''),
});
}
console.log(config);
return config;
}

@@ -18,4 +18,3 @@ #!/usr/bin/env node

},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -27,4 +26,3 @@ 'Mozilla Firefox': {

},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -34,6 +32,7 @@ 'Microsoft Internet Explorer': {

versions: {
latest: '11'
latest: '11',
previous: '10',
old: '9'
},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -43,6 +42,7 @@ 'Apple Safari': {

versions: {
latest: '9'
latest: '9',
previous: '8',
old: '7'
},
os: 'OS X',
osVersion: '10.11'
os: 'OS X'
},

@@ -55,4 +55,3 @@ 'Microsoft Edge': {

},
os: 'Windows',
osVersion: '10'
os: 'Windows'
},

@@ -76,8 +75,4 @@ 'Safari Mobile': {

versions: {
'Lollipop': {
osVersion: '5.0'
},
'Kitkat': {
osVersion: 'KitKat'
}
'Lollipop': '5.0',
'Jelly Bean': 'Jelly Bean'
}

@@ -84,0 +79,0 @@ }