Skip to content

Commit

Permalink
Merge 80058fc into 8da0f8d
Browse files Browse the repository at this point in the history
  • Loading branch information
Arnaud Dezandee committed Apr 5, 2017
2 parents 8da0f8d + 80058fc commit 9ee74da
Show file tree
Hide file tree
Showing 16 changed files with 106 additions and 101 deletions.
11 changes: 7 additions & 4 deletions .travis.yml
@@ -1,4 +1,5 @@
sudo: false
dist: trusty
language: node_js

notifications:
Expand All @@ -14,14 +15,16 @@ branches:

node_js:
- "6"
- "4"

addons:
firefox: "latest"
apt:
packages:
- google-chrome-stable

before_install:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3

install:
- npm install -g webdriver-manager
Expand Down
48 changes: 25 additions & 23 deletions package.json
Expand Up @@ -47,37 +47,37 @@
"protractor": "protractor protractor.cucumber.js"
},
"dependencies": {
"bluebird": "3.4.6",
"bluebird": "3.5.0",
"chai": "3.5.0",
"cucumber": "1.2.2",
"debug": "2.2.0",
"cucumber": "1.3.2",
"debug": "2.6.3",
"immutable": "3.8.1",
"lodash.defaultsdeep": "4.6.0",
"meow": "3.7.0",
"util-arity": "1.0.2",
"webdriverio": "4.2.11"
"util-arity": "1.1.0",
"webdriverio": "4.6.2"
},
"devDependencies": {
"babel-cli": "~6.14.0",
"babel-cli": "~6.24.0",
"babel-plugin-add-module-exports": "~0.2.1",
"babel-plugin-transform-object-rest-spread": "~6.8.0",
"babel-preset-es2015": "~6.14.0",
"babel-register": "~6.14.0",
"body-parser": "~1.15.2",
"coveralls": "~2.11.12",
"cz-conventional-changelog": "~1.2.0",
"eslint": "~3.4.0",
"eslint-config-airbnb-base": "~5.0.3",
"eslint-plugin-import": "~1.14.0",
"express": "~4.14.0",
"babel-plugin-transform-object-rest-spread": "~6.23.0",
"babel-preset-es2015": "~6.24.0",
"babel-register": "~6.24.0",
"body-parser": "~1.17.1",
"coveralls": "~2.13.0",
"cz-conventional-changelog": "~2.0.0",
"eslint": "~3.19.0",
"eslint-config-airbnb-base": "~11.1.3",
"eslint-plugin-import": "~2.2.0",
"express": "~4.15.2",
"isparta": "~4.0.0",
"jest-mock": "~15.0.0",
"jest-mock": "~19.0.0",
"lodash.range": "~3.2.0",
"mocha": "~3.0.2",
"morgan": "~1.7.0",
"protractor": "~4.0.4",
"protractor-cucumber-framework": "~0.6.0",
"semantic-release": "~4.3.5",
"mocha": "~3.2.0",
"morgan": "~1.8.1",
"protractor": "~5.1.1",
"protractor-cucumber-framework": "~1.0.2",
"semantic-release": "~6.3.2",
"swig": "~1.4.2"
},
"eslintConfig": {
Expand All @@ -94,7 +94,9 @@
"new-cap": 0,
"global-require": 0,
"func-names": 0,
"import/no-extraneous-dependencies": 0
"import/no-extraneous-dependencies": 0,
"import/extensions": 0,
"class-methods-use-this": 0
}
},
"babel": {
Expand Down
2 changes: 1 addition & 1 deletion protractor.cucumber.js
Expand Up @@ -2,7 +2,7 @@ exports.config = {
baseUrl: 'http://localhost:3000',
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
browserName: 'firefox',
browserName: 'chrome',
},
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
Expand Down
2 changes: 1 addition & 1 deletion src/cli.js
Expand Up @@ -29,7 +29,7 @@ const cli = meow(`
`, {
default: {
inject: true,
browser: 'firefox',
browser: 'chrome',
port: 4444,
},
boolean: ['inject'],
Expand Down
24 changes: 12 additions & 12 deletions src/drivers/protractor.js
Expand Up @@ -81,7 +81,7 @@ const UNICODE_CHARACTERS = {
'Zenkaku_Hankaku': '\uE040',
};

const checkUnicode = (value) => (
const checkUnicode = value => (
{}.hasOwnProperty.call(UNICODE_CHARACTERS, value)
? [UNICODE_CHARACTERS[value]]
: value.split('')
Expand Down Expand Up @@ -115,8 +115,8 @@ export default class ProtractorDriver {
if (selector) {
const locator = this.by.css(selector);
return this.browser.element.all(locator)
.map(el => el.getOuterHtml())
.then(item => {
.map(el => this.browser.executeScript('return arguments[0].outerHTML;', el))
.then((item) => {
if (Array.isArray(item)) return item.join('');
return item;
});
Expand All @@ -128,7 +128,7 @@ export default class ProtractorDriver {
const locator = this.by.css(selector);
return this.browser.element.all(locator)
.map(el => el.getText())
.then(item => {
.then((item) => {
if (Array.isArray(item)) return item.join('');
return item;
});
Expand All @@ -151,7 +151,7 @@ export default class ProtractorDriver {
keys = key.reduce((acc, it) => acc.concat(checkUnicode(it)), []);
}
const locator = this.by.css(selector);
return this.browser.findElement(locator).then((el) => (
return this.browser.findElement(locator).then(el => (
el.click().then(() => el.sendKeys(...keys))
));
}
Expand All @@ -168,29 +168,29 @@ export default class ProtractorDriver {
elementsWithText(selector, text) {
return this.elements(selector)
.then(items => Promise.filter(items, el =>
el.getText().then(result => result === text)
el.getText().then(result => result === text),
));
}

elementsWithValue(selector, value) {
return this.elements(selector)
.then(items => Promise.filter(items, el =>
el.getAttribute('value').then(result => result === value)
el.getAttribute('value').then(result => result === value),
));
}

button(mixed) {
return detectSeries(
[
() => this.elements(mixed).catch(err => {
() => this.elements(mixed).catch((err) => {
debug(err);
return [];
}),
() => this.elementsWithText('button', mixed),
() => this.elementsWithValue('input[type=submit]', mixed),
],
fn => fn(),
WebElements => !!WebElements.length
WebElements => !!WebElements.length,
).then(({ result }) => {
if (!result) throw new Error('Button not found !');
return result[0];
Expand All @@ -200,14 +200,14 @@ export default class ProtractorDriver {
link(mixed) {
return detectSeries(
[
() => this.elements(mixed).catch(err => {
() => this.elements(mixed).catch((err) => {
debug(err);
return [];
}),
() => this.elementsWithText('body a', mixed),
],
fn => fn(),
WebElements => !!WebElements.length
WebElements => !!WebElements.length,
).then(({ result }) => {
if (!result) throw new Error('Link not found !');
return result[0];
Expand Down Expand Up @@ -245,7 +245,7 @@ export default class ProtractorDriver {
}

saveScreenshot(filename) {
return this.browser.takeScreenshot().then(png => {
return this.browser.takeScreenshot().then((png) => {
const screenshot = new Buffer(png, 'base64');
if (typeof filename === 'string') {
fs.writeFileSync(filename, screenshot);
Expand Down
24 changes: 12 additions & 12 deletions src/drivers/webdriverio.js
Expand Up @@ -36,14 +36,14 @@ class WdIODriver {
if (!selector) {
return this.client.getSource();
}
return this.client.getHTML(selector).then(item => {
return this.client.getHTML(selector).then((item) => {
if (Array.isArray(item)) return item.join('');
return item;
});
}

text(selector) {
return this.client.getText(selector).then(item => {
return this.client.getText(selector).then((item) => {
if (Array.isArray(item)) return item.join('');
return item;
});
Expand All @@ -52,15 +52,15 @@ class WdIODriver {
url(input) {
if (!input) {
return this.client.getUrl().then(text =>
url.parse(text)
url.parse(text),
);
}
return this.client.url(input);
}

sendKey(selector, key) {
return this.client.click(selector).then(() =>
this.client.keys(key)
this.client.keys(key),
);
}

Expand All @@ -79,7 +79,7 @@ class WdIODriver {
.then(items => Promise.filter(items, WebElement =>
this.client
.elementIdText(WebElement.ELEMENT)
.then(result => result.value === text)
.then(result => result.value === text),
));
}

Expand All @@ -88,22 +88,22 @@ class WdIODriver {
.then(items => Promise.filter(items, WebElement =>
this.client
.elementIdAttribute(WebElement.ELEMENT, 'value')
.then(result => result.value === value)
.then(result => result.value === value),
));
}

button(mixed) {
return detectSeries(
[
() => this.elements(mixed).catch(err => {
() => this.elements(mixed).catch((err) => {
debug(err);
return [];
}),
() => this.elementsWithText('button', mixed),
() => this.elementsWithValue('input[type=submit]', mixed),
],
fn => fn(),
WebElements => !!WebElements.length
WebElements => !!WebElements.length,
).then(({ result }) => {
if (!result) throw new Error('Button not found !');
return result[0];
Expand All @@ -113,14 +113,14 @@ class WdIODriver {
link(mixed) {
return detectSeries(
[
() => this.elements(mixed).catch(err => {
() => this.elements(mixed).catch((err) => {
debug(err);
return [];
}),
() => this.elementsWithText('body a', mixed),
],
fn => fn(),
WebElements => !!WebElements.length
WebElements => !!WebElements.length,
).then(({ result }) => {
if (!result) throw new Error('Link not found !');
return result[0];
Expand All @@ -145,9 +145,9 @@ class WdIODriver {
'isExisting',
'isSelected',
'isVisible',
]).forEach(method => {
]).forEach((method) => {
WdIODriver.prototype[method] = function (...args) {
return this.client[method].apply(this, args);
return Promise.resolve(this.client[method].apply(this, args));
};
});

Expand Down
12 changes: 6 additions & 6 deletions src/mink.js
Expand Up @@ -37,7 +37,7 @@ const DEFAULT_PARAMS = {
},
baseUrl: process.env.BASE_URL,
desiredCapabilities: {
browserName: 'firefox',
browserName: 'chrome',
},
logLevel: 'silent',
port: 4444,
Expand Down Expand Up @@ -100,7 +100,7 @@ class Mink {

if (this.cucumber) {
const wrappedFn = arity(fn.length, (...args) =>
Promise.try(() => fn.apply(this, args))
Promise.try(() => fn.apply(this, args)),
);
this.cucumber.defineStep(pattern, wrappedFn);
}
Expand Down Expand Up @@ -168,17 +168,17 @@ class Mink {
*/
registerHooks(cucumber, driver) {
cucumber.registerHandler('BeforeFeatures', (/* event */) =>
driver.init().then(() =>
driver.init().then(() => (
driver.setViewportSize(driver.parameters.viewportSize)
)
)),
);

cucumber.registerHandler('AfterFeatures', (/* event */) =>
driver.end()
driver.end(),
);

if (driver.parameters.screenshotPath) {
cucumber.After(event => {
cucumber.After((event) => {
if (!event.isFailed()) return null;

const fileName = [event.getName() || 'Error', ':', event.getLine(), '.png'].join('');
Expand Down
4 changes: 2 additions & 2 deletions src/step_definitions/action.js
Expand Up @@ -21,14 +21,14 @@ const submit = function (selector) {
};

const press = function (selector) {
return this.driver.button(selector).then(item => {
return this.driver.button(selector).then((item) => {
if (!item) throw new Error(Errors.ACTION.CLICK_BUTTON);
return this.driver.click(item);
});
};

const follow = function (selector) {
return this.driver.link(selector).then(item => {
return this.driver.link(selector).then((item) => {
if (!item) throw new Error(Errors.ACTION.CLICK_LINK);
return this.driver.click(item);
});
Expand Down

0 comments on commit 9ee74da

Please sign in to comment.