From 72c06c82e2542edd093b644ff30ac7b984a01fa2 Mon Sep 17 00:00:00 2001 From: Nick Colley Date: Mon, 12 Feb 2018 18:11:58 +0000 Subject: [PATCH 1/3] Remove gulp aXe --- docs/development-and-publish-tasks.md | 2 +- gulpfile.js | 1 - package-lock.json | 513 -------------------------- package.json | 1 - tasks/gulp/test-components.js | 20 - 5 files changed, 1 insertion(+), 536 deletions(-) diff --git a/docs/development-and-publish-tasks.md b/docs/development-and-publish-tasks.md index 8c0dae7f4c..dc5c095621 100644 --- a/docs/development-and-publish-tasks.md +++ b/docs/development-and-publish-tasks.md @@ -59,7 +59,7 @@ This task will: **`gulp test`** This task will: -- run accessibility test (tenon and axe) +- run accessibility test (tenon) **`gulp watch`** diff --git a/gulpfile.js b/gulpfile.js index 303e812aa6..1911a9ff6e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -48,7 +48,6 @@ gulp.task('test', cb => { runsequence( 'js:lint', 'scss:lint', - 'html:axe', 'html:tenon', cb) }) diff --git a/package-lock.json b/package-lock.json index f3e056f3a0..d33483a52f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -105,12 +105,6 @@ "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", "dev": true }, - "adm-zip": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", - "dev": true - }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -606,18 +600,6 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, - "axe-core": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-2.6.1.tgz", - "integrity": "sha512-QFfI3d+x/v92HJWGBaNfgrxdfon9/xXzd04YYfm5w5NJQOLex8qkJCctOt7+ky6e1l9zcQ5E7jsvbnTgQzyfTw==", - "dev": true - }, - "axe-webdriverjs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-0.5.0.tgz", - "integrity": "sha1-jjFJQfBkIAHUgC2BLcgztYCgCM4=", - "dev": true - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -1329,19 +1311,6 @@ } } }, - "chromedriver": { - "version": "2.25.1", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.25.1.tgz", - "integrity": "sha1-BN4akkL/4xgnhkENvvquFHQ15n4=", - "dev": true, - "requires": { - "adm-zip": "0.4.7", - "kew": "0.5.0", - "mkdirp": "0.5.1", - "npmconf": "2.1.2", - "rimraf": "2.6.2" - } - }, "ci-info": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", @@ -1718,16 +1687,6 @@ "source-map": "0.6.1" } }, - "config-chain": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", - "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", - "dev": true, - "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" - } - }, "configstore": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", @@ -2036,12 +1995,6 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2832,12 +2785,6 @@ "event-emitter": "0.3.5" } }, - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true - }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", @@ -3508,29 +3455,6 @@ "to-regex": "3.0.1" } }, - "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "debug": "2.6.9", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -3575,15 +3499,6 @@ "bser": "2.0.0" } }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "1.2.0" - } - }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", @@ -3604,15 +3519,6 @@ "object-assign": "4.1.1" } }, - "file-url": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-1.1.0.tgz", - "integrity": "sha1-oPnPPraQTJsdOmeQuDqXb8QCF7s=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -3835,44 +3741,6 @@ "js-yaml": "3.10.0" } }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } - } - }, - "fs-path": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/fs-path/-/fs-path-0.0.22.tgz", - "integrity": "sha1-TTlAlEezYjpvnT7OGmNSBSn/V/U=", - "dev": true, - "requires": { - "async": "0.9.2" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } - } - }, "fs-walk": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/fs-walk/-/fs-walk-0.0.1.tgz", @@ -5260,68 +5128,6 @@ } } }, - "gulp-axe-webdriver": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-axe-webdriver/-/gulp-axe-webdriver-1.4.0.tgz", - "integrity": "sha1-afDmBAzRb3MDupUISFOFDbLuVMU=", - "dev": true, - "requires": { - "axe-core": "2.6.1", - "axe-webdriverjs": "0.5.0", - "chalk": "1.1.3", - "chromedriver": "2.25.1", - "file-url": "1.1.0", - "fs-extra": "0.30.0", - "fs-path": "0.0.22", - "glob": "7.1.2", - "phantomjs-prebuilt": "2.1.16", - "promise": "7.3.1", - "request": "2.83.0", - "selenium-webdriver": "3.6.0", - "then-request": "2.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "gulp-changed": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/gulp-changed/-/gulp-changed-3.2.0.tgz", @@ -6238,16 +6044,6 @@ } } }, - "hasha": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", - "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true, - "requires": { - "is-stream": "1.1.0", - "pinkie-promise": "2.0.1" - } - }, "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", @@ -6320,25 +6116,6 @@ "readable-stream": "2.3.3" } }, - "http-basic": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", - "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", - "dev": true, - "requires": { - "caseless": "0.11.0", - "concat-stream": "1.6.0", - "http-response-object": "1.1.0" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - } - } - }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", @@ -6365,12 +6142,6 @@ } } }, - "http-response-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-1.1.0.tgz", - "integrity": "sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM=", - "dev": true - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -6400,12 +6171,6 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "dev": true - }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -8318,24 +8083,6 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true, - "optional": true - } - } - }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -8372,77 +8119,12 @@ "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", "dev": true }, - "jszip": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", - "dev": true, - "requires": { - "core-js": "2.3.0", - "es6-promise": "3.0.2", - "lie": "3.1.1", - "pako": "1.0.6", - "readable-stream": "2.0.6" - }, - "dependencies": { - "es6-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "kew": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/kew/-/kew-0.5.0.tgz", - "integrity": "sha1-7OEctdjQGoH4zoBMjQu6BuayXKI=", - "dev": true - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true, - "optional": true - } - } - }, "known-css-properties": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.3.0.tgz", @@ -8854,15 +8536,6 @@ "type-check": "0.3.2" } }, - "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "dev": true, - "requires": { - "immediate": "3.0.6" - } - }, "liftoff": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", @@ -10103,34 +9776,6 @@ "path-key": "2.0.1" } }, - "npmconf": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", - "integrity": "sha1-ZmBqSnNvHnegWaoHGnnJSreBhTo=", - "dev": true, - "requires": { - "config-chain": "1.1.11", - "inherits": "2.0.3", - "ini": "1.3.5", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.3.3", - "osenv": "0.1.4", - "semver": "4.3.6", - "uid-number": "0.0.5" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -10630,12 +10275,6 @@ } } }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -10816,60 +10455,12 @@ "through": "2.3.8" } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "phantomjs-prebuilt": { - "version": "2.1.16", - "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", - "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", - "dev": true, - "requires": { - "es6-promise": "4.2.4", - "extract-zip": "1.6.6", - "fs-extra": "1.0.0", - "hasha": "2.2.0", - "kew": "0.7.0", - "progress": "1.1.8", - "request": "2.83.0", - "request-progress": "2.0.1", - "which": "1.3.0" - }, - "dependencies": { - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "kew": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", - "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", - "dev": true - } - } - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -13726,21 +13317,6 @@ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "2.0.6" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, "proxy-addr": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", @@ -14132,15 +13708,6 @@ "uuid": "3.2.1" } }, - "request-progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", - "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true, - "requires": { - "throttleit": "1.0.0" - } - }, "request-promise-core": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", @@ -14541,18 +14108,6 @@ } } }, - "selenium-webdriver": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", - "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", - "dev": true, - "requires": { - "jszip": "3.1.5", - "rimraf": "2.6.2", - "tmp": "0.0.30", - "xml2js": "0.4.19" - } - }, "semver": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", @@ -15766,40 +15321,12 @@ "integrity": "sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI=", "dev": true }, - "then-request": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", - "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=", - "dev": true, - "requires": { - "caseless": "0.11.0", - "concat-stream": "1.6.0", - "http-basic": "2.5.1", - "http-response-object": "1.1.0", - "promise": "7.3.1", - "qs": "6.5.1" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - } - } - }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -15836,15 +15363,6 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -16111,12 +15629,6 @@ "dev": true, "optional": true }, - "uid-number": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", - "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=", - "dev": true - }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -16885,22 +16397,6 @@ "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", "dev": true }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dev": true, - "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -17083,15 +16579,6 @@ "dev": true } } - }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "requires": { - "fd-slicer": "1.0.1" - } } } } diff --git a/package.json b/package.json index 197d811b09..49440ea4c8 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "directory-to-object": "^1.1.1", "express": "^4.16.1", "gulp": "^3.9.1", - "gulp-axe-webdriver": "^1.4.0", "gulp-changed": "^3.1.0", "gulp-concat": "^2.6.1", "gulp-data": "^1.2.1", diff --git a/tasks/gulp/test-components.js b/tasks/gulp/test-components.js index 946d828050..5c8bae0b5b 100644 --- a/tasks/gulp/test-components.js +++ b/tasks/gulp/test-components.js @@ -1,7 +1,6 @@ 'use strict' const gulp = require('gulp') const gtenon = require('gulp-tenon-client') -const axe = require('gulp-axe-webdriver') const configPaths = require('../../config/paths.json') // Check HTML using Tenon ---------------- @@ -19,22 +18,3 @@ gulp.task('html:tenon', function () { ] })) }) - -// Check HTML using aXe ------------------ -// --------------------------------------- -gulp.task('html:axe', (done) => { - let options = { - browser: 'phantomjs', - saveOutputIn: 'axeReport.json', - urls: [configPaths.publicComponents + '**/*.html'], - // https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md - a11yCheckOptions: { - 'rules': { - 'document-title': { 'enabled': false }, // Ensures each HTML document contains a non-empty element - 'html-has-lang': { 'enabled': false }, // Ensures every HTML document has a lang attribute - 'bypass': { 'enabled': false } // Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content - } - } - } - return axe(options, done) -}) From 930a940e80f37bdcfbb9e0e83251bcb6c7fd063a Mon Sep 17 00:00:00 2001 From: Nick Colley <nick.colley@digital.cabinet-office.gov.uk> Date: Mon, 12 Feb 2018 18:24:03 +0000 Subject: [PATCH 2/3] Use eslint-env instead of manual globals --- app/__tests__/app.test.js | 2 +- src/components/back-link/template.test.js | 2 +- src/components/breadcrumbs/template.test.js | 2 +- src/components/button/template.test.js | 2 +- src/components/checkboxes/template.test.js | 2 +- src/components/date-input/template.test.js | 2 +- src/components/details/template.test.js | 2 +- src/components/error-message/template.test.js | 2 +- src/components/error-summary/template.test.js | 2 +- src/components/fieldset/template.test.js | 2 +- src/components/file-upload/template.test.js | 2 +- src/components/input/template.test.js | 2 +- src/components/label/template.test.js | 2 +- src/components/panel/template.test.js | 2 +- src/components/phase-banner/template.test.js | 2 +- src/components/radios/template.test.js | 2 +- src/components/select/template.test.js | 2 +- src/components/skip-link/template.test.js | 2 +- src/components/table/template.test.js | 2 +- src/components/tag/template.test.js | 2 +- src/components/textarea/template.test.js | 2 +- src/components/warning-text/template.test.js | 2 +- tasks/gulp/__tests__/after-build-dist.test.js | 2 +- tasks/gulp/__tests__/after-build-packages.test.js | 2 +- tasks/gulp/__tests__/check-generate-readme.test.js | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/app/__tests__/app.test.js b/app/__tests__/app.test.js index 6f54abe330..bc22db32e1 100644 --- a/app/__tests__/app.test.js +++ b/app/__tests__/app.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect, beforeAll, afterAll */ +/* eslint-env jest */ const request = require('request') const cheerio = require('cheerio') diff --git a/src/components/back-link/template.test.js b/src/components/back-link/template.test.js index c5d9b1fe1d..3607282ac8 100644 --- a/src/components/back-link/template.test.js +++ b/src/components/back-link/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/breadcrumbs/template.test.js b/src/components/breadcrumbs/template.test.js index 0fece571fd..7284db7416 100644 --- a/src/components/breadcrumbs/template.test.js +++ b/src/components/breadcrumbs/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/button/template.test.js b/src/components/button/template.test.js index 374398e80b..a3830ebc85 100644 --- a/src/components/button/template.test.js +++ b/src/components/button/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/checkboxes/template.test.js b/src/components/checkboxes/template.test.js index bca33d4fd5..a9ee5f4a75 100644 --- a/src/components/checkboxes/template.test.js +++ b/src/components/checkboxes/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/date-input/template.test.js b/src/components/date-input/template.test.js index 619fdf9aee..737090faaa 100644 --- a/src/components/date-input/template.test.js +++ b/src/components/date-input/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/details/template.test.js b/src/components/details/template.test.js index 54361f0444..b4341c688c 100644 --- a/src/components/details/template.test.js +++ b/src/components/details/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/error-message/template.test.js b/src/components/error-message/template.test.js index 72e9eb9b80..6a664d1d62 100644 --- a/src/components/error-message/template.test.js +++ b/src/components/error-message/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render } = require('../../../lib/jest-helpers') diff --git a/src/components/error-summary/template.test.js b/src/components/error-summary/template.test.js index 3992f524f1..7633183c32 100644 --- a/src/components/error-summary/template.test.js +++ b/src/components/error-summary/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/fieldset/template.test.js b/src/components/fieldset/template.test.js index e75b414c27..9c696a58f3 100644 --- a/src/components/fieldset/template.test.js +++ b/src/components/fieldset/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/file-upload/template.test.js b/src/components/file-upload/template.test.js index 90a98b6433..476684eed6 100644 --- a/src/components/file-upload/template.test.js +++ b/src/components/file-upload/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/input/template.test.js b/src/components/input/template.test.js index ccf41b4db3..caca71340c 100644 --- a/src/components/input/template.test.js +++ b/src/components/input/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/label/template.test.js b/src/components/label/template.test.js index 4b820ce1ec..d2523d7c5b 100644 --- a/src/components/label/template.test.js +++ b/src/components/label/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/panel/template.test.js b/src/components/panel/template.test.js index 9ef412c30c..c0b0f01339 100644 --- a/src/components/panel/template.test.js +++ b/src/components/panel/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/phase-banner/template.test.js b/src/components/phase-banner/template.test.js index 732a93db6e..080d42da66 100644 --- a/src/components/phase-banner/template.test.js +++ b/src/components/phase-banner/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/radios/template.test.js b/src/components/radios/template.test.js index 1096e30866..22bfbf06a6 100644 --- a/src/components/radios/template.test.js +++ b/src/components/radios/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/select/template.test.js b/src/components/select/template.test.js index bed066e1a2..cbf108585b 100644 --- a/src/components/select/template.test.js +++ b/src/components/select/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/skip-link/template.test.js b/src/components/skip-link/template.test.js index 87ecafa4c5..c874cdb449 100644 --- a/src/components/skip-link/template.test.js +++ b/src/components/skip-link/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render } = require('../../../lib/jest-helpers') diff --git a/src/components/table/template.test.js b/src/components/table/template.test.js index 8f2d63faaf..ecde503310 100644 --- a/src/components/table/template.test.js +++ b/src/components/table/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/tag/template.test.js b/src/components/tag/template.test.js index f512b790d5..274944e0dc 100644 --- a/src/components/tag/template.test.js +++ b/src/components/tag/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/src/components/textarea/template.test.js b/src/components/textarea/template.test.js index b70a2b7048..2b7974c118 100644 --- a/src/components/textarea/template.test.js +++ b/src/components/textarea/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, htmlWithClassName } = require('../../../lib/jest-helpers') diff --git a/src/components/warning-text/template.test.js b/src/components/warning-text/template.test.js index ee100d4752..99bd364c2c 100644 --- a/src/components/warning-text/template.test.js +++ b/src/components/warning-text/template.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const { render, getExamples } = require('../../../lib/jest-helpers') diff --git a/tasks/gulp/__tests__/after-build-dist.test.js b/tasks/gulp/__tests__/after-build-dist.test.js index bcdd2af93f..3cecbdc869 100644 --- a/tasks/gulp/__tests__/after-build-dist.test.js +++ b/tasks/gulp/__tests__/after-build-dist.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const lib = require('../../../lib/file-helper') diff --git a/tasks/gulp/__tests__/after-build-packages.test.js b/tasks/gulp/__tests__/after-build-packages.test.js index 50a825c85c..4152f1c229 100644 --- a/tasks/gulp/__tests__/after-build-packages.test.js +++ b/tasks/gulp/__tests__/after-build-packages.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const lib = require('../../../lib/file-helper') diff --git a/tasks/gulp/__tests__/check-generate-readme.test.js b/tasks/gulp/__tests__/check-generate-readme.test.js index 3e02e0dde8..e70535c82f 100644 --- a/tasks/gulp/__tests__/check-generate-readme.test.js +++ b/tasks/gulp/__tests__/check-generate-readme.test.js @@ -1,4 +1,4 @@ -/* globals describe, it, expect */ +/* eslint-env jest */ const gulp = require('gulp') From e667d0351135553417b1d1d65a36c3c59e0d7d37 Mon Sep 17 00:00:00 2001 From: Nick Colley <nick.colley@digital.cabinet-office.gov.uk> Date: Tue, 13 Feb 2018 15:41:26 +0000 Subject: [PATCH 3/3] Add jest-axe Includes jest-axe, which allows us to run axe-core directly within our unit tests. --- config/jest-setup.js | 5 + lib/jest-helpers.js | 1 + package-lock.json | 365 ++++++++++++------ package.json | 2 + src/components/back-link/template.test.js | 9 + src/components/breadcrumbs/template.test.js | 9 + src/components/button/template.test.js | 9 + src/components/checkboxes/template.test.js | 9 + src/components/date-input/template.test.js | 9 + src/components/details/template.test.js | 9 + src/components/error-message/template.test.js | 13 +- src/components/error-summary/template.test.js | 9 + src/components/fieldset/template.test.js | 9 + src/components/file-upload/template.test.js | 13 +- src/components/input/template.test.js | 13 +- src/components/label/template.test.js | 9 + src/components/panel/template.test.js | 9 + src/components/phase-banner/template.test.js | 9 + src/components/radios/template.test.js | 9 + src/components/select/template.test.js | 13 +- src/components/skip-link/template.test.js | 15 +- src/components/table/template.test.js | 10 + src/components/tag/template.test.js | 9 + src/components/textarea/template.test.js | 13 +- src/components/warning-text/template.test.js | 9 + 25 files changed, 468 insertions(+), 121 deletions(-) create mode 100644 config/jest-setup.js diff --git a/config/jest-setup.js b/config/jest-setup.js new file mode 100644 index 0000000000..08a5da864e --- /dev/null +++ b/config/jest-setup.js @@ -0,0 +1,5 @@ +/* eslint-env jest */ + +const { toHaveNoViolations } = require('jest-axe') + +expect.extend(toHaveNoViolations) diff --git a/lib/jest-helpers.js b/lib/jest-helpers.js index 22c6db54cd..cab4f0eb30 100644 --- a/lib/jest-helpers.js +++ b/lib/jest-helpers.js @@ -5,6 +5,7 @@ const fs = require('fs') const nunjucks = require('nunjucks') const cheerio = require('cheerio') const yaml = require('js-yaml') + const configPaths = require('../config/paths.json') nunjucks.configure(configPaths.components, { diff --git a/package-lock.json b/package-lock.json index d33483a52f..73debf7035 100644 --- a/package-lock.json +++ b/package-lock.json @@ -600,6 +600,12 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, + "axe-core": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-2.6.1.tgz", + "integrity": "sha512-QFfI3d+x/v92HJWGBaNfgrxdfon9/xXzd04YYfm5w5NJQOLex8qkJCctOt7+ky6e1l9zcQ5E7jsvbnTgQzyfTw==", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -3768,12 +3774,14 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "optional": true }, "ajv": { "version": "4.11.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "optional": true, "requires": { "co": "4.6.0", @@ -3782,16 +3790,19 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "optional": true, "requires": { "delegates": "1.0.0", @@ -3800,36 +3811,43 @@ }, "asn1": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "optional": true }, "assert-plus": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "optional": true }, "asynckit": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "optional": true }, "aws-sign2": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "optional": true }, "aws4": { "version": "1.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "optional": true }, "balanced-match": { "version": "0.4.2", - "bundled": true + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" }, "bcrypt-pbkdf": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -3837,21 +3855,24 @@ }, "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { "inherits": "2.0.3" } }, "boom": { "version": "2.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { "hoek": "2.16.3" } }, "brace-expansion": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "requires": { "balanced-match": "0.4.2", "concat-map": "0.0.1" @@ -3859,51 +3880,61 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "optional": true }, "co": { "version": "4.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "combined-stream": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { "delayed-stream": "1.0.0" } }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cryptiles": { "version": "2.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { "boom": "2.10.1" } }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "optional": true, "requires": { "assert-plus": "1.0.0" @@ -3911,14 +3942,16 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "optional": true } } }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "optional": true, "requires": { "ms": "2.0.0" @@ -3926,26 +3959,31 @@ }, "deep-extend": { "version": "0.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "optional": true }, "delayed-stream": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "optional": true }, "detect-libc": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", + "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { "jsbn": "0.1.1" @@ -3953,21 +3991,25 @@ }, "extend": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "optional": true }, "form-data": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "optional": true, "requires": { "asynckit": "0.4.0", @@ -3977,11 +4019,13 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { "graceful-fs": "4.1.11", "inherits": "2.0.3", @@ -3991,7 +4035,8 @@ }, "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "optional": true, "requires": { "fstream": "1.0.11", @@ -4001,7 +4046,8 @@ }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "optional": true, "requires": { "aproba": "1.1.1", @@ -4016,7 +4062,8 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "optional": true, "requires": { "assert-plus": "1.0.0" @@ -4024,14 +4071,16 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "optional": true } } }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -4043,16 +4092,19 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "har-schema": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "optional": true }, "har-validator": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "optional": true, "requires": { "ajv": "4.11.8", @@ -4061,12 +4113,14 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "optional": true }, "hawk": { "version": "3.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -4076,11 +4130,13 @@ }, "hoek": { "version": "2.16.3", - "bundled": true + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, "http-signature": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "optional": true, "requires": { "assert-plus": "0.2.0", @@ -4090,7 +4146,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -4098,37 +4155,44 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "1.0.1" } }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "optional": true }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isstream": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "optional": true }, "jodid25519": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "optional": true, "requires": { "jsbn": "0.1.1" @@ -4136,17 +4200,20 @@ }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "optional": true }, "json-stable-stringify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "optional": true, "requires": { "jsonify": "0.0.0" @@ -4154,17 +4221,20 @@ }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "optional": true }, "jsonify": { "version": "0.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "optional": true }, "jsprim": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "optional": true, "requires": { "assert-plus": "1.0.0", @@ -4175,48 +4245,56 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "optional": true } } }, "mime-db": { "version": "1.27.0", - "bundled": true + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" }, "mime-types": { "version": "2.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "requires": { "mime-db": "1.27.0" } }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "optional": true }, "node-pre-gyp": { "version": "0.6.39", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", + "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", "optional": true, "requires": { "detect-libc": "1.0.2", @@ -4234,7 +4312,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "optional": true, "requires": { "abbrev": "1.1.0", @@ -4243,7 +4322,8 @@ }, "npmlog": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", "optional": true, "requires": { "are-we-there-yet": "1.1.4", @@ -4254,38 +4334,45 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1.0.2" } }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "optional": true }, "osenv": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "optional": true, "requires": { "os-homedir": "1.0.2", @@ -4294,30 +4381,36 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "performance-now": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "optional": true }, "process-nextick-args": { "version": "1.0.7", - "bundled": true + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "punycode": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "optional": true }, "qs": { "version": "6.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "optional": true }, "rc": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "optional": true, "requires": { "deep-extend": "0.4.2", @@ -4328,14 +4421,16 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "optional": true } } }, "readable-stream": { "version": "2.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "requires": { "buffer-shims": "1.0.0", "core-util-is": "1.0.2", @@ -4348,7 +4443,8 @@ }, "request": { "version": "2.81.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "optional": true, "requires": { "aws-sign2": "0.6.0", @@ -4377,40 +4473,47 @@ }, "rimraf": { "version": "2.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" }, "semver": { "version": "5.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "optional": true }, "sntp": { "version": "1.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { "hoek": "2.16.3" } }, "sshpk": { "version": "1.13.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "optional": true, "requires": { "asn1": "0.2.3", @@ -4426,14 +4529,16 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "optional": true } } }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -4442,31 +4547,36 @@ }, "string_decoder": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "requires": { "safe-buffer": "5.0.1" } }, "stringstream": { "version": "0.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "optional": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "optional": true }, "tar": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { "block-stream": "0.0.9", "fstream": "1.0.11", @@ -4475,7 +4585,8 @@ }, "tar-pack": { "version": "3.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "optional": true, "requires": { "debug": "2.6.8", @@ -4490,7 +4601,8 @@ }, "tough-cookie": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "optional": true, "requires": { "punycode": "1.4.1" @@ -4498,7 +4610,8 @@ }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "optional": true, "requires": { "safe-buffer": "5.0.1" @@ -4506,26 +4619,31 @@ }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, "uid-number": { "version": "0.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "optional": true }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", "optional": true }, "verror": { "version": "1.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "optional": true, "requires": { "extsprintf": "1.0.2" @@ -4533,7 +4651,8 @@ }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "optional": true, "requires": { "string-width": "1.0.2" @@ -4541,7 +4660,8 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" } } }, @@ -7157,6 +7277,17 @@ } } }, + "jest-axe": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/jest-axe/-/jest-axe-2.1.1.tgz", + "integrity": "sha512-/udxB88VrSr9XUuuzJIGS/uXDZelaTC4g21TAqIYnE1ykNTyc4ZiAx2G5JNYC110Gls21aOzNU2N+xb1XlBxQg==", + "dev": true, + "requires": { + "axe-core": "2.6.1", + "jest-matcher-utils": "22.2.0", + "lodash.merge": "4.6.1" + } + }, "jest-changed-files": { "version": "22.2.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.2.0.tgz", @@ -8825,6 +8956,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, "lodash.mergewith": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", diff --git a/package.json b/package.json index 49440ea4c8..9ddcb41b54 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "gulp-to-markdown": "^1.0.0", "gulp-uglify": "^3.0.0", "jest": "^22.1.4", + "jest-axe": "^2.1.1", "jest-serializer-html": "^5.0.0", "js-yaml": "^3.10.0", "lerna": "^2.3.1", @@ -83,6 +84,7 @@ "iOS 9" ], "jest": { + "setupTestFrameworkScriptFile": "./config/jest-setup.js", "snapshotSerializers": [ "jest-serializer-html" ] diff --git a/src/components/back-link/template.test.js b/src/components/back-link/template.test.js index 3607282ac8..86b1073168 100644 --- a/src/components/back-link/template.test.js +++ b/src/components/back-link/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('back-link') describe('back-link component', () => { + it('default example passes accessibility tests', async () => { + const $ = render('back-link', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it.skip('fails to render if the required fields are not included', () => { // TODO: href is a required field but the component does not error, // when it is not passed diff --git a/src/components/breadcrumbs/template.test.js b/src/components/breadcrumbs/template.test.js index 7284db7416..5a2d191326 100644 --- a/src/components/breadcrumbs/template.test.js +++ b/src/components/breadcrumbs/template.test.js @@ -1,11 +1,20 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('breadcrumbs') describe('Breadcrumbs', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('breadcrumbs', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders with classes', () => { const $ = render('breadcrumbs', { classes: 'app-c-breadcrumbs--custom-modifier' diff --git a/src/components/button/template.test.js b/src/components/button/template.test.js index a3830ebc85..67fa6269f5 100644 --- a/src/components/button/template.test.js +++ b/src/components/button/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('button') describe('Button', () => { + it('default example passes accessibility tests', async () => { + const $ = render('button', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + describe('input[type=submit]', () => { it('renders the default example', () => { const $ = render('button', examples.default) diff --git a/src/components/checkboxes/template.test.js b/src/components/checkboxes/template.test.js index a9ee5f4a75..d045ea1b34 100644 --- a/src/components/checkboxes/template.test.js +++ b/src/components/checkboxes/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') const examples = getExamples('checkboxes') describe('Checkboxes', () => { + it('default example passes accessibility tests', async () => { + const $ = render('checkboxes', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('render example with minimum required name and items', () => { const $ = render('checkboxes', { name: 'example-name', diff --git a/src/components/date-input/template.test.js b/src/components/date-input/template.test.js index 737090faaa..4c0d29f914 100644 --- a/src/components/date-input/template.test.js +++ b/src/components/date-input/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') const examples = getExamples('date-input') describe('Date input', () => { + it('default example passes accessibility tests', async () => { + const $ = render('date-input', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + describe('by default', () => { it('renders with classes', () => { const $ = render('date-input', { diff --git a/src/components/details/template.test.js b/src/components/details/template.test.js index b4341c688c..1caaf5518d 100644 --- a/src/components/details/template.test.js +++ b/src/components/details/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('details') describe('Details', () => { + it('default example passes accessibility tests', async () => { + const $ = render('details', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders a details element', () => { const $ = render('details', examples.default) diff --git a/src/components/error-message/template.test.js b/src/components/error-message/template.test.js index 6a664d1d62..5caeea1691 100644 --- a/src/components/error-message/template.test.js +++ b/src/components/error-message/template.test.js @@ -1,8 +1,19 @@ /* eslint-env jest */ -const { render } = require('../../../lib/jest-helpers') +const { axe } = require('jest-axe') + +const { render, getExamples } = require('../../../lib/jest-helpers') + +const examples = getExamples('error-message') describe('Error message', () => { + it('default example passes accessibility tests', async () => { + const $ = render('error-message', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('allows additional classes to specified', () => { const $ = render('error-message', { classes: 'custom-class' diff --git a/src/components/error-summary/template.test.js b/src/components/error-summary/template.test.js index 7633183c32..8f1653916d 100644 --- a/src/components/error-summary/template.test.js +++ b/src/components/error-summary/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('error-summary') describe('Error-summary', () => { + it('default example passes accessibility tests', async () => { + const $ = render('error-summary', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('aria-labelledby attribute matches the title id', () => { const $ = render('error-summary', examples.default) const ariaAttr = $('.govuk-c-error-summary').attr('aria-labelledby') diff --git a/src/components/fieldset/template.test.js b/src/components/fieldset/template.test.js index 9c696a58f3..80a6ee6022 100644 --- a/src/components/fieldset/template.test.js +++ b/src/components/fieldset/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') const examples = getExamples('fieldset') describe('fieldset', () => { + it('default example passes accessibility tests', async () => { + const $ = render('fieldset', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders a legend element inside a fieldset element for accessibility reasons', () => { const $ = render('fieldset', { legendText: 'What is your address?' diff --git a/src/components/file-upload/template.test.js b/src/components/file-upload/template.test.js index 476684eed6..04869cebce 100644 --- a/src/components/file-upload/template.test.js +++ b/src/components/file-upload/template.test.js @@ -1,9 +1,20 @@ /* eslint-env jest */ -const { render, htmlWithClassName } = require('../../../lib/jest-helpers') +const { axe } = require('jest-axe') + +const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') + +const examples = getExamples('file-upload') describe('File upload', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('file-upload', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders with classes', () => { const $ = render('file-upload', { classes: 'app-c-file-upload--custom-modifier' diff --git a/src/components/input/template.test.js b/src/components/input/template.test.js index caca71340c..ef8f5e65de 100644 --- a/src/components/input/template.test.js +++ b/src/components/input/template.test.js @@ -1,9 +1,20 @@ /* eslint-env jest */ -const { render, htmlWithClassName } = require('../../../lib/jest-helpers') +const { axe } = require('jest-axe') + +const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') + +const examples = getExamples('input') describe('Input', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('input', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders with classes', () => { const $ = render('input', { classes: 'app-c-input--custom-modifier' diff --git a/src/components/label/template.test.js b/src/components/label/template.test.js index d2523d7c5b..c5a50304de 100644 --- a/src/components/label/template.test.js +++ b/src/components/label/template.test.js @@ -1,11 +1,20 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') const examples = getExamples('label') describe('Label', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('label', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders a label element', () => { const $ = render('label', examples.default) diff --git a/src/components/panel/template.test.js b/src/components/panel/template.test.js index c0b0f01339..6b9db59a54 100644 --- a/src/components/panel/template.test.js +++ b/src/components/panel/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('panel') describe('Panel', () => { + it('default example passes accessibility tests', async () => { + const $ = render('panel', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders title text', () => { const $ = render('panel', examples.default) const panelTitle = $('.govuk-c-panel__title').text().trim() diff --git a/src/components/phase-banner/template.test.js b/src/components/phase-banner/template.test.js index 080d42da66..783ee98c57 100644 --- a/src/components/phase-banner/template.test.js +++ b/src/components/phase-banner/template.test.js @@ -1,11 +1,20 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') const examples = getExamples('phase-banner') describe('Phase banner', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('phase-banner', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('allows additional classes to be added to the component', () => { const $ = render('phase-banner', { classes: 'extra-class one-more-class' diff --git a/src/components/radios/template.test.js b/src/components/radios/template.test.js index 22bfbf06a6..63d2251d0d 100644 --- a/src/components/radios/template.test.js +++ b/src/components/radios/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') const examples = getExamples('radios') describe('Radios', () => { + it('default example passes accessibility tests', async () => { + const $ = render('radios', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('render example with minimum required name and items', () => { const $ = render('radios', { name: 'example-name', diff --git a/src/components/select/template.test.js b/src/components/select/template.test.js index cbf108585b..bc1e099203 100644 --- a/src/components/select/template.test.js +++ b/src/components/select/template.test.js @@ -1,9 +1,20 @@ /* eslint-env jest */ -const { render, htmlWithClassName } = require('../../../lib/jest-helpers') +const { axe } = require('jest-axe') + +const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') + +const examples = getExamples('select') describe('Select', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('select', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders with classes', () => { const $ = render('select', { classes: 'app-c-select--custom-modifier' diff --git a/src/components/skip-link/template.test.js b/src/components/skip-link/template.test.js index c874cdb449..7c7667940d 100644 --- a/src/components/skip-link/template.test.js +++ b/src/components/skip-link/template.test.js @@ -1,8 +1,19 @@ /* eslint-env jest */ -const { render } = require('../../../lib/jest-helpers') +const { axe } = require('jest-axe') + +const { render, getExamples } = require('../../../lib/jest-helpers') + +const examples = getExamples('skip-link') + +describe('Skip link', () => { + it('default example passes accessibility tests', async () => { + const $ = render('skip-link', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) -describe('skip-link', () => { it('renders href', () => { const $ = render('skip-link', { href: '#custom' diff --git a/src/components/table/template.test.js b/src/components/table/template.test.js index ecde503310..74cffba417 100644 --- a/src/components/table/template.test.js +++ b/src/components/table/template.test.js @@ -1,9 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('table') + describe('Table', () => { + it.skip('default example passes accessibility tests', async () => { + const $ = render('table', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders with classes', () => { const $ = render('table', { 'classes': 'custom-class-goes-here', diff --git a/src/components/tag/template.test.js b/src/components/tag/template.test.js index 274944e0dc..623d0012df 100644 --- a/src/components/tag/template.test.js +++ b/src/components/tag/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('tag') describe('Tag', () => { + it('default example passes accessibility tests', async () => { + const $ = render('tag', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders the default example with strong element and text', () => { const $ = render('tag', examples.default) diff --git a/src/components/textarea/template.test.js b/src/components/textarea/template.test.js index 2b7974c118..8457ff247e 100644 --- a/src/components/textarea/template.test.js +++ b/src/components/textarea/template.test.js @@ -1,9 +1,20 @@ /* eslint-env jest */ -const { render, htmlWithClassName } = require('../../../lib/jest-helpers') +const { axe } = require('jest-axe') + +const { render, getExamples, htmlWithClassName } = require('../../../lib/jest-helpers') + +const examples = getExamples('textarea') describe('Textarea', () => { describe('by default', () => { + it('passes accessibility tests', async () => { + const $ = render('textarea', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders with classes', () => { const $ = render('textarea', { classes: 'app-c-textarea--custom-modifier' diff --git a/src/components/warning-text/template.test.js b/src/components/warning-text/template.test.js index 99bd364c2c..a6071f652f 100644 --- a/src/components/warning-text/template.test.js +++ b/src/components/warning-text/template.test.js @@ -1,10 +1,19 @@ /* eslint-env jest */ +const { axe } = require('jest-axe') + const { render, getExamples } = require('../../../lib/jest-helpers') const examples = getExamples('warning-text') describe('Warning text', () => { + it('default example passes accessibility tests', async () => { + const $ = render('warning-text', examples.default) + + const results = await axe($.html()) + expect(results).toHaveNoViolations() + }) + it('renders the default example with text', () => { const $ = render('warning-text', examples.default)