From d630365c72130fc247882ea02baf9ea31f522cec Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 19:42:49 -0400 Subject: [PATCH 1/8] Start on cypress --- .gitignore | 2 + cypress.json | 3 + cypress/.eslintrc.js | 29 ++ cypress/integration/test.shepherd.js | 24 + cypress/plugins/index.js | 17 + cypress/support/commands.js | 25 ++ cypress/support/index.js | 20 + docs/welcome/index.html | 16 +- package.json | 15 +- test/.eslintrc.js | 4 +- yarn.lock | 643 +++++++++++++++++++++++++-- 11 files changed, 751 insertions(+), 47 deletions(-) create mode 100644 cypress.json create mode 100644 cypress/.eslintrc.js create mode 100644 cypress/integration/test.shepherd.js create mode 100644 cypress/plugins/index.js create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/index.js diff --git a/.gitignore b/.gitignore index 154d824ab..048a1f8a4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ /.log/ /.nyc_output/ /coverage/ +/cypress/**/examples/ +/cypress/videos/ /dist/ /node_modules/ /.DS_Store diff --git a/cypress.json b/cypress.json new file mode 100644 index 000000000..60ed5aa53 --- /dev/null +++ b/cypress.json @@ -0,0 +1,3 @@ +{ + "video": false +} diff --git a/cypress/.eslintrc.js b/cypress/.eslintrc.js new file mode 100644 index 000000000..acfb3294b --- /dev/null +++ b/cypress/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 2017, + sourceType: 'module' + }, + plugins: [ + 'mocha' + ], + extends: [ + 'eslint:recommended', + 'plugin:mocha/recommended' + ], + globals: { + cy: false, + document: false, + window: false, + assert: false, + Shepherd: false + }, + env: { + browser: false, + mocha: true, + node: true + }, + rules: { + 'no-console': 'off' + } +}; diff --git a/cypress/integration/test.shepherd.js b/cypress/integration/test.shepherd.js new file mode 100644 index 000000000..4d6bb0739 --- /dev/null +++ b/cypress/integration/test.shepherd.js @@ -0,0 +1,24 @@ +describe('Shepherd Acceptance Tests', () => { + beforeEach(() => { + cy.visit('http://localhost:8080/docs/welcome/'); + }) + + it('next/previous buttons work', () => { + // Step one text should be visible + cy.get('.shepherd-text') + .contains('Shepherd is a javascript library').should('be.visible'); + // Click next + cy.contains('Next').click(); + // Step two text should be visible + cy.get('.shepherd-text') + .contains('Including Shepherd is easy!').should('be.visible'); + // Step one text should be hidden + cy.get('.shepherd-text') + .contains('Shepherd is a javascript library').should('not.be.visible'); + // Click back + cy.contains('Back').click(); + // Step one text should be visible again + cy.get('.shepherd-text') + .contains('Shepherd is a javascript library').should('be.visible'); + }); +}); \ No newline at end of file diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js new file mode 100644 index 000000000..fd170fba6 --- /dev/null +++ b/cypress/plugins/index.js @@ -0,0 +1,17 @@ +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 000000000..c1f5a772e --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,25 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add("login", (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This is will overwrite an existing command -- +// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/cypress/support/index.js b/cypress/support/index.js new file mode 100644 index 000000000..d68db96df --- /dev/null +++ b/cypress/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/docs/welcome/index.html b/docs/welcome/index.html index 5f6bd4a4a..764c45fdb 100644 --- a/docs/welcome/index.html +++ b/docs/welcome/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -66,18 +66,18 @@

Example

- +
- - + + - - + + diff --git a/package.json b/package.json index 49ba82c32..4d2af639d 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "build": "webpack && yarn copy-deps", "clean": "rm -rf dist", "copy-deps": "cp -R ./node_modules/popper.js/dist/umd/. dist/js", + "cy:open": "./node_modules/.bin/cypress open", + "cy:run": "./node_modules/.bin/cypress run", "prebuild:css": "node-sass --source-map true ./docs/welcome/sass/*.scss -o ./docs/welcome/css", "prefix:css": "postcss --use autoprefixer -b 'last 2 versions' < ./docs/welcome/css/welcome.css", "docs": "yarn build && yarn prebuild:css && yarn prefix:css", @@ -27,8 +29,12 @@ "lint:styles": "stylelint ./src/css/**/*.scss ./docs/welcome/sass/welcome.scss", "lint": "yarn lint:js && yarn lint:styles", "start": "webpack-dev-server --open", - "test:ci": "karma start --single-run --browsers ChromeHeadlessNoSandbox", - "test:watch": "karma start --browsers Chrome", + "start-test-server": "http-server", + "test:ci": "yarn test:unit:ci && yarn test:cy:ci", + "test:cy:ci": "start-server-and-test start-test-server http://localhost:8080 cy:run", + "test:cy:watch": "start-server-and-test start-test-server http://localhost:8080 cy:open", + "test:unit:ci": "karma start --single-run --browsers ChromeHeadlessNoSandbox", + "test:unit:watch": "karma start --browsers Chrome", "test": "mocha", "watch": "webpack --watch" }, @@ -39,8 +45,7 @@ "main": "shepherd.js" }, "dependencies": { - "popper.js": "^1.14.3", - "yarn": "^1.9.2" + "popper.js": "^1.14.3" }, "devDependencies": { "autoprefixer": "^9.1.0", @@ -51,6 +56,7 @@ "chai": "^4.1.2", "codeclimate-test-reporter": "^0.5.0", "css-loader": "^1.0.0", + "cypress": "^3.0.3", "del": "^3.0.0", "eslint": "^5.1.0", "eslint-plugin-mocha": "^5.1.0", @@ -73,6 +79,7 @@ "postcss-loader": "^2.1.6", "sass-loader": "^7.1.0", "source-map-loader": "^0.2.3", + "start-server-and-test": "^1.7.0", "style-loader": "^0.21.0", "stylelint": "^9.3.0", "stylelint-config-ship-shape": "^0.4.0", diff --git a/test/.eslintrc.js b/test/.eslintrc.js index e9dd5813b..f8d944c93 100644 --- a/test/.eslintrc.js +++ b/test/.eslintrc.js @@ -12,8 +12,8 @@ module.exports = { 'plugin:mocha/recommended' ], globals: { - document: true, - window: true, + document: false, + window: false, assert: false, Shepherd: false }, diff --git a/yarn.lock b/yarn.lock index a85e257c8..34e36c29c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,6 +78,22 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" +"@cypress/listr-verbose-renderer@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +"@cypress/xvfb@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.3.tgz#6319afdcdcff7d1505daeeaa84484d0596189860" + dependencies: + debug "^3.1.0" + lodash.once "^4.1.1" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -89,6 +105,64 @@ version "1.1.0" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" +"@types/blob-util@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/blob-util/-/blob-util-1.3.3.tgz#adba644ae34f88e1dd9a5864c66ad651caaf628a" + +"@types/bluebird@3.5.18": + version "3.5.18" + resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6" + +"@types/chai-jquery@1.1.35": + version "1.1.35" + resolved "https://registry.yarnpkg.com/@types/chai-jquery/-/chai-jquery-1.1.35.tgz#9a8f0a39ec0851b2768a8f8c764158c2a2568d04" + dependencies: + "@types/chai" "*" + "@types/jquery" "*" + +"@types/chai@*": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.4.tgz#5ca073b330d90b4066d6ce18f60d57f2084ce8ca" + +"@types/chai@4.0.8": + version "4.0.8" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.8.tgz#d27600e9ba2f371e08695d90a0fe0408d89c7be7" + +"@types/jquery@*": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.5.tgz#75cfec8c5ee38355d14296ada7e7e2fb8bd3ac2f" + +"@types/jquery@3.2.16": + version "3.2.16" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.2.16.tgz#04419c404a3194350e7d3f339a90e72c88db3111" + +"@types/lodash@4.14.87": + version "4.14.87" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.87.tgz#55f92183b048c2c64402afe472f8333f4e319a6b" + +"@types/minimatch@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + +"@types/mocha@2.2.44": + version "2.2.44" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e" + +"@types/sinon-chai@2.7.29": + version "2.7.29" + resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-2.7.29.tgz#4db01497e2dd1908b2bd30d1782f456353f5f723" + dependencies: + "@types/chai" "*" + "@types/sinon" "*" + +"@types/sinon@*": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-5.0.1.tgz#a15b36ec42f1f53166617491feabd1734cb03e21" + +"@types/sinon@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.0.0.tgz#9a93ffa4ee1329e85166278a5ed99f81dc4c8362" + "@webassemblyjs/ast@1.5.13": version "1.5.13" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25" @@ -299,7 +373,7 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.0: +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -339,6 +413,10 @@ amqplib@^0.5.2: readable-stream "1.x >=1.1.9" safe-buffer "^5.0.1" +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -524,6 +602,12 @@ async@1.x, async@^1.4.0, async@^1.5.2, async@~1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" + dependencies: + lodash "^4.14.0" + async@^2.0.0, async@^2.1.4, async@^2.5.0, async@~2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" @@ -594,6 +678,10 @@ aws4@^1.2.1, aws4@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + axios@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" @@ -1171,7 +1259,11 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.1: +bluebird@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +bluebird@3.5.1, bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -1352,6 +1444,10 @@ browserslist@^4.0.1: electron-to-chromium "^1.3.52" node-releases "^1.0.0-alpha.10" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1432,6 +1528,12 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cachedir@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-1.3.0.tgz#5e01928bf2d95b5edd94b0942188246740e0dbc4" + dependencies: + os-homedir "^1.0.1" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -1527,6 +1629,14 @@ chai@^4.1.2: pathval "^1.0.0" type-detect "^4.0.0" +chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -1537,14 +1647,6 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - character-entities-html4@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz#c44fdde3ce66b52e8d321d6c1bf46101f0150610" @@ -1573,6 +1675,10 @@ check-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" +check-more-types@2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" + chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" @@ -1602,6 +1708,10 @@ chrome-trace-event@^1.0.0: dependencies: tslib "^1.9.0" +ci-info@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1626,12 +1736,29 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: restore-cursor "^2.0.0" +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1743,12 +1870,16 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: delayed-stream "~1.0.0" +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + commander@2.15.1, commander@^2.9.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -1763,6 +1894,12 @@ commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +common-tags@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1805,6 +1942,14 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +concat-stream@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" @@ -1876,7 +2021,7 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" @@ -1965,7 +2110,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -2060,6 +2205,51 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" +cypress@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-3.0.3.tgz#b8d64d36a8c642f5343f826b6ebac312eed5a51d" + dependencies: + "@cypress/listr-verbose-renderer" "0.4.1" + "@cypress/xvfb" "1.2.3" + "@types/blob-util" "1.3.3" + "@types/bluebird" "3.5.18" + "@types/chai" "4.0.8" + "@types/chai-jquery" "1.1.35" + "@types/jquery" "3.2.16" + "@types/lodash" "4.14.87" + "@types/minimatch" "3.0.3" + "@types/mocha" "2.2.44" + "@types/sinon" "4.0.0" + "@types/sinon-chai" "2.7.29" + bluebird "3.5.0" + cachedir "1.3.0" + chalk "2.4.1" + check-more-types "2.24.0" + commander "2.11.0" + common-tags "1.4.0" + debug "3.1.0" + execa "0.10.0" + executable "4.1.1" + extract-zip "1.6.6" + fs-extra "4.0.1" + getos "3.1.0" + glob "7.1.2" + is-ci "1.0.10" + is-installed-globally "0.1.0" + lazy-ass "1.6.0" + listr "0.12.0" + lodash "4.17.10" + log-symbols "2.2.0" + minimist "1.2.0" + progress "1.1.8" + ramda "0.24.1" + request "2.87.0" + request-progress "0.3.1" + supports-color "5.1.0" + tmp "0.0.31" + url "0.11.0" + yauzl "2.8.0" + d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" @@ -2076,6 +2266,10 @@ data-uri-to-buffer@1: version "1.2.0" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" @@ -2401,6 +2595,10 @@ electron-to-chromium@^1.3.52: version "1.3.55" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.55.tgz#f150e10b20b77d9d41afcca312efe0c3b1a7fdce" +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -2713,6 +2911,18 @@ etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" +event-stream@~3.3.0: + version "3.3.4" + resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -2734,6 +2944,18 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -2752,6 +2974,16 @@ execall@^1.0.0: dependencies: clone-regexp "^1.0.0" +executable@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + dependencies: + pify "^2.2.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + expand-braces@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" @@ -2839,7 +3071,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@3, extend@~3.0.1: +extend@3, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -2882,6 +3114,15 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-zip@1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c" + dependencies: + concat-stream "1.6.0" + debug "2.6.9" + mkdirp "0.5.0" + yauzl "2.4.1" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -2933,6 +3174,19 @@ faye-websocket@~0.11.0: dependencies: websocket-driver ">=0.5.1" +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -3107,7 +3361,7 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" -form-data@~2.3.0, form-data@~2.3.1: +form-data@~2.3.0, form-data@~2.3.1, form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: @@ -3136,12 +3390,24 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + fs-access@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" dependencies: null-check "^1.0.0" +fs-extra@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3264,6 +3530,12 @@ get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" +getos@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.0.tgz#db3aa4df15a3295557ce5e81aa9e3e5cdfaa6567" + dependencies: + async "2.4.0" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -3325,6 +3597,12 @@ glob@^6.0.4: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + global-modules-path@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" @@ -3399,7 +3677,7 @@ gonzales-pe@4.2.3, gonzales-pe@^4.0.3: dependencies: minimist "1.1.x" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, 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" @@ -3456,6 +3734,13 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + dependencies: + ajv "^5.3.0" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3476,6 +3761,10 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3567,6 +3856,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3808,7 +4101,7 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -3931,6 +4224,12 @@ is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" +is-ci@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4037,6 +4336,13 @@ is-hexadecimal@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835" +is-installed-globally@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + is-my-ip-valid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" @@ -4189,6 +4495,10 @@ isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" +isemail@2.x.x: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4299,6 +4609,20 @@ istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" +items@2.x.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" + +joi@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-9.2.0.tgz#3385ac790192130cbe230e802ec02c9215bbfeda" + dependencies: + hoek "4.x.x" + isemail "2.x.x" + items "2.x.x" + moment "2.x.x" + topo "2.x.x" + js-base64@^2.1.8, js-base64@^2.1.9: version "2.4.5" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" @@ -4368,6 +4692,12 @@ json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +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" + jsonfilter@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11" @@ -4525,6 +4855,10 @@ known-css-properties@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.6.1.tgz#31b5123ad03d8d1a3f36bd4155459c981173478b" +lazy-ass@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -4569,6 +4903,53 @@ libqp@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.2.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.0.0-beta.11" + stream-to-observable "^0.1.0" + strip-ansi "^3.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -4643,25 +5024,36 @@ lodash.mergewith@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" +lodash.once@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10: +lodash@4.17.10, lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +log-symbols@2.2.0, log-symbols@^2.0.0, log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" dependencies: chalk "^1.0.0" -log-symbols@^2.0.0, log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" dependencies: - chalk "^2.0.1" + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" log4js@^2.5.3: version "2.11.0" @@ -4788,6 +5180,10 @@ map-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -4947,7 +5343,7 @@ mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.11, mime-types@~2.1.17, mime-types@~2.1.18: +mime-types@^2.1.11, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: version "2.1.19" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" dependencies: @@ -5062,6 +5458,12 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -5084,6 +5486,10 @@ mocha@^5.2.0: mkdirp "0.5.1" supports-color "5.4.0" +moment@2.x.x: + version "2.22.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5407,6 +5813,10 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -5479,6 +5889,10 @@ onecolor@^3.0.4: version "3.0.5" resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.5.tgz#36eff32201379efdf1180fb445e51a8e2425f9f6" +onetime@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -5509,6 +5923,15 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + original@>=0.0.5: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -5537,7 +5960,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, 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" @@ -5754,6 +6177,12 @@ pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" @@ -5764,6 +6193,10 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -5772,7 +6205,7 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -6066,6 +6499,10 @@ process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +progress@1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" @@ -6108,10 +6545,20 @@ prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" +ps-tree@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + dependencies: + event-stream "~3.3.0" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + public-encrypt@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" @@ -6157,7 +6604,7 @@ qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -qs@6.5.2, qs@~6.5.1: +qs@6.5.2, qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -6189,6 +6636,10 @@ quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" +ramda@0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" + ramda@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" @@ -6546,6 +6997,12 @@ replace-ext@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" +request-progress@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz#0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a" + dependencies: + throttleit "~0.0.2" + request@2.75.x: version "2.75.0" resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" @@ -6624,6 +7081,31 @@ request@2.87.0, request@^2.0.0, request@^2.74.0: tunnel-agent "^0.6.0" uuid "^3.0.0" +request@^2.78.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + request@~2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" @@ -6715,6 +7197,13 @@ resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6757,7 +7246,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^5.5.2: +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +rxjs@^5.0.0-beta.11, rxjs@^5.5.2: version "5.5.11" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" dependencies: @@ -6969,6 +7462,10 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -7236,6 +7733,12 @@ split2@^0.2.1: dependencies: through2 "~0.6.1" +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -7261,6 +7764,18 @@ ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" +start-server-and-test@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-1.7.0.tgz#ceaf0d944dccd3ba4caffbbc9e456ce2ce074243" + dependencies: + bluebird "3.5.1" + check-more-types "2.24.0" + debug "3.1.0" + execa "0.10.0" + lazy-ass "1.6.0" + ps-tree "1.1.0" + wait-on "2.1.0" + state-toggle@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a" @@ -7304,6 +7819,12 @@ stream-combiner@^0.2.1: duplexer "~0.1.1" through "~2.3.4" +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -7325,6 +7846,10 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +stream-to-observable@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" + streamroller@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" @@ -7641,6 +8166,12 @@ sugarss@^1.0.0: dependencies: postcss "^6.0.14" +supports-color@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" + dependencies: + has-flag "^2.0.0" + supports-color@5.4.0, supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" @@ -7710,6 +8241,10 @@ text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +throttleit@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" + through2@^0.6.1, through2@^0.6.3, through2@~0.6.1: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" @@ -7724,7 +8259,7 @@ through2@^2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -7746,6 +8281,12 @@ timespan@2.3.x: version "2.3.0" resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" +tmp@0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -7790,12 +8331,25 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +topo@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + dependencies: + hoek "4.x.x" + tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: punycode "^1.4.1" +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -7989,6 +8543,10 @@ unist-util-visit@^1.1.0: dependencies: unist-util-is "^2.1.1" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -8029,7 +8587,7 @@ url-parse@^1.1.8, url-parse@^1.4.3: querystringify "^2.0.0" requires-port "^1.0.0" -url@^0.11.0: +url@0.11.0, url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: @@ -8073,7 +8631,7 @@ uuid@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" -uuid@^3.0.1, uuid@^3.1.0: +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -8133,6 +8691,16 @@ void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" +wait-on@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-2.1.0.tgz#3c4ace1f57266ca5be7fa25e0c15803b889ca46a" + dependencies: + core-js "^2.4.1" + joi "^9.2.0" + minimist "^1.2.0" + request "^2.78.0" + rx "^4.1.0" + watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" @@ -8491,9 +9059,18 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -yarn@^1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.9.2.tgz#7666c6db0fed8dc090ae0dce11a8a28b1d82e391" +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yauzl@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2" + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.0.1" yeast@0.1.2: version "0.1.2" From 1dc994e78fedb44c03b0ff456ddeb4202773e532 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 20:22:32 -0400 Subject: [PATCH 2/8] Create a dummy app and setup-tour util --- cypress/dummy/css/prism.css | 2 + cypress/dummy/css/welcome.css | 96 ++++++++++++++++++++++++++++ cypress/dummy/css/welcome.css.map | 9 +++ cypress/dummy/index.html | 82 ++++++++++++++++++++++++ cypress/dummy/js/prism.js | 8 +++ cypress/dummy/sheep.svg | 53 +++++++++++++++ cypress/integration/test.shepherd.js | 18 +++++- cypress/utils/setup-tour.js | 72 +++++++++++++++++++++ 8 files changed, 338 insertions(+), 2 deletions(-) create mode 100644 cypress/dummy/css/prism.css create mode 100644 cypress/dummy/css/welcome.css create mode 100644 cypress/dummy/css/welcome.css.map create mode 100644 cypress/dummy/index.html create mode 100644 cypress/dummy/js/prism.js create mode 100644 cypress/dummy/sheep.svg create mode 100644 cypress/utils/setup-tour.js diff --git a/cypress/dummy/css/prism.css b/cypress/dummy/css/prism.css new file mode 100644 index 000000000..0be43f425 --- /dev/null +++ b/cypress/dummy/css/prism.css @@ -0,0 +1,2 @@ +/* Prism.js */ +code[class*="language-"], pre[class*="language-"] {color: #b3eecf; font-family: Consolas, Monaco, 'Andale Mono', monospace; direction: ltr; text-align: left; white-space: pre; word-spacing: normal; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } /* Code blocks */ pre[class*="language-"] {padding: 1em; margin: .5em 0; overflow: auto; font-size: 14px; } :not(pre) > code[class*="language-"], pre[class*="language-"] {background: rgba(0, 0, 0, .1); } /* Inline code */ :not(pre) > code[class*="language-"] {padding: .1em; border-radius: .3em; } .token.comment, .token.prolog, .token.doctype, .token.cdata {color: slategray; } .token.punctuation {color: #b3eecf; } .namespace {opacity: .7; } .token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol {color: #b3eecf; } .token.selector, .token.attr-name, .token.string, .token.builtin {color: #b3eecf; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string, .token.variable {color: #b3eecf; } .token.atrule, .token.attr-value, .token.keyword {color: #f4ffff; } .token.regex, .token.important {color: #b3eecf; } .token.important {font-weight: bold; } .token.entity {cursor: help; } \ No newline at end of file diff --git a/cypress/dummy/css/welcome.css b/cypress/dummy/css/welcome.css new file mode 100644 index 000000000..b2ef78be6 --- /dev/null +++ b/cypress/dummy/css/welcome.css @@ -0,0 +1,96 @@ +html, +body { + height: 100%; + overflow: hidden; } + +body { + background-color: #62c462; + background-image: linear-gradient(-45deg, #62c462, #75beaa); + font-family: "proxima-nova", "Helvetica Neue", sans-serif; + margin: 0; } + +.button { + border: 2px solid #ffffff; + color: #ffffff; + cursor: pointer; + display: inline-block; + font-size: 0.8em; + font-weight: 500; + letter-spacing: 3px; + line-height: 1.3em; + padding: 1em 1.25em; + text-decoration: none; + text-transform: uppercase; + width: 140px; } + .button.dark { + background: #ffffff; + color: #75beaa; } + @media (max-width: 568px) { + .button { + display: block; + margin: 1em auto 0; } } + +.hero-scroll { + height: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; + width: 100%; } + +.hero-outer { + box-sizing: border-box; + display: table; + height: 100%; + padding: 20px 0; + width: 100%; } + .hero-outer .hero-inner { + margin: 0 auto 1em; + text-align: center; + width: 540px; } + @media (max-width: 600px) { + .hero-outer .hero-inner { + width: 340px; } } + @media (max-width: 360px) { + .hero-outer .hero-inner { + width: 200px; } } + .hero-outer .hero-inner h1, + .hero-outer .hero-inner h2, + .hero-outer .hero-inner h3, + .hero-outer .hero-inner p { + color: #ffffff; + font-weight: normal; + line-height: 1; + margin: 0 0 20px; } + .hero-outer .hero-inner h3 { + font-size: 1.3em; + padding-top: 13px; } + .hero-outer .hero-inner h1 { + padding-top: 10px; } + .hero-outer .hero-inner > * { + opacity: 0.3; + pointer-events: none; + transition: opacity 0.4s; } + body:not(.shepherd-active) .hero-outer .hero-inner > * { + opacity: 1; + pointer-events: auto; } + .hero-outer .hero-inner .shepherd-target.shepherd-enabled { + opacity: 1; + pointer-events: auto; } + .hero-outer .hero-followup { + padding-top: 20px; } + +.shepherd-element.shepherd-transparent-text .shepherd-text { + color: #3b744f; } + +.shepherd-element .shepherd-content { + max-width: 100%; + width: 400px; } + .shepherd-element .shepherd-content a { + color: "inherit"; } + .shepherd-element .shepherd-content footer .shepherd-buttons li .shepherd-button-example-primary { + background: #55a892; } + +pre { + border: 1px solid rgba(0, 0, 0, 0.15); + line-height: 1.4em; } + +/*# sourceMappingURL=welcome.css.map */ \ No newline at end of file diff --git a/cypress/dummy/css/welcome.css.map b/cypress/dummy/css/welcome.css.map new file mode 100644 index 000000000..1328a2180 --- /dev/null +++ b/cypress/dummy/css/welcome.css.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "file": "welcome.css", + "sources": [ + "../sass/welcome.scss" + ], + "names": [], + "mappings": "AAIA,AAAA,IAAI;AACJ,IAAI,CAAC;EACH,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM,GACjB;;AAED,AAAA,IAAI,CAAC;EACH,gBAAgB,EAAE,OAAgB;EAClC,gBAAgB,EAAE,yCAA6D;EAC/E,WAAW,EAAE,4CAA4C;EACzD,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,OAAO,CAAC;EACN,MAAM,EAAE,GAAG,CAAC,KAAK,CAhBL,OAAO;EAiBnB,KAAK,EAjBO,OAAO;EAkBnB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,GAAG;EACnB,WAAW,EAAE,KAAK;EAClB,OAAO,EAAE,UAAU;EACnB,eAAe,EAAE,IAAI;EACrB,cAAc,EAAE,SAAS;EACzB,KAAK,EAAE,KAAK,GAWb;EAvBD,AAcE,OAdK,AAcJ,KAAK,CAAC;IACL,UAAU,EA9BA,OAAO;IA+BjB,KAAK,EAAE,OAAkB,GAC1B;EAED,MAAM,EAAE,SAAS,EAAE,KAAK;IAnB1B,AAAA,OAAO,CAAC;MAoBJ,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,UAAU,GAErB;;AAED,AAAA,YAAY,CAAC;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,IAAI;EACd,0BAA0B,EAAE,KAAK;EACjC,KAAK,EAAE,IAAI,GACZ;;AAED,AAAA,WAAW,CAAC;EACV,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,MAAM;EACf,KAAK,EAAE,IAAI,GAsDZ;EA3DD,AAOE,WAPS,CAOT,WAAW,CAAC;IACV,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,KAAK,GA4Cb;IA1CC,MAAM,EAAE,SAAS,EAAE,KAAK;MAZ5B,AAOE,WAPS,CAOT,WAAW,CAAC;QAMR,KAAK,EAAE,KAAK,GAyCf;IAtCC,MAAM,EAAE,SAAS,EAAE,KAAK;MAhB5B,AAOE,WAPS,CAOT,WAAW,CAAC;QAUR,KAAK,EAAE,KAAK,GAqCf;IAtDH,AAoBI,WApBO,CAOT,WAAW,CAaT,EAAE;IApBN,WAAW,CAOT,WAAW,CAcT,EAAE;IArBN,WAAW,CAOT,WAAW,CAeT,EAAE;IAtBN,WAAW,CAOT,WAAW,CAgBT,CAAC,CAAC;MACA,KAAK,EAvEG,OAAO;MAwEf,WAAW,EAAE,MAAM;MACnB,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,QAAQ,GACjB;IA5BL,AA8BI,WA9BO,CAOT,WAAW,CAuBT,EAAE,CAAC;MACD,SAAS,EAAE,KAAK;MAChB,WAAW,EAAE,IAAI,GAClB;IAjCL,AAmCI,WAnCO,CAOT,WAAW,CA4BT,EAAE,CAAC;MACD,WAAW,EAAE,IAAI,GAClB;IArCL,AAuCI,WAvCO,CAOT,WAAW,GAgCP,CAAC,CAAC;MACF,OAAO,EAAE,GAAG;MACZ,cAAc,EAAE,IAAI;MACpB,UAAU,EAAE,YAAY,GAMzB;MAJC,AAAA,IAAI,AAAA,IAAK,CAAA,gBAAgB,EA5C/B,WAAW,CAOT,WAAW,GAgCP,CAAC,CAK4B;QAC3B,OAAO,EAAE,CAAC;QACV,cAAc,EAAE,IAAI,GACrB;IA/CP,AAkDI,WAlDO,CAOT,WAAW,CA2CT,gBAAgB,AAAA,iBAAiB,CAAC;MAChC,OAAO,EAAE,CAAC;MACV,cAAc,EAAE,IAAI,GACrB;EArDL,AAwDE,WAxDS,CAwDT,cAAc,CAAC;IACb,WAAW,EAAE,IAAI,GAClB;;AAGH,AACE,iBADe,AACd,0BAA0B,CAAC,cAAc,CAAC;EACzC,KAAK,EA/GK,OAAO,GAgHlB;;AAHH,AAKE,iBALe,CAKf,iBAAiB,CAAC;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,KAAK,GASb;EAhBH,AASI,iBATa,CAKf,iBAAiB,CAIf,CAAC,CAAC;IACA,KAAK,EAxHK,SAAS,GAyHpB;EAXL,AAaI,iBAba,CAKf,iBAAiB,CAQf,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,gCAAgC,CAAC;IAC3D,UAAU,EAAE,OAAO,GACpB;;AAIL,AAAA,GAAG,CAAC;EACF,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,mBAAmB;EACrC,WAAW,EAAE,KAAK,GACnB" +} \ No newline at end of file diff --git a/cypress/dummy/index.html b/cypress/dummy/index.html new file mode 100644 index 000000000..cfeb451bf --- /dev/null +++ b/cypress/dummy/index.html @@ -0,0 +1,82 @@ + + + + + Shepherd — Guide your users through a tour of your app. + + + + + + + + + + + + + +
+
+
+
+

Shepherd

+ +

Guide your users through a tour of your app.

+
+ +
+

Including

+ + +
+ +
+

Example

+ +
+          
+            const tour = new Shepherd.Tour({
+              defaults: {
+                classes: 'shepherd-theme-arrows'
+              }
+            });
+
+            tour.addStep('example', {
+              title: 'Example Shepherd',
+              text: 'Creating a Shepherd is easy too! Just create ...',
+              attachTo: '.hero-example bottom',
+              advanceOn: '.docs-link click'
+            });
+
+            tour.start();
+          
+        
+
+ +
+

+ ★ on Github    + View Docs    + +

+
+
+ +
+
+
+
+ + + + + + + + + diff --git a/cypress/dummy/js/prism.js b/cypress/dummy/js/prism.js new file mode 100644 index 000000000..8cea87dc3 --- /dev/null +++ b/cypress/dummy/js/prism.js @@ -0,0 +1,8 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+clike+javascript&plugins=unescaped-markup+normalize-whitespace */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){h.lastIndex=k;var _=h.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,x=k,O=t.length;O>A&&(P>x||!t[A].type&&!t[A-1].greedy);++A)x+=t[A].length,j>=x&&(++b,k=x);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,x),_.index-=k}else{h.lastIndex=0;var _=h.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),C=[b,I];N&&(++b,k+=N.length,C.push(N));var E=new s(u,f?n.tokenize(_,f):_,y,_,m);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(t,C),1!=I&&n.matchGrammar(e,t,r,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; +!function(){"undefined"!=typeof self&&self.Prism&&self.document&&Prism.languages.markup&&(Prism.plugins.UnescapedMarkup=!0,Prism.hooks.add("before-highlightall",function(e){e.selector+=", [class*='lang-'] script[type='text/plain'], [class*='language-'] script[type='text/plain'], script[type='text/plain'][class*='lang-'], script[type='text/plain'][class*='language-']"}),Prism.hooks.add("before-sanity-check",function(e){if((e.element.matches||e.element.msMatchesSelector).call(e.element,"script[type='text/plain']")){var t=document.createElement("code"),n=document.createElement("pre");return n.className=t.className=e.element.className,e.element.dataset&&Object.keys(e.element.dataset).forEach(function(t){Object.prototype.hasOwnProperty.call(e.element.dataset,t)&&(n.dataset[t]=e.element.dataset[t])}),e.code=e.code.replace(/<\/script(>|>)/gi,""),t.textContent=e.code,n.appendChild(t),e.element.parentNode.replaceChild(n,e.element),e.element=t,void 0}var n=e.element.parentNode;!e.code&&n&&"pre"==n.nodeName.toLowerCase()&&e.element.childNodes.length&&"#comment"==e.element.childNodes[0].nodeName&&(e.element.textContent=e.code=e.element.childNodes[0].textContent)}))}(); +!function(){function e(e){this.defaults=r({},e)}function n(e){return e.replace(/-(\w)/g,function(e,n){return n.toUpperCase()})}function t(e){for(var n=0,t=0;tn&&(o[s]="\n"+o[s],a=l)}r[i]=o.join("")}return r.join("\n")}},"undefined"!=typeof module&&module.exports&&(module.exports=e),"undefined"!=typeof Prism&&(Prism.plugins.NormalizeWhitespace=new e({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(e){var n=Prism.plugins.NormalizeWhitespace;if(!e.settings||e.settings["whitespace-normalization"]!==!1){if((!e.element||!e.element.parentNode)&&e.code)return e.code=n.normalize(e.code,e.settings),void 0;var t=e.element.parentNode,r=/\bno-whitespace-normalization\b/;if(e.code&&t&&"pre"===t.nodeName.toLowerCase()&&!r.test(t.className)&&!r.test(e.element.className)){for(var i=t.childNodes,o="",a="",s=!1,l=0;l + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cypress/integration/test.shepherd.js b/cypress/integration/test.shepherd.js index 4d6bb0739..7a290985f 100644 --- a/cypress/integration/test.shepherd.js +++ b/cypress/integration/test.shepherd.js @@ -1,9 +1,23 @@ +import setupTour from '../utils/setup-tour'; + +let Shepherd; + describe('Shepherd Acceptance Tests', () => { beforeEach(() => { - cy.visit('http://localhost:8080/docs/welcome/'); - }) + Shepherd = null; + + cy.visit('http://localhost:8080/cypress/dummy/', { + onLoad(contentWindow) { + if (contentWindow.Shepherd) { + return Shepherd = contentWindow.Shepherd; + } + } + }); + }); it('next/previous buttons work', () => { + const tour = setupTour(Shepherd); + tour.start(); // Step one text should be visible cy.get('.shepherd-text') .contains('Shepherd is a javascript library').should('be.visible'); diff --git a/cypress/utils/setup-tour.js b/cypress/utils/setup-tour.js new file mode 100644 index 000000000..e931a9871 --- /dev/null +++ b/cypress/utils/setup-tour.js @@ -0,0 +1,72 @@ +export default function(Shepherd) { + let shepherd = new Shepherd.Tour({ + defaults: { + showCancelLink: true + } + }); + shepherd.addStep('welcome', { + text: ['Shepherd is a javascript library for guiding users through your app. It uses Popper.js, another open source library, to position all of its steps.', 'Popper makes sure your steps never end up off screen or cropped by an overflow. Try resizing your browser to see what we mean.'], + attachTo: '.hero-welcome bottom', + classes: 'shepherd shepherd-transparent-text', + buttons: [ + { + action: shepherd.cancel, + classes: 'shepherd-button-secondary', + text: 'Exit' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + }); + shepherd.addStep('including', { + title: 'Including', + text: 'Including Shepherd is easy! Just include popper.js, shepherd.js, and a Shepherd theme file.', + attachTo: '.hero-including bottom', + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + }); + shepherd.addStep('example', { + title: 'Example Shepherd', + text: 'Creating a Shepherd is easy too! Just create Shepherd and add as many steps as you want. Check out the documentation to learn more.', + attachTo: '.hero-example bottom', + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + }); + shepherd.addStep('followup', { + title: 'Learn more', + text: 'Star Shepherd on Github so you remember it for your next project', + attachTo: '.hero-followup left', + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Done' + } + ] + }); + return shepherd; +} \ No newline at end of file From b4c7bc2a912479b55f20fc0dcd8ed51286d032bd Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 20:25:43 -0400 Subject: [PATCH 3/8] Set docs paths back --- docs/welcome/index.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/welcome/index.html b/docs/welcome/index.html index 764c45fdb..5f6bd4a4a 100644 --- a/docs/welcome/index.html +++ b/docs/welcome/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -66,18 +66,18 @@

Example

- +
- - + + - - + + From 2bfff5e4bd24fcb46c1de06eb05545befeb16a27 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 20:44:39 -0400 Subject: [PATCH 4/8] Add more tests --- cypress/integration/test.shepherd.js | 33 ++++++++++++++++++++++++++++ cypress/utils/setup-tour.js | 9 ++++---- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/cypress/integration/test.shepherd.js b/cypress/integration/test.shepherd.js index 7a290985f..f74a6fdbe 100644 --- a/cypress/integration/test.shepherd.js +++ b/cypress/integration/test.shepherd.js @@ -15,6 +15,39 @@ describe('Shepherd Acceptance Tests', () => { }); }); + it('Hides cancel link', () => { + const tour = setupTour(Shepherd, { + showCancelLink: false + }); + tour.start(); + cy.get('.shepherd-cancel-link') + .should('not.be.visible'); + }); + + it('Shows cancel link', () => { + const tour = setupTour(Shepherd); + tour.start(); + cy.get('.shepherd-cancel-link') + .should('be.visible'); + }); + + it('Cancel link cancels the tour', () => { + const tour = setupTour(Shepherd); + tour.start(); + cy.get('body').should('have.class', 'shepherd-active'); + cy.get('.shepherd-cancel-link').click(); + cy.get('body').should('not.have.class', 'shepherd-active'); + }); + + it.skip('Defaults classes applied', () => { + const tour = setupTour(Shepherd, { + classes: 'test-defaults test-more-defaults' + }); + tour.start(); + cy.get('.shepherd-element').should('have.class', 'test-defaults'); + cy.get('.shepherd-element').should('have.class', 'test-more-defaults'); + }); + it('next/previous buttons work', () => { const tour = setupTour(Shepherd); tour.start(); diff --git a/cypress/utils/setup-tour.js b/cypress/utils/setup-tour.js index e931a9871..dac315dcd 100644 --- a/cypress/utils/setup-tour.js +++ b/cypress/utils/setup-tour.js @@ -1,8 +1,9 @@ -export default function(Shepherd) { +export default function(Shepherd, options) { + const defaults = options || { + showCancelLink: true + }; let shepherd = new Shepherd.Tour({ - defaults: { - showCancelLink: true - } + defaults }); shepherd.addStep('welcome', { text: ['Shepherd is a javascript library for guiding users through your app. It uses Popper.js, another open source library, to position all of its steps.', 'Popper makes sure your steps never end up off screen or cropped by an overflow. Try resizing your browser to see what we mean.'], From 1c3a86ddd68f0c025151ee333b7949047aadc87b Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 20:51:35 -0400 Subject: [PATCH 5/8] Fix lint --- .eslintignore | 1 + .gitignore | 1 - cypress/.eslintrc.js | 8 +++++--- cypress/plugins/index.js | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.eslintignore b/.eslintignore index dfe765eee..2f97482ad 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,4 @@ /coverage/ +/cypress/dummy/js/prism.js /dist/ /docs/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 048a1f8a4..90ea1a594 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ /.log/ /.nyc_output/ /coverage/ -/cypress/**/examples/ /cypress/videos/ /dist/ /node_modules/ diff --git a/cypress/.eslintrc.js b/cypress/.eslintrc.js index acfb3294b..a20d7a37f 100644 --- a/cypress/.eslintrc.js +++ b/cypress/.eslintrc.js @@ -12,11 +12,13 @@ module.exports = { 'plugin:mocha/recommended' ], globals: { + Cypress: false, + Shepherd: false, + assert: false, cy: false, document: false, - window: false, - assert: false, - Shepherd: false + expect: false, + window: false }, env: { browser: false, diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js index fd170fba6..2cdeb6d61 100644 --- a/cypress/plugins/index.js +++ b/cypress/plugins/index.js @@ -11,7 +11,7 @@ // This function is called when a project is opened or re-opened (e.g. due to // the project's config changing) -module.exports = (on, config) => { +module.exports = (/*on, config*/) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config } From 2f97203cd840f764a62350cf9c276b433863f0df Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 20:55:48 -0400 Subject: [PATCH 6/8] Add http-server --- package.json | 1 + yarn.lock | 62 +++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4d2af639d..b4a8d321c 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "eslint-plugin-mocha": "^5.1.0", "eslint-plugin-ship-shape": "^0.6.0", "glob": "^7.1.2", + "http-server": "^0.11.1", "istanbul-instrumenter-loader": "^3.0.1", "karma": "^2.0.5", "karma-chai": "^0.1.0", diff --git a/yarn.lock b/yarn.lock index 34e36c29c..6002b41a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1860,6 +1860,10 @@ colorguard@^1.2.0: text-table "^0.2.0" yargs "^1.2.6" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + colors@^1.1.0: version "1.3.1" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d" @@ -2029,6 +2033,10 @@ 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" +corser@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + cosmiconfig@^2.1.1: version "2.2.2" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" @@ -2579,6 +2587,15 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecstatic@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.2.1.tgz#1196a74d63d71d28dea807ed2b6183062671a206" + dependencies: + he "^1.1.1" + mime "^1.6.0" + minimist "^1.1.0" + url-join "^2.0.5" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3833,7 +3850,7 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -he@1.1.1: +he@1.1.1, he@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -3941,7 +3958,7 @@ http-proxy-middleware@~0.18.0: lodash "^4.17.5" micromatch "^3.1.9" -http-proxy@^1.13.0, http-proxy@^1.16.2: +http-proxy@^1.13.0, http-proxy@^1.16.2, http-proxy@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" dependencies: @@ -3949,6 +3966,19 @@ http-proxy@^1.13.0, http-proxy@^1.16.2: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-server@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.11.1.tgz#2302a56a6ffef7f9abea0147d838a5e9b6b6a79b" + dependencies: + colors "1.0.3" + corser "~2.0.0" + ecstatic "^3.0.0" + http-proxy "^1.8.1" + opener "~1.4.0" + optimist "0.6.x" + portfinder "^1.0.13" + union "~0.4.3" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -5359,7 +5389,7 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^1.3.4: +mime@^1.3.4, mime@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -5899,13 +5929,17 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opener@~1.4.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: +optimist@0.6.x, optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: @@ -6250,6 +6284,14 @@ popper.js@^1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" +portfinder@^1.0.13: + version "1.0.16" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.16.tgz#a6a68be9c352bc66c1a4c17a261f661f3facaf52" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + portfinder@^1.0.9: version "1.0.15" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.15.tgz#28990f8a1d2794a5709010b25d9f6d90fcc2fa14" @@ -6608,6 +6650,10 @@ qs@6.5.2, qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" +qs@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" + qs@~6.2.0: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" @@ -8495,6 +8541,12 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" +union@~0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0" + dependencies: + qs "~2.3.3" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -8572,7 +8624,7 @@ urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" -url-join@^2.0.2: +url-join@^2.0.2, url-join@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" From 3d7544820b4178a0e069bd5a6b46887000377373 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Mon, 13 Aug 2018 23:44:33 -0400 Subject: [PATCH 7/8] Add scrollTo and attachTo tests --- cypress/integration/test.shepherd.js | 88 +++++++++++++++++++++++++++- cypress/utils/default-steps.js | 80 +++++++++++++++++++++++++ cypress/utils/setup-tour.js | 85 ++++++--------------------- 3 files changed, 186 insertions(+), 67 deletions(-) create mode 100644 cypress/utils/default-steps.js diff --git a/cypress/integration/test.shepherd.js b/cypress/integration/test.shepherd.js index f74a6fdbe..3b85e526f 100644 --- a/cypress/integration/test.shepherd.js +++ b/cypress/integration/test.shepherd.js @@ -15,6 +15,72 @@ describe('Shepherd Acceptance Tests', () => { }); }); + it('attachTo works with selectors and DOM elements', () => { + const document = cy.document().then((document) => { + const heroIncludingElement = document.querySelector('.hero-including'); + + const steps = function(shepherd) { + return [ + { + id: 'welcome', + options: { + text: ['Shepherd is a javascript library for guiding users through your app. It uses Popper.js, another open source library, to position all of its steps.', 'Popper makes sure your steps never end up off screen or cropped by an overflow. Try resizing your browser to see what we mean.'], + attachTo: { + element: '.hero-welcome', + on: 'bottom' + }, + classes: 'shepherd shepherd-transparent-text', + buttons: [ + { + action: shepherd.cancel, + classes: 'shepherd-button-secondary', + text: 'Exit' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + } + }, + { + id: 'including', + options: { + title: 'Including', + text: 'Including Shepherd is easy! Just include popper.js, shepherd.js, and a Shepherd theme file.', + attachTo: { + element: heroIncludingElement, + on: 'bottom' + }, + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + } + } + ]; + }; + const tour = setupTour(Shepherd, { + showCancelLink: false + }, steps); + tour.start(); + // Step one text should be visible + cy.get('.shepherd-text') + .contains('Shepherd is a javascript library').should('be.visible'); + cy.contains('Next').click(); + // Step two text should be visible + cy.get('.shepherd-text') + .contains('Including Shepherd is easy!').should('be.visible'); + }); + }); + it('Hides cancel link', () => { const tour = setupTour(Shepherd, { showCancelLink: false @@ -40,7 +106,7 @@ describe('Shepherd Acceptance Tests', () => { }); it.skip('Defaults classes applied', () => { - const tour = setupTour(Shepherd, { + const tour = setupTour(Shepherd, { classes: 'test-defaults test-more-defaults' }); tour.start(); @@ -48,6 +114,26 @@ describe('Shepherd Acceptance Tests', () => { cy.get('.shepherd-element').should('have.class', 'test-more-defaults'); }); + it('scrollTo:true scrolls', () => { + const tour = setupTour(Shepherd, { + scrollTo: true + }); + tour.start(); + cy.get('.hero-scroll').should('have.prop', 'scrollTop').and('eq', 0); + cy.contains('Next').click(); + cy.get('.hero-scroll').should('have.prop', 'scrollTop').and('gt', 0); + }); + + it('scrollTo:false does not scroll', () => { + const tour = setupTour(Shepherd, { + scrollTo: false + }); + tour.start(); + cy.get('.hero-scroll').should('have.prop', 'scrollTop').and('eq', 0); + cy.contains('Next').click(); + cy.get('.hero-scroll').should('have.prop', 'scrollTop').and('eq', 0); + }); + it('next/previous buttons work', () => { const tour = setupTour(Shepherd); tour.start(); diff --git a/cypress/utils/default-steps.js b/cypress/utils/default-steps.js new file mode 100644 index 000000000..cde43d6f1 --- /dev/null +++ b/cypress/utils/default-steps.js @@ -0,0 +1,80 @@ +export default function(shepherd) { + return [ + { + id: 'welcome', + options: { + text: ['Shepherd is a javascript library for guiding users through your app. It uses Popper.js, another open source library, to position all of its steps.', 'Popper makes sure your steps never end up off screen or cropped by an overflow. Try resizing your browser to see what we mean.'], + attachTo: '.hero-welcome bottom', + classes: 'shepherd shepherd-transparent-text', + buttons: [ + { + action: shepherd.cancel, + classes: 'shepherd-button-secondary', + text: 'Exit' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + } + }, + { + id: 'including', + options: { + title: 'Including', + text: 'Including Shepherd is easy! Just include popper.js, shepherd.js, and a Shepherd theme file.', + attachTo: '.hero-including bottom', + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + } + }, + { + id: 'example', + options: { + title: 'Example Shepherd', + text: 'Creating a Shepherd is easy too! Just create Shepherd and add as many steps as you want. Check out the documentation to learn more.', + attachTo: '.hero-example bottom', + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Next' + } + ] + } + }, + { + id: 'followup', + options: { + title: 'Learn more', + text: 'Star Shepherd on Github so you remember it for your next project', + attachTo: '.hero-followup left', + buttons: [ + { + action: shepherd.back, + classes: 'shepherd-button-secondary', + text: 'Back' + }, { + action: shepherd.next, + classes: 'shepherd-button-example-primary', + text: 'Done' + } + ] + } + } + ]; +} \ No newline at end of file diff --git a/cypress/utils/setup-tour.js b/cypress/utils/setup-tour.js index dac315dcd..c3f4f5207 100644 --- a/cypress/utils/setup-tour.js +++ b/cypress/utils/setup-tour.js @@ -1,73 +1,26 @@ -export default function(Shepherd, options) { - const defaults = options || { +import defaultSteps from './default-steps'; + +/** + * Setup a tour + * @param {Shepherd} Shepherd The Shepherd instance + * @param {Object} globalDefaults A hash of the `defaults` + * @param {[Object]} customSteps An array of the steps to add to the tour + */ +export default function(Shepherd, globalDefaults, customSteps) { + const defaults = Object.assign({}, { showCancelLink: true - }; + }, globalDefaults); + let shepherd = new Shepherd.Tour({ defaults }); - shepherd.addStep('welcome', { - text: ['Shepherd is a javascript library for guiding users through your app. It uses Popper.js, another open source library, to position all of its steps.', 'Popper makes sure your steps never end up off screen or cropped by an overflow. Try resizing your browser to see what we mean.'], - attachTo: '.hero-welcome bottom', - classes: 'shepherd shepherd-transparent-text', - buttons: [ - { - action: shepherd.cancel, - classes: 'shepherd-button-secondary', - text: 'Exit' - }, { - action: shepherd.next, - classes: 'shepherd-button-example-primary', - text: 'Next' - } - ] - }); - shepherd.addStep('including', { - title: 'Including', - text: 'Including Shepherd is easy! Just include popper.js, shepherd.js, and a Shepherd theme file.', - attachTo: '.hero-including bottom', - buttons: [ - { - action: shepherd.back, - classes: 'shepherd-button-secondary', - text: 'Back' - }, { - action: shepherd.next, - classes: 'shepherd-button-example-primary', - text: 'Next' - } - ] - }); - shepherd.addStep('example', { - title: 'Example Shepherd', - text: 'Creating a Shepherd is easy too! Just create Shepherd and add as many steps as you want. Check out the documentation to learn more.', - attachTo: '.hero-example bottom', - buttons: [ - { - action: shepherd.back, - classes: 'shepherd-button-secondary', - text: 'Back' - }, { - action: shepherd.next, - classes: 'shepherd-button-example-primary', - text: 'Next' - } - ] - }); - shepherd.addStep('followup', { - title: 'Learn more', - text: 'Star Shepherd on Github so you remember it for your next project', - attachTo: '.hero-followup left', - buttons: [ - { - action: shepherd.back, - classes: 'shepherd-button-secondary', - text: 'Back' - }, { - action: shepherd.next, - classes: 'shepherd-button-example-primary', - text: 'Done' - } - ] + + const steps = typeof customSteps === 'function' ? customSteps(shepherd) : defaultSteps(shepherd); + + steps.forEach((step) => { + const { id, options } = step; + shepherd.addStep(id, options); }); + return shepherd; } \ No newline at end of file From 3ba7bb7c2ce5c6b934d7703f466e5d5b255d6dc7 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Tue, 14 Aug 2018 00:24:23 -0400 Subject: [PATCH 8/8] Fix lint --- cypress/integration/test.shepherd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/integration/test.shepherd.js b/cypress/integration/test.shepherd.js index 3b85e526f..f67f4bc87 100644 --- a/cypress/integration/test.shepherd.js +++ b/cypress/integration/test.shepherd.js @@ -16,7 +16,7 @@ describe('Shepherd Acceptance Tests', () => { }); it('attachTo works with selectors and DOM elements', () => { - const document = cy.document().then((document) => { + cy.document().then((document) => { const heroIncludingElement = document.querySelector('.hero-including'); const steps = function(shepherd) {