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/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 0000000..1f56b00 Binary files /dev/null and b/protractor-typescript-cucumber/images/report.png differ 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..d0d4869 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', + '15 steps' ]; expect(lines).not.toBeNull(); expect(TestUtils.checkContents(lines, findLines)).toBeTruthy();