Socket
Socket
Sign inDemoInstall

karma-chrome-launcher

Package Overview
Dependencies
4
Maintainers
4
Versions
28
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.12 to 0.2.0

CHANGELOG.md

160

index.js

@@ -1,33 +0,33 @@

var fs = require('fs'),
path = require('path'),
which = require('which');
var fsAccess = require('fs-access')
var path = require('path')
var which = require('which')
function isJSFlags(flag) {
return flag.indexOf('--js-flags=') === 0;
function isJSFlags (flag) {
return flag.indexOf('--js-flags=') === 0
}
function sanitizeJSFlags(flag) {
var test = /--js-flags=(['"])/.exec(flag);
function sanitizeJSFlags (flag) {
var test = /--js-flags=(['"])/.exec(flag)
if (!test) {
return flag;
return flag
}
var escapeChar = test[1];
var endExp = new RegExp(escapeChar + '$');
var startExp = new RegExp('--js-flags=' + escapeChar);
return flag.replace(startExp, '--js-flags=').replace(endExp, '');
var escapeChar = test[1]
var endExp = new RegExp(escapeChar + '$')
var startExp = new RegExp('--js-flags=' + escapeChar)
return flag.replace(startExp, '--js-flags=').replace(endExp, '')
}
var ChromeBrowser = function(baseBrowserDecorator, args) {
baseBrowserDecorator(this);
var ChromeBrowser = function (baseBrowserDecorator, args) {
baseBrowserDecorator(this)
var flags = args.flags || [];
var flags = args.flags || []
this._getOptions = function(url) {
this._getOptions = function (url) {
// Chrome CLI options
// http://peter.sh/experiments/chromium-command-line-switches/
flags.forEach(function(flag, i) {
flags.forEach(function (flag, i) {
if (isJSFlags(flag)) {
flags[i] = sanitizeJSFlags(flag);
flags[i] = sanitizeJSFlags(flag)
}
});
})

@@ -41,56 +41,56 @@ return [

'--disable-translate'
].concat(flags, [url]);
};
};
].concat(flags, [url])
}
}
// Return location of chrome.exe file for a given Chrome directory (available: "Chrome", "Chrome SxS").
function getChromeExe(chromeDirName) {
function getChromeExe (chromeDirName) {
// Only run these checks on win32
if (process.platform !== 'win32') {
return null;
return null
}
var windowsChromeDirectory, i, prefix;
var suffix = '\\Google\\' + chromeDirName + '\\Application\\chrome.exe';
var prefixes = [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)']];
var windowsChromeDirectory, i, prefix
var suffix = '\\Google\\' + chromeDirName + '\\Application\\chrome.exe'
var prefixes = [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)']]
for (i = 0; i < prefixes.length; i++) {
prefix = prefixes[i];
prefix = prefixes[i]
try {
windowsChromeDirectory = path.join(prefix, suffix);
fs.accessSync(windowsChromeDirectory);
return windowsChromeDirectory;
windowsChromeDirectory = path.join(prefix, suffix)
fsAccess.sync(windowsChromeDirectory)
return windowsChromeDirectory
} catch (e) {}
}
return windowsChromeDirectory;
return windowsChromeDirectory
}
function getBin(commands) {
function getBin (commands) {
// Don't run these checks on win32
if (process.platform !== 'linux') {
return null;
return null
}
var bin, i;
var bin, i
for (i = 0; i < commands.length; i++) {
try {
if (which.sync(commands[i])) {
bin = commands[i];
break;
bin = commands[i]
break
}
} catch (e) {}
}
return bin;
return bin
}
function getChromeDarwin(defaultPath) {
function getChromeDarwin (defaultPath) {
if (process.platform !== 'darwin') {
return null;
return null
}
try {
var homePath = path.join(process.env.HOME, defaultPath);
fs.accessSync(homePath);
return homePath;
var homePath = path.join(process.env.HOME, defaultPath)
fsAccess.sync(homePath)
return homePath
} catch (e) {
return defaultPath;
return defaultPath
}

@@ -110,29 +110,29 @@ }

ENV_CMD: 'CHROME_BIN'
};
}
ChromeBrowser.$inject = ['baseBrowserDecorator', 'args'];
ChromeBrowser.$inject = ['baseBrowserDecorator', 'args']
function canaryGetOptions(url, args, parent) {
function canaryGetOptions (url, args, parent) {
// disable crankshaft optimizations, as it causes lot of memory leaks (as of Chrome 23.0)
var flags = args.flags || [];
var augmentedFlags;
var customFlags = '--nocrankshaft --noopt';
var flags = args.flags || []
var augmentedFlags
var customFlags = '--nocrankshaft --noopt'
flags.forEach(function(flag) {
flags.forEach(function (flag) {
if (isJSFlags(flag)) {
augmentedFlags = sanitizeJSFlags(flag) + ' ' + customFlags;
augmentedFlags = sanitizeJSFlags(flag) + ' ' + customFlags
}
});
})
return parent.call(this, url).concat([augmentedFlags || '--js-flags=' + customFlags]);
return parent.call(this, url).concat([augmentedFlags || '--js-flags=' + customFlags])
}
var ChromeCanaryBrowser = function(baseBrowserDecorator, args) {
ChromeBrowser.apply(this, arguments);
var ChromeCanaryBrowser = function (baseBrowserDecorator, args) {
ChromeBrowser.apply(this, arguments)
var parentOptions = this._getOptions;
this._getOptions = function(url) {
return canaryGetOptions.call(this, url, args, parentOptions);
};
};
var parentOptions = this._getOptions
this._getOptions = function (url) {
return canaryGetOptions.call(this, url, args, parentOptions)
}
}

@@ -148,25 +148,25 @@ ChromeCanaryBrowser.prototype = {

ENV_CMD: 'CHROME_CANARY_BIN'
};
}
ChromeCanaryBrowser.$inject = ['baseBrowserDecorator', 'args'];
ChromeCanaryBrowser.$inject = ['baseBrowserDecorator', 'args']
var DartiumBrowser = function() {
ChromeBrowser.apply(this, arguments);
var DartiumBrowser = function () {
ChromeBrowser.apply(this, arguments)
var checkedFlag = '--checked';
var dartFlags = process.env.DART_FLAGS || '';
var flags = dartFlags.split(' ');
if (flags.indexOf(checkedFlag) === -1) {
flags.push(checkedFlag);
process.env.DART_FLAGS = flags.join(' ');
}
};
var checkedFlag = '--checked'
var dartFlags = process.env.DART_FLAGS || ''
var flags = dartFlags.split(' ')
if (flags.indexOf(checkedFlag) === -1) {
flags.push(checkedFlag)
process.env.DART_FLAGS = flags.join(' ')
}
}
DartiumBrowser.prototype = {
name: 'Dartium',
DEFAULT_CMD: {},
ENV_CMD: 'DARTIUM_BIN'
};
name: 'Dartium',
DEFAULT_CMD: {},
ENV_CMD: 'DARTIUM_BIN'
}
DartiumBrowser.$inject = ['baseBrowserDecorator', 'args'];
DartiumBrowser.$inject = ['baseBrowserDecorator', 'args']

@@ -178,3 +178,3 @@ // PUBLISH DI MODULE

'launcher:Dartium': ['type', DartiumBrowser]
};
}

@@ -185,2 +185,2 @@ module.exports.test = {

canaryGetOptions: canaryGetOptions
};
}
{
"name": "karma-chrome-launcher",
"version": "0.1.12",
"version": "0.2.0",
"description": "A Karma plugin. Launcher for Chrome and Chrome Canary.",

@@ -20,2 +20,3 @@ "main": "index.js",

"dependencies": {
"fs-access": "^1.0.0",
"which": "^1.0.9"

@@ -25,7 +26,19 @@ },

"devDependencies": {
"grunt": "~0.4.1",
"grunt-npm": "~0.0.2",
"grunt-bump": "~0.0.6",
"grunt-auto-release": "~0.0.2",
"jasmine-node": "~1.14.5"
"chai": "^3.0.0",
"eslint": "^0.23.0",
"eslint-config-standard": "^3.3.0",
"grunt": "^0.4.1",
"grunt-auto-release": "^0.0.6",
"grunt-bump": "^0.3.1",
"grunt-conventional-changelog": "^1.2.2",
"grunt-eslint": "^15.0.0",
"grunt-karma": "^0.11.1",
"grunt-npm": "^0.0.2",
"grunt-simple-mocha": "^0.4.0",
"jasmine-node": "^1.14.5",
"karma": "^0.12.36",
"karma-mocha": "^0.2.0",
"load-grunt-tasks": "^3.2.0",
"mocha": "^2.2.5",
"sinon": "^1.15.3"
},

@@ -36,5 +49,7 @@ "contributors": [

"Friedel Ziegelmayer <friedel.ziegelmayer@gmail.com>",
"dignifiedquire <dignifiedquire@gmail.com>",
"Filipe Guerra <alias.mac@gmail.com>",
"Aymeric Beaumet <aymeric@beaumet.me>",
"Filipe Guerra <alias.mac@gmail.com>",
"Jeff Cross <middlefloor@gmail.com>",
"Julien Sanchez <julien.sanchez@lim.eu>",
"Marko Vuksanovic <markovuksanovic@gmail.com>",
"Michał Gołębiowski <m.goleb@gmail.com>",

@@ -44,6 +59,5 @@ "Michał Gołębiowski <m.goleb@gmail.com>",

"Timo Tijhof <krinklemail@gmail.com>",
"Marko Vuksanovic <markovuksanovic@gmail.com>",
"Joe Doyle <valdain@gmail.com>",
"Julien Sanchez <julien.sanchez@lim.eu>"
"Jeff Cross <middlefloor@gmail.com>",
"Joe Doyle <valdain@gmail.com>"
]
}
# karma-chrome-launcher
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/karma-runner/karma-chrome-launcher)
[![npm version](https://img.shields.io/npm/v/karma-chrome-launcher.svg?style=flat-square)](https://www.npmjs.com/package/karma-chrome-launcher) [![npm downloads](https://img.shields.io/npm/dm/karma-chrome-launcher.svg?style=flat-square)](https://www.npmjs.com/package/karma-chrome-launcher)
[![Build Status](https://img.shields.io/travis/karma-runner/karma-chrome-launcher/master.svg?style=flat-square)](https://travis-ci.org/karma-runner/karma-chrome-launcher) [![Dependency Status](https://img.shields.io/david/karma-runner/karma-chrome-launcher.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-chrome-launcher) [![devDependency Status](https://img.shields.io/david/dev/karma-runner/karma-chrome-launcher.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-chrome-launcher#info=devDependencies)
> Launcher for Google Chrome and Google Chrome Canary.

@@ -7,18 +12,11 @@

The easiest way is to keep `karma-chrome-launcher` as a devDependency in your `package.json`.
```json
{
"devDependencies": {
"karma": "~0.10",
"karma-chrome-launcher": "~0.1"
}
}
```
The easiest way is to keep `karma-chrome-launcher` as a devDependency in your `package.json`,
by running
You can simple do it by:
```bash
npm install karma-chrome-launcher --save-dev
$ npm install karma-chrome-launcher --save-dev
```
## Configuration
```js

@@ -37,9 +35,10 @@ // karma.conf.js

}
});
};
})
}
```
You can pass list of browsers as a CLI argument too:
```bash
karma start --browsers Chrome,Chrome_without_security
$ karma start --browsers Chrome,Chrome_without_security
```

@@ -46,0 +45,0 @@

@@ -1,51 +0,53 @@

var launcher = require('../index');
var expect = require('chai').expect
var sinon = require('sinon')
describe('isJSFlags()', function() {
var isJSFlags = launcher.test.isJSFlags;
var launcher = require('../index')
it('should return true if flag begins with --js-flags=', function() {
expect(isJSFlags('--js-flags=--expose-gc')).toBe(true);
expect(isJSFlags('--js-flags="--expose-gc"')).toBe(true);
expect(isJSFlags("--js-flags='--expose-gc'")).toBe(true);
});
describe('isJSFlags()', function () {
var isJSFlags = launcher.test.isJSFlags
it('should return false if flag does not begin with --js-flags=', function(){
expect(isJSFlags(' --js-flags=--expose-gc')).toBe(false);
expect(isJSFlags('--js-flags"--expose-gc"')).toBe(false);
expect(isJSFlags('--jsflags="--expose-gc"')).toBe(false);
});
});
it('should return true if flag begins with --js-flags=', function () {
expect(isJSFlags('--js-flags=--expose-gc')).to.be.eql(true)
expect(isJSFlags('--js-flags="--expose-gc"')).to.be.eql(true)
expect(isJSFlags("--js-flags='--expose-gc'")).to.be.eql(true)
})
it('should return false if flag does not begin with --js-flags=', function () {
expect(isJSFlags(' --js-flags=--expose-gc')).to.be.eql(false)
expect(isJSFlags('--js-flags"--expose-gc"')).to.be.eql(false)
expect(isJSFlags('--jsflags="--expose-gc"')).to.be.eql(false)
})
})
describe('sanitizeJSFlags()', function() {
var sanitizeJSFlags = launcher.test.sanitizeJSFlags;
describe('sanitizeJSFlags()', function () {
var sanitizeJSFlags = launcher.test.sanitizeJSFlags
it('should do nothing if flags are not contained in quotes', function() {
expect(sanitizeJSFlags('--js-flags=--expose-gc')).toBe('--js-flags=--expose-gc');
});
it('should do nothing if flags are not contained in quotes', function () {
expect(sanitizeJSFlags('--js-flags=--expose-gc')).to.be.eql('--js-flags=--expose-gc')
})
it('should symmetrically remove single or double quote if wraps all flags', function() {
expect(sanitizeJSFlags("--js-flags='--expose-gc'")).toBe("--js-flags=--expose-gc");
expect(sanitizeJSFlags('--js-flags="--expose-gc"')).toBe('--js-flags=--expose-gc');
});
it('should symmetrically remove single or double quote if wraps all flags', function () {
expect(sanitizeJSFlags("--js-flags='--expose-gc'")).to.be.eql('--js-flags=--expose-gc')
expect(sanitizeJSFlags('--js-flags="--expose-gc"')).to.be.eql('--js-flags=--expose-gc')
})
it('should NOT remove anything if the flags are not contained within quote', function() {
expect(sanitizeJSFlags('--js-flags=--expose-gc="true"')).toBe('--js-flags=--expose-gc="true"');
expect(sanitizeJSFlags("--js-flags=--expose-gc='true'")).toBe("--js-flags=--expose-gc='true'");
});
});
it('should NOT remove anything if the flags are not contained within quote', function () {
expect(sanitizeJSFlags('--js-flags=--expose-gc="true"')).to.be.eql('--js-flags=--expose-gc="true"')
expect(sanitizeJSFlags("--js-flags=--expose-gc='true'")).to.be.eql("--js-flags=--expose-gc='true'")
})
})
describe('canaryGetOptions', function() {
var canaryGetOptions = launcher.test.canaryGetOptions;
describe('canaryGetOptions', function () {
var canaryGetOptions = launcher.test.canaryGetOptions
it('should return a merged version of --js-flags', function() {
var parent = jasmine.createSpy('parent').andReturn(['-incognito']);
var context = {};
var url = 'http://localhost:9876';
var args = {flags: ['--js-flags="--expose-gc"']};
expect(canaryGetOptions.call(context, url, args, parent)).toEqual([
it('should return a merged version of --js-flags', function () {
var parent = sinon.stub().returns(['-incognito'])
var context = {}
var url = 'http://localhost:9876'
var args = {flags: ['--js-flags="--expose-gc"']}
expect(canaryGetOptions.call(context, url, args, parent)).to.be.eql([
'-incognito',
'--js-flags=--expose-gc --nocrankshaft --noopt'
]);
});
});
])
})
})
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc