From cc74e26f581115c041f4e5ff2c632c206e10c541 Mon Sep 17 00:00:00 2001 From: Ram Pasala Date: Tue, 14 Nov 2017 23:59:07 +0530 Subject: [PATCH 1/3] chore(protractor-typescript-cucumber):cucumber 3.x support --- protractor-typescript-cucumber/.gitignore | 3 +- protractor-typescript-cucumber/README.md | 40 +- .../config/config.ts | 23 +- .../config/environment.ts | 12 +- .../images/report.png | Bin 0 -> 105756 bytes protractor-typescript-cucumber/package.json | 35 +- .../pages/calcPage.ts | 26 +- .../stepdefinitions/calcSteps.ts | 36 +- .../support/hooks.ts | 31 +- .../support/reporter.ts | 33 ++ protractor-typescript-cucumber/tsconfig.json | 5 +- protractor-typescript-cucumber/tslint.json | 28 + protractor-typescript-cucumber/yarn.lock | 505 ++++++++++++------ .../protractorTypeScriptCucumber_spec.ts | 36 +- 14 files changed, 528 insertions(+), 285 deletions(-) create mode 100644 protractor-typescript-cucumber/images/report.png create mode 100644 protractor-typescript-cucumber/support/reporter.ts create mode 100644 protractor-typescript-cucumber/tslint.json diff --git a/protractor-typescript-cucumber/.gitignore b/protractor-typescript-cucumber/.gitignore index 26ec594..e972a2e 100644 --- a/protractor-typescript-cucumber/.gitignore +++ b/protractor-typescript-cucumber/.gitignore @@ -1,3 +1,4 @@ .vscode/ node_modules/ -tmp/ +typeScript/ +reports/ diff --git a/protractor-typescript-cucumber/README.md b/protractor-typescript-cucumber/README.md index f61e92d..13f1f2e 100644 --- a/protractor-typescript-cucumber/README.md +++ b/protractor-typescript-cucumber/README.md @@ -1,8 +1,9 @@ -###Protractor-Cucumber-TypeScript Setup Guide +## Protractor-Cucumber-TypeScript Setup Guide This project demonstrates the basic protractor-cucumber-typescript framework project setup. -###Features +### Features + * No typings.json or typings folder, they have been replaced by better **'@types'** modules in package.json * ts-node(typescript execution environment for node) in cucumberOpts. * All scripts written with Typescript2.0 & Cucumber2.0 @@ -11,10 +12,10 @@ This project demonstrates the basic protractor-cucumber-typescript framework pro * Extensive hooks implemented for BeforeFeature, AfterScenarios etc. * Screenshots on failure feature scenarios +### To Get Started -###To Get Started +#### Pre-requisites -####Pre-requisites 1.NodeJS installed globally in the system. https://nodejs.org/en/download/ @@ -22,14 +23,18 @@ https://nodejs.org/en/download/ 3.Text Editor(Optional) installed-->Sublime/Visual Studio Code/Brackets. -####Setup Scripts +#### Setup Scripts + * run following command from terminal/command prompt + ``` - npm install +npm install ``` + * All the dependencies from package.json and ambient typings would be installed in node_modules folder. -####Setup & Run TestApp +#### Setup & Run TestApp + ``` cd .. cd testapp/ @@ -38,13 +43,28 @@ cd testapp/ npm start ``` +#### Start Selenium Server + +``` +npm run webdriver-update && npm run webdriver-start +``` + +#### Run Scripts -####Run Scripts ``` - npm test +npm test ``` + * The above command should create an output folder named 'tmp' and transpile the .ts files. * It launches the Firefox Browser and run the scripts -##Contributions +### Report + +**json** & **html** reports are auto-generated in the `reports` folder when you run `npm test`. Currently this project has been integrated with [cucumber-html-reporter](https://github.com/gkushang/cucumber-html-reporter). +They can be customized according to user's specific needs. + +report.png + +## Contributions + For contributors who want to improve this repo by contributing some code, reporting bugs, issues or improving documentation - PR's are highly welcome, please maintain the coding style , folder structure , detailed description of documentation and bugs/issues with examples if possible. \ No newline at end of file diff --git a/protractor-typescript-cucumber/config/config.ts b/protractor-typescript-cucumber/config/config.ts index 43d085e..91a0c7e 100644 --- a/protractor-typescript-cucumber/config/config.ts +++ b/protractor-typescript-cucumber/config/config.ts @@ -1,5 +1,7 @@ -import { environment } from './environment'; import { browser, Config } from 'protractor'; +import { Reporter } from '../support/reporter'; +import { environment } from './environment'; +const jsonReports = process.cwd() + '/reports/json'; /* The config folder includes all the configuration files @@ -12,21 +14,28 @@ export let config: Config = { baseUrl: environment.baseUrl, capabilities: environment.capabilities, framework: 'custom', + SELENIUM_PROMISE_MANAGER: false, frameworkPath: require.resolve('protractor-cucumber-framework'), specs: [ - '../../features/*.feature' + '../../features/*.feature', ], // This utility function helps prepare our scripts with required actions like browser maximize onPrepare: () => { browser.driver.manage().window().maximize(); + Reporter.createDirectory(jsonReports); }, // These are various cucumber compiler options cucumberOpts: { - compiler: "ts:ts-node/register", - format: ["pretty"], + compiler: 'ts:ts-node/register', + format: 'json:./reports/json/cucumber_report.json', require: ['../../stepdefinitions/*.ts', '../../support/*.ts'], - //tags help us execute specific scenarios of feature files - tags: '@AddScenario or @SubtractScenario or @MultiplyScenario or @DivideScenario or @ModulusScenario' - } + strict: true, + // tags help us execute specific scenarios of feature files + tags: '@AddScenario or @SubtractScenario or @MultiplyScenario or @DivideScenario or @ModulusScenario', + }, + + onComplete: () => { + Reporter.createHTMLReport(); + }, }; diff --git a/protractor-typescript-cucumber/config/environment.ts b/protractor-typescript-cucumber/config/environment.ts index f9d2f69..095e51e 100644 --- a/protractor-typescript-cucumber/config/environment.ts +++ b/protractor-typescript-cucumber/config/environment.ts @@ -1,16 +1,16 @@ -let webServerDefaultPort = 8080; +const port = 8080; export let environment = { // Capabilities to be passed to the webdriver instance. capabilities: { - 'browserName': + browserName: (process.env.TEST_BROWSER_NAME || 'chrome'), - 'version': - (process.env.TEST_BROWSER_VERSION || 'ANY') + version: + (process.env.TEST_BROWSER_VERSION || 'ANY'), }, // Default http port to host the web server - webServerDefaultPort: webServerDefaultPort, + webServerDefaultPort: port, // Protractor interactive tests interactiveTestPort: 6969, @@ -18,6 +18,6 @@ export let environment = { // A base URL for your application under test. baseUrl: 'http://' + (process.env.HTTP_HOST || 'localhost') + - ':' + (process.env.HTTP_PORT || webServerDefaultPort) + ':' + (process.env.HTTP_PORT || port), }; diff --git a/protractor-typescript-cucumber/images/report.png b/protractor-typescript-cucumber/images/report.png new file mode 100644 index 0000000000000000000000000000000000000000..1f56b00ca84d3ef82dd5ac39ff0664952c6c0dd3 GIT binary patch literal 105756 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ȔU%2s`9vKlPDTGn(Y}4Gmj;0#! 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 literal 0 HcmV?d00001 diff --git a/protractor-typescript-cucumber/package.json b/protractor-typescript-cucumber/package.json index f88f3ef..251277f 100644 --- a/protractor-typescript-cucumber/package.json +++ b/protractor-typescript-cucumber/package.json @@ -18,24 +18,29 @@ "automation testing" ], "scripts": { - "example": "protractor tmp/config/config.js", - "pretest": "npm run tsc", + "clean": "rimraf typeScript/", + "clean-build": "npm run clean && npm run tsc", + "example": "protractor typeScript/config/config.js", + "pretest": "npm run clean-build", "test": "npm run example", - "tsc": "tsc" + "tsc": "tsc", + "webdriver-update": "webdriver-manager update", + "webdriver-start": "webdriver-manager start" }, "author": "Ram Pasala ", - "dependencies": { - "protractor": "^5.1.1", - "ts-node": "^2.1.0", - "typescript": "^2.2.1" - }, "devDependencies": { - "@types/cucumber": "^0.0.38", - "@types/node": "^7.0.8", - "@types/selenium-webdriver": "~2.53.39", - "chai": "^3.5.0", - "chai-as-promised": "^6.0.0", - "cucumber": "^2.0.0-rc.8", - "protractor-cucumber-framework": "^1.0.1" + "@types/cucumber": "^2.0.4", + "@types/node": "^8.0.51", + "@types/selenium-webdriver": "^3.0.8", + "chai": "^4.1.2", + "chai-as-promised": "^7.1.1", + "cucumber": "^3.1.0", + "cucumber-html-reporter": "^3.0.4", + "mkdirp": "^0.5.1", + "protractor": "^5.2.0", + "protractor-cucumber-framework": "^4.1.1", + "rimraf": "^2.6.2", + "ts-node": "^3.3.0", + "typescript": "^2.6.1" } } diff --git a/protractor-typescript-cucumber/pages/calcPage.ts b/protractor-typescript-cucumber/pages/calcPage.ts index f45490a..46e88d9 100644 --- a/protractor-typescript-cucumber/pages/calcPage.ts +++ b/protractor-typescript-cucumber/pages/calcPage.ts @@ -3,20 +3,22 @@ import { $, by, element, ElementFinder } from 'protractor'; Page Objects help in better re-usablitity and maintenance of element locators This file exports CalculatorPageObject class **/ -export class CalculatorPageObject { - public first_operand:ElementFinder; - public second_operand:ElementFinder; +class CalculatorPageObject { + public get firstOperand(): ElementFinder { return element(by.model('first')); } + public get secondOperand(): ElementFinder { return element(by.model('second')); } + public get goButton(): ElementFinder { return element(by.id('gobutton')); } + public get result(): ElementFinder { return element(by.binding('latest')); } public operator: any; - public go_button: ElementFinder; - public result: ElementFinder; constructor() { - this.first_operand = element(by.model('first')); - this.second_operand = element(by.model('second')); - this.operator = (optor:string) => { - return element(by.cssContainingText('option',optor)); - } - this.go_button = element(by.id('gobutton')); - this.result = element(by.binding('latest')); + this.operator = (optor: string) => { + return element(by.cssContainingText('option', optor)); + }; } } + +/** + * Export the instance of page objects in order to + * reduce flakiness and stateless priciple + */ +export const CalculatorPage = new CalculatorPageObject(); diff --git a/protractor-typescript-cucumber/stepdefinitions/calcSteps.ts b/protractor-typescript-cucumber/stepdefinitions/calcSteps.ts index 729e064..a73581d 100644 --- a/protractor-typescript-cucumber/stepdefinitions/calcSteps.ts +++ b/protractor-typescript-cucumber/stepdefinitions/calcSteps.ts @@ -1,28 +1,24 @@ import { browser } from 'protractor'; -import { CalculatorPageObject } from '../pages/calcPage'; -import { defineSupportCode } from 'cucumber'; -let chai = require('chai').use(require('chai-as-promised')); -let expect = chai.expect; +import { CalculatorPage } from '../pages/calcPage'; +const {Given, When, Then} = require('cucumber'); +const chai = require('chai').use(require('chai-as-promised')); +const expect = chai.expect; /* StepDefinition files act as the glue code between config and feature files They drive the feature files from the background **/ -defineSupportCode(({Given, When, Then}) => { - let calc: CalculatorPageObject = new CalculatorPageObject(); - Given(/^I am on ng1 calculator page$/, () => { - return expect(browser.getTitle()).to.eventually.equal('Super Calculator'); - }); +Given(/^I am on ng1 calculator page$/, async () => { + await expect(browser.getTitle()).to.eventually.equal('Super Calculator'); +}); - When(/^I calculate "(.*?)" "(.*?)" "(.*?)"$/, (num1: string, optor: string, num2: string) => { - calc.first_operand.sendKeys(num1); - calc.operator(optor).click(); - calc.second_operand.sendKeys(num2); - return calc.go_button.click(); - }); - - Then(/^the result "(.*?)" should be displayed$/, (result: string) => { - return expect(calc.result.getText()).to.eventually.equal(result); - }); -}) +When(/^I calculate "(.*?)" "(.*?)" "(.*?)"$/, async (num1: string, optor: string, num2: string) => { + await CalculatorPage.firstOperand.sendKeys(num1); + await CalculatorPage.operator(optor).click(); + await CalculatorPage.secondOperand.sendKeys(num2); + await CalculatorPage.goButton.click(); +}); +Then(/^the result "(.*?)" should be displayed$/, async (result: string) => { + await expect(CalculatorPage.result.getText()).to.eventually.equal(result); +}); diff --git a/protractor-typescript-cucumber/support/hooks.ts b/protractor-typescript-cucumber/support/hooks.ts index 8bad51f..1d4df88 100644 --- a/protractor-typescript-cucumber/support/hooks.ts +++ b/protractor-typescript-cucumber/support/hooks.ts @@ -1,27 +1,20 @@ -/*jslint node: true*/ import { browser } from 'protractor'; -import { defineSupportCode } from "cucumber"; +const { BeforeAll, After, setDefaultTimeout, Status } = require('cucumber'); import * as fs from 'fs'; /* Hooks help us follow DRY principle, all the utility functions go here BeforeScenario, Features and screenshot hooks example provided here **/ -defineSupportCode(function ({registerHandler, After}) { +setDefaultTimeout(10 * 1000); - registerHandler('BeforeFeature', (event) => { - return browser.get('/ng1/calculator'); - }); +BeforeAll(async () => { + await browser.get('/ng1/calculator'); +}); - After((scenario, done) => { - if (scenario.isFailed()) { - return browser.takeScreenshot().then(function (base64png) { - let decodedImage = new Buffer(base64png, 'base64').toString('binary'); - scenario.attach(decodedImage, 'image/png'); - }, (err) => { - done(err); - }); - } else { - done(); - } - }); -}) +After(async (scenario) => { + if (scenario.result.status === Status.FAILED) { + // screenShot is a base-64 encoded PNG + const screenShot = await browser.takeScreenshot(); + this.attach(screenShot, 'image/png'); + } +}); diff --git a/protractor-typescript-cucumber/support/reporter.ts b/protractor-typescript-cucumber/support/reporter.ts new file mode 100644 index 0000000..c4ae73a --- /dev/null +++ b/protractor-typescript-cucumber/support/reporter.ts @@ -0,0 +1,33 @@ +import * as reporter from 'cucumber-html-reporter'; +import * as fs from 'fs'; +import * as mkdirp from 'mkdirp'; +import * as path from 'path'; +const jsonReports = path.join(process.cwd(), '/reports/json'); +const htmlReports = path.join(process.cwd(), '/reports/html'); +const targetJson = jsonReports + '/cucumber_report.json'; + +const cucumberReporterOptions = { + jsonFile: targetJson, + output: htmlReports + '/cucumber_reporter.html', + reportSuiteAsScenarios: true, + theme: 'bootstrap', +}; + +export class Reporter { + + public static createDirectory(dir: string) { + if (!fs.existsSync(dir)) { + mkdirp.sync(dir); + } + } + + public static createHTMLReport() { + try { + reporter.generate(cucumberReporterOptions); // invoke cucumber-html-reporter + } catch (err) { + if (err) { + throw new Error('Failed to save cucumber test results to json file.'); + } + } + } +} diff --git a/protractor-typescript-cucumber/tsconfig.json b/protractor-typescript-cucumber/tsconfig.json index 1a3a780..b6ee387 100644 --- a/protractor-typescript-cucumber/tsconfig.json +++ b/protractor-typescript-cucumber/tsconfig.json @@ -7,13 +7,14 @@ "declaration": false, "removeComments": false, "noImplicitAny": false, - "outDir": "tmp", + "outDir": "typeScript", "typeRoots": [ "./node_modules/@types" ], "types": [ "node", - "cucumber" + "cucumber", + "selenium-webdriver" ] }, "exclude": [ diff --git a/protractor-typescript-cucumber/tslint.json b/protractor-typescript-cucumber/tslint.json new file mode 100644 index 0000000..33b0ec9 --- /dev/null +++ b/protractor-typescript-cucumber/tslint.json @@ -0,0 +1,28 @@ +{ + "defaultSeverity": "error", + "extends": ["tslint:recommended"], + "jsRules": {}, + "rules": { + "no-duplicate-imports": true, + "no-duplicate-variable": true, + "no-var-keyword": true, + "no-var-requires": false, + "quotemark": [true, "single", "avoid-escape"], + "semicolon": [true], + "variable-name": [true, "ban-keywords"], + "no-console": [false], + "object-literal-sort-keys": false, + "max-line-length": [true, 200], + "trailing-comma": [ + true, + { + "multiline": { + "objects": "always", + "arrays": "always", + "functions": "never", + "typeLiterals": "ignore" + } + } + ] + } + } \ No newline at end of file diff --git a/protractor-typescript-cucumber/yarn.lock b/protractor-typescript-cucumber/yarn.lock index f64a83f..f4274bf 100644 --- a/protractor-typescript-cucumber/yarn.lock +++ b/protractor-typescript-cucumber/yarn.lock @@ -2,26 +2,34 @@ # yarn lockfile v1 -"@types/cucumber@^0.0.38": - version "0.0.38" - resolved "https://registry.yarnpkg.com/@types/cucumber/-/cucumber-0.0.38.tgz#36c3988922de47119c2cd461b922fc24af36a1e7" +"@types/cucumber@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/cucumber/-/cucumber-2.0.4.tgz#fb2fc2cb972154a8feb5ceba4bc689686bc1fb05" "@types/node@^6.0.46": version "6.0.65" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.65.tgz#c00faa7ffcfc9842b5dd7bf650872562504d5670" -"@types/node@^7.0.8": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.8.tgz#25e4dd804b630c916ae671233e6d71f6ce18124a" +"@types/node@^8.0.51": + version "8.0.51" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb" "@types/q@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" -"@types/selenium-webdriver@^2.53.35", "@types/selenium-webdriver@~2.53.39": +"@types/selenium-webdriver@^2.53.35": version "2.53.42" resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz#74cb77fb6052edaff2a8984ddafd88d419f25cac" +"@types/selenium-webdriver@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.8.tgz#83de9dd7aaf25f7fbd967c0d4fcc8112746dbf31" + +"@types/selenium-webdriver@~2.53.39": + version "2.53.43" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz#2de3d718819bc20165754c4a59afb7e9833f6707" + adm-zip@0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736" @@ -52,7 +60,13 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -any-promise@^1.0.0, any-promise@^1.3.0: +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -123,6 +137,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +becke-ch--regex--s0-0-v1--base--pl--lib@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.2.0.tgz#2e73e9d21f2c2e6f5a5454045636f0ab93e46130" + blocking-proxy@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b" @@ -150,19 +168,22 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -chai-as-promised@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6" +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" dependencies: check-error "^1.0.2" -chai@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" +chai@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" dependencies: assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" + check-error "^1.0.1" + deep-eql "^3.0.0" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" @@ -174,7 +195,15 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -check-error@^1.0.2: +chalk@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +check-error@^1.0.1, check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -188,6 +217,16 @@ co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -216,7 +255,11 @@ core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" -core-util-is@1.0.2: +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -226,17 +269,30 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cucumber-expressions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-3.0.0.tgz#4cf424813dae396cc9dab714b8104b459befc32c" +cucumber-expressions@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-5.0.3.tgz#7494860afd51309ba91088fb5d1af9a9897b7c7e" + dependencies: + becke-ch--regex--s0-0-v1--base--pl--lib "^1.2.0" + +cucumber-html-reporter@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/cucumber-html-reporter/-/cucumber-html-reporter-3.0.4.tgz#1be0dee83f30a2f4719207859a5440ce082ffadd" + dependencies: + find "^0.2.7" + fs-extra "^3.0.1" + js-base64 "^2.3.2" + jsonfile "^3.0.0" + lodash "^4.17.2" + open "0.0.5" cucumber-tag-expressions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-1.0.0.tgz#5dc27ae3073acde1db3aa7cf4d9609a42f15ee5d" -cucumber@^2.0.0-rc.8: - version "2.0.0-rc.8" - resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-2.0.0-rc.8.tgz#6da26dbccfb2e766826d8c09f1486b35b93b5d58" +cucumber@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-3.1.0.tgz#13886bce87e9018ecb57999bb00c03a1bfa58d5d" dependencies: assertion-error-formatter "^2.0.0" babel-runtime "^6.11.6" @@ -244,21 +300,24 @@ cucumber@^2.0.0-rc.8: cli-table "^0.3.1" colors "^1.1.2" commander "^2.9.0" - cucumber-expressions "^3.0.0" + cucumber-expressions "^5.0.0" cucumber-tag-expressions "^1.0.0" duration "^0.2.0" + escape-string-regexp "^1.0.5" figures "2.0.0" - gherkin "^4.0.0" + gherkin "^5.0.0" glob "^7.0.0" indent-string "^3.1.0" is-generator "^1.0.2" is-stream "^1.1.0" lodash "^4.0.0" mz "^2.4.0" - stack-chain "^1.3.5" - stacktrace-js "^1.3.0" + progress "^2.0.0" + resolve "^1.3.3" + stack-chain "^2.0.0" + stacktrace-js "^2.0.0" string-argv "0.0.2" - upper-case-first "^1.1.2" + title-case "^2.1.1" util-arity "^1.0.2" verror "^1.9.0" @@ -274,17 +333,23 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@2, debug@^2.2.0: +debug@2: version "2.6.1" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" dependencies: ms "0.7.2" -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +deep-eql@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" dependencies: - type-detect "0.1.1" + type-detect "^4.0.0" del@^2.2.0: version "2.2.2" @@ -319,17 +384,11 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292" +error-stack-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.1.tgz#a3202b8fb03114aa9b40a0e3669e48b2b65a010a" dependencies: - stackframe "^0.3.1" + stackframe "^1.0.3" es5-ext@^0.10.7, es5-ext@~0.10.11, es5-ext@~0.10.2: version "0.10.12" @@ -346,6 +405,10 @@ es6-iterator@2: es5-ext "^0.10.7" es6-symbol "3" +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + es6-symbol@3, es6-symbol@~3.1: version "3.1.0" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" @@ -379,6 +442,12 @@ figures@2.0.0: dependencies: escape-string-regexp "^1.0.5" +find@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/find/-/find-0.2.7.tgz#7afbd00f8f08c5b622f97cda6f714173d547bb3f" + dependencies: + traverse-chain "~0.1.0" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -391,19 +460,31 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" +fs-extra@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + getpass@^0.1.1: version "0.1.6" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" dependencies: assert-plus "^1.0.0" -gherkin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-4.0.0.tgz#79dce04d1223ea43b4862a76be5ce8f89c12c32c" +gherkin@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-5.0.1.tgz#9e42816cd188ceefd2cc72d564ebe2cffbdfb9dc" glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: version "7.1.1" @@ -427,6 +508,10 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -448,6 +533,10 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -461,6 +550,12 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -477,6 +572,10 @@ https-proxy-agent@^1.0.0: debug "2" extend "3" +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + indent-string@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" @@ -488,7 +587,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -496,10 +595,6 @@ ini@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - is-generator@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" @@ -528,9 +623,9 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" isstream@~0.1.2: version "0.1.2" @@ -548,9 +643,9 @@ jasmine@^2.5.3: glob "^7.0.6" jasmine-core "~2.5.2" -jasminewd2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91" +jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" jodid25519@^1.0.0: version "1.0.2" @@ -558,6 +653,10 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" +js-base64@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -576,6 +675,12 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -588,10 +693,30 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -lodash@^4.0.0: +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + dependencies: + immediate "~3.0.5" + +lodash@^4.0.0, lodash@^4.17.2: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + make-error@^1.1.1: version "1.2.3" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.2.3.tgz#6c4402df732e0977ac6faf754a5074b3d2b1d19d" @@ -630,6 +755,10 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + mz@^2.4.0: version "2.6.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.6.0.tgz#c8b8521d958df0a4f2768025db69c719ee4ef1ce" @@ -638,6 +767,12 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -652,6 +787,10 @@ once@^1.3.0: dependencies: wrappy "1" +open@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" + optimist@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -663,7 +802,7 @@ options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" -os-tmpdir@~1.0.1: +os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -673,11 +812,13 @@ pad-right@^0.2.2: dependencies: repeat-string "^1.5.2" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" +pako@~1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" path-is-absolute@^1.0.0: version "1.0.1" @@ -687,6 +828,14 @@ path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -701,22 +850,30 @@ pinkie-promise@^2.0.0: dependencies: pinkie "^2.0.0" -pinkie@^2.0.0, pinkie@^2.0.4: +pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -protractor-cucumber-framework@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/protractor-cucumber-framework/-/protractor-cucumber-framework-1.0.1.tgz#2f82edacd1856879981f8255322a18b78d90cbf3" +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +protractor-cucumber-framework@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/protractor-cucumber-framework/-/protractor-cucumber-framework-4.1.1.tgz#c77e197b99c8c212754665aabbdd81991e85305a" dependencies: - debug "^2.2.0" + debug "^3.1.0" glob "^7.0.3" - object-assign "^4.0.1" q "^1.4.1" + tmp "^0.0.33" -protractor@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986" +protractor@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.2.0.tgz#d3f39b195e85f3539ad9d8cb6560a9d2b63297c4" dependencies: "@types/node" "^6.0.46" "@types/q" "^0.0.32" @@ -725,14 +882,14 @@ protractor@^5.1.1: chalk "^1.1.3" glob "^7.0.3" jasmine "^2.5.3" - jasminewd2 "^2.0.0" + jasminewd2 "^2.1.0" optimist "~0.6.0" q "1.4.1" saucelabs "~1.3.0" - selenium-webdriver "3.0.1" + selenium-webdriver "3.6.0" source-map-support "~0.4.0" webdriver-js-extender "^1.0.0" - webdriver-manager "^12.0.1" + webdriver-manager "^12.0.6" punycode@^1.4.1: version "1.4.1" @@ -746,6 +903,17 @@ qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + regenerator-runtime@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" @@ -781,12 +949,24 @@ request@^2.78.0: tunnel-agent "^0.6.0" uuid "^3.0.0" +resolve@^1.3.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4: version "2.6.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: glob "^7.0.5" +rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" @@ -805,11 +985,11 @@ sax@>=0.6.0: version "1.2.2" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" -selenium-webdriver@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7" +selenium-webdriver@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" dependencies: - adm-zip "^0.4.7" + jszip "^3.1.3" rimraf "^2.5.4" tmp "0.0.30" xml2js "^0.4.17" @@ -863,43 +1043,43 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -stack-chain@^1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" +stack-chain@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-2.0.0.tgz#d73d1172af89565f07438b5bcc086831b6689b2d" -stack-generator@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-1.1.0.tgz#36f6a920751a6c10f499a13c32cbb5f51a0b8b25" +stack-generator@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.2.tgz#3c13d952a596ab9318fec0669d0a1df8b87176c7" dependencies: - stackframe "^1.0.2" - -stackframe@^0.3.1, stackframe@~0.3: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" + stackframe "^1.0.4" -stackframe@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.2.tgz#162245509c687d328b14f671dab8fdb755b1e1e8" +stackframe@^1.0.3, stackframe@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" -stacktrace-gps@^2.4.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-2.4.4.tgz#69c827e9d6d6f41cf438d7f195e2e3cbfcf28c44" +stacktrace-gps@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz#33f8baa4467323ab2bd1816efa279942ba431ccc" dependencies: source-map "0.5.6" - stackframe "~0.3" + stackframe "^1.0.4" -stacktrace-js@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-1.3.1.tgz#67cab2589af5c417b962f7369940277bb3b6a18b" +stacktrace-js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.0.tgz#776ca646a95bc6c6b2b90776536a7fc72c6ddb58" dependencies: - error-stack-parser "^1.3.6" - stack-generator "^1.0.7" - stacktrace-gps "^2.4.3" + error-stack-parser "^2.0.1" + stack-generator "^2.0.1" + stacktrace-gps "^3.0.1" string-argv@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -910,11 +1090,9 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" strip-json-comments@^2.0.0: version "2.0.1" @@ -924,6 +1102,12 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -936,6 +1120,13 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +title-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + tmp@0.0.24: version "0.0.24" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12" @@ -946,36 +1137,42 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: punycode "^1.4.1" -ts-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-2.1.0.tgz#aa2bf4b2e25c5fb6a7c54701edc3666d3a9db25d" +traverse-chain@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" + +ts-node@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" dependencies: arrify "^1.0.0" - chalk "^1.1.1" + chalk "^2.0.0" diff "^3.1.0" make-error "^1.1.1" minimist "^1.2.0" mkdirp "^0.5.1" - pinkie "^2.0.4" source-map-support "^0.4.0" - tsconfig "^5.0.2" - v8flags "^2.0.11" - xtend "^4.0.0" - yn "^1.2.0" + tsconfig "^6.0.0" + v8flags "^3.0.0" + yn "^2.0.0" -tsconfig@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a" +tsconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" dependencies: - any-promise "^1.3.0" - parse-json "^2.2.0" - strip-bom "^2.0.0" + strip-bom "^3.0.0" strip-json-comments "^2.0.0" tunnel-agent@^0.6.0: @@ -988,49 +1185,43 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" +type-detect@^4.0.0: + version "4.0.5" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - -typescript@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9" +typescript@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" -upper-case-first@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" - dependencies: - upper-case "^1.1.1" +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" -upper-case@^1.1.1: +upper-case@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - util-arity@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -v8flags@^2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" +v8flags@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b" dependencies: - user-home "^1.1.1" + homedir-polyfill "^1.0.1" verror@1.3.6: version "1.3.6" @@ -1053,9 +1244,9 @@ webdriver-js-extender@^1.0.0: "@types/selenium-webdriver" "^2.53.35" selenium-webdriver "^2.53.2" -webdriver-manager@^12.0.1: - version "12.0.3" - resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.0.3.tgz#b4a0a1391ceb7e147ea035a393bc1c61143fc656" +webdriver-manager@^12.0.6: + version "12.0.6" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.0.6.tgz#3df1a481977010b4cbf8c9d85c7a577828c0e70b" dependencies: adm-zip "^0.4.7" chalk "^1.1.1" @@ -1104,10 +1295,6 @@ xmlbuilder@>=1.0.0, xmlbuilder@^4.1.0: dependencies: lodash "^4.0.0" -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -yn@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63" +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" diff --git a/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts b/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts index d585db3..c7b8de9 100644 --- a/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts +++ b/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts @@ -24,40 +24,8 @@ describe('protractor typescript cucumber', () => { it('console output', () => { let findLines = [ - '@AddScenario', - 'Scenario: Add two numbers', - '✔ Given I am on ng1 calculator page', - '✔ When I calculate "3" "+" "5"', - '✔ Then the result "8" should be displayed', - - '@SubtractScenario', - 'Scenario: Subtract two numbers', - '✔ Given I am on ng1 calculator page', - '✔ When I calculate "7" "-" "5"', - '✔ Then the result "2" should be displayed', - 'Feature: To test the modulus feature of ng1 calculator', - - '@ModulusScenario', - 'Scenario: Modulus of two numbers', - '✔ Given I am on ng1 calculator page', - '✔ When I calculate "6" "%" "4"', - '✔ Then the result "2" should be displayed', - - 'Feature: To test the multiply & divide feature of ng1 calculator', - '@MultiplyScenario', - 'Scenario: Multiply two numbers', - '✔ Given I am on ng1 calculator page', - '✔ When I calculate "3" "*" "5"', - '✔ Then the result "15" should be displayed', - - '@DivideScenario', - 'Scenario: Divide two numbers', - '✔ Given I am on ng1 calculator page', - '✔ When I calculate "10" "/" "5"', - '✔ Then the result "2" should be displayed', - - '5 passed', - '15 passed' + '5 scenarios (5 passed)', + '15 steps (15 passed)' ]; expect(lines).not.toBeNull(); expect(TestUtils.checkContents(lines, findLines)).toBeTruthy(); From ae33e818ceea33c089f9a5f9be1c9349851ac6da Mon Sep 17 00:00:00 2001 From: Ram Pasala Date: Wed, 15 Nov 2017 00:37:24 +0530 Subject: [PATCH 2/3] updated to current node lts version & corrected cucumber spec --- circle.yml | 2 +- .../protractorTypeScriptCucumber_spec.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/circle.yml b/circle.yml index 6941942..27e0efd 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,6 @@ machine: node: - version: 7.5.0 + version: 8.9.1 environment: # Fix issue with selenium-server in containers. # See http://github.com/SeleniumHQ/docker-selenium/issues/87 diff --git a/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts b/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts index c7b8de9..f97ac66 100644 --- a/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts +++ b/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts @@ -19,13 +19,14 @@ describe('protractor typescript cucumber', () => { if (output[1]) { let contents = output[1].toString(); lines = contents.split('\n'); + console.log(lines); } }); it('console output', () => { let findLines = [ - '5 scenarios (5 passed)', - '15 steps (15 passed)' + '5 scenarios', + '15 steps' ]; expect(lines).not.toBeNull(); expect(TestUtils.checkContents(lines, findLines)).toBeTruthy(); From 51b172810f44c95f0532113d852f58cc1cb472f6 Mon Sep 17 00:00:00 2001 From: Ram Pasala Date: Wed, 15 Nov 2017 00:42:51 +0530 Subject: [PATCH 3/3] removed console log --- .../protractorTypeScriptCucumber_spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts b/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts index f97ac66..d0d4869 100644 --- a/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts +++ b/tests/protractor-typescript-cucumber/protractorTypeScriptCucumber_spec.ts @@ -19,7 +19,6 @@ describe('protractor typescript cucumber', () => { if (output[1]) { let contents = output[1].toString(); lines = contents.split('\n'); - console.log(lines); } });