Skip to content

Commit

Permalink
Merge 8b31208 into ed74b21
Browse files Browse the repository at this point in the history
  • Loading branch information
Arnaud Dezandee authored and Arnaud Dezandee committed Jul 17, 2015
2 parents ed74b21 + 8b31208 commit 9a754fa
Show file tree
Hide file tree
Showing 7 changed files with 114 additions and 9 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
sudo: false
language: node_js
node_js:
- '0.12'
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ The npm module for this library is maintained by:

[MIT](LICENSE)

# Inspired

This module is inspired by PHP [Behat/MinkExtension](https://github.com/Behat/MinkExtension).

<a href="http://js.org" target="_blank" title="JS.ORG | JavaScript Community">
<img src="http://logo.js.org/dark_horz.png" width="102" alt="JS.ORG Logo"/>
</a>
Expand Down
3 changes: 3 additions & 0 deletions bin/cucumber-mink
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env node

require('../lib/cli/cli.js').run();
65 changes: 65 additions & 0 deletions lib/cli/cli.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
var path = require('path');

var yargs = require('yargs');
var Cucumber = require('cucumber');
var _ = require('lodash');

var rewire = require('./rewire.js');
var inject = require('./support/mink_inject.js');
var pkg = require('../../package.json');

function cucumberJsArgv(minkArgv) {
return minkArgv
.concat(supportMinkInjection())
.concat(supportCodeArgv(minkArgv));
}

function supportCodeArgv(minkArgv) {
var parser = Cucumber.Cli.ArgumentParser(minkArgv);
parser.parse();

return _.chain(parser.getSupportCodeFilePaths())
.map(function(sfp) {
return ['--require', sfp];
})
.flatten()
.value();
}

function supportMinkInjection() {
var injectPath = path.resolve(__dirname, './support/mink_inject.js');
var parameters = {
driver: {
logLevel: 'silent',
desiredCapabilities: {
browserName: 'chrome'
},
port: 4444
}
};

rewire(injectPath, inject(parameters));

return ['--require', injectPath];
}

exports.process = function() {
return yargs
.usage('Usage: cucumber-mink [options] [[FILE|DIR][:LINE]]+')
.help('h')
.alias('h', 'help')
.version(pkg.version)
.alias('v', 'version')
.argv;
};

exports.run = function() {
exports.process();

Cucumber.Cli(cucumberJsArgv(process.argv)).run(function(success) {
if (!success) {
process.stderr.write('Test suite failed !');
process.exit(1);
}
});
};
22 changes: 22 additions & 0 deletions lib/cli/rewire.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
var Module = require('module')
, originalLoader = Module._load
, intercept = {};

Module._load = function(request /*, parent*/) {
if (intercept.hasOwnProperty(request)) {
return intercept[request];
}

return originalLoader.apply(this, arguments);
};

function startMocking(path, mockExport) {
intercept[path] = mockExport;
}

function stopMocking(path) {
delete intercept[path];
}

module.exports = startMocking;
module.exports.stop = stopMocking;
6 changes: 6 additions & 0 deletions lib/cli/support/mink_inject.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = function(parameters) {
return function() {
var Mink = require('../../mink.js');
Mink.init(this, parameters);
};
};
22 changes: 13 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
"url": "http://github.com/Adezandee/cucumber-mink/issues"
},
"main": "./index.js",
"bin": {
"cucumber-mink": "./bin/cucumber-mink"
},
"scripts": {
"start": "node test/site/server.js",
"pretest": "gulp lint",
Expand All @@ -37,20 +40,21 @@
"node": ">= 0.10"
},
"dependencies": {
"async": "^0.9.2",
"chai": "^2.3.0",
"async": "^1.3.0",
"chai": "^3.0.0",
"cucumber": "^0.4.9",
"debug": "^2.2.0",
"lodash": "^3.8.0",
"webdriverio": "^2.4.5"
"lodash": "^3.10.0",
"webdriverio": "^2.4.5",
"yargs": "^3.15.0"
},
"devDependencies": {
"cucumber": "^0.4.9",
"gulp": "^3.8.11",
"gulp-eslint": "^0.12.0",
"gulp": "^3.9.0",
"gulp-eslint": "^0.15.0",
"gulp-header": "^1.2.2",
"gulp-if": "^1.2.5",
"hapi": "^8.4.0",
"istanbul": "^0.3.14",
"hapi": "^8.8.0",
"istanbul": "^0.3.17",
"swig": "^1.4.2"
}
}

0 comments on commit 9a754fa

Please sign in to comment.