{"_id":"axe-webdriverjs","_rev":"72-126a67aa95fea39aaedd73f1be344257","name":"axe-webdriverjs","time":{"modified":"2022-06-13T03:56:52.371Z","created":"2015-06-12T20:10:50.765Z","0.0.1":"2015-06-12T20:10:50.765Z","0.0.2":"2015-06-12T21:05:51.798Z","0.1.0":"2015-06-12T21:11:50.510Z","0.2.0":"2015-08-17T14:21:16.613Z","0.3.0":"2016-08-03T19:02:42.254Z","0.4.0":"2016-09-27T14:04:11.522Z","0.5.0":"2016-12-22T18:33:03.475Z","1.0.1":"2017-05-02T15:50:13.900Z","1.1.0":"2017-05-02T17:17:22.387Z","1.1.1":"2017-05-20T21:36:15.536Z","1.1.2":"2017-06-14T20:08:05.633Z","1.1.3":"2017-06-27T20:33:11.790Z","1.1.4":"2017-09-18T18:40:49.706Z","1.1.5":"2017-09-19T20:15:46.138Z","1.2.0":"2017-11-17T01:46:36.404Z","1.2.1":"2017-12-19T12:40:27.810Z","1.3.0":"2018-01-18T16:54:44.291Z","2.0.0-alpha.1":"2018-01-19T09:24:01.590Z","2.0.0":"2018-03-28T16:04:49.139Z","2.0.1":"2018-06-25T13:54:18.627Z","2.0.3":"2018-11-05T13:52:11.967Z","2.1.0":"2018-11-13T14:51:35.161Z","2.1.0-canary.0580841f":"2019-03-06T18:28:46.378Z","2.2.0":"2019-03-08T17:03:30.672Z","2.2.0-canary.dedf50df":"2019-03-11T16:33:33.846Z","2.2.0-canary.bda73580":"2019-04-16T15:15:59.966Z","2.2.0-canary.157be91d":"2019-04-25T09:31:34.918Z","2.2.0-canary.2d07dc39":"2019-05-06T15:11:47.475Z","2.2.0-canary.56b1419a":"2019-06-18T14:42:43.099Z","2.2.0-canary.ddea87b4":"2019-06-18T14:48:18.972Z","2.2.0-canary.1b85ae02":"2019-06-25T09:52:09.600Z","2.2.0-canary.92fb739d":"2019-06-26T08:06:16.448Z","2.2.0-canary.9d90efe5":"2019-07-03T15:21:13.754Z","2.2.0-canary.6a0cade7":"2019-07-03T15:41:31.023Z","2.2.0-canary.cddebecf":"2019-07-03T17:35:17.295Z","2.2.0-canary.d625312d":"2019-07-09T16:33:24.872Z","2.2.0-canary.9fdc92c7":"2019-07-16T19:15:20.174Z","2.2.0-canary.5c0cd637":"2019-07-24T16:22:27.119Z","2.3.0":"2019-07-29T16:01:10.693Z","2.2.0-canary.781c47b1":"2019-07-30T13:38:35.186Z","2.3.0-canary.30023b03":"2019-07-30T15:24:45.106Z","2.3.0-canary.c196cf60":"2019-08-28T15:27:50.279Z","2.3.0-canary.65fb5e2b":"2019-08-29T17:39:15.775Z","2.3.0-canary.33951bf6":"2019-10-02T15:17:46.810Z","2.3.0-canary.d657746a":"2019-10-23T15:32:52.979Z","2.3.0-canary.6b71ed8d":"2019-12-11T16:08:59.860Z","2.3.0-canary.c76d3f7d":"2019-12-11T16:27:42.956Z","2.3.0-canary.62b21d4a":"2020-01-06T15:39:17.686Z","2.3.0-canary.49d2af44":"2020-01-09T18:46:53.151Z","2.3.0-canary.35a0f5c7":"2020-01-29T20:01:36.110Z","2.3.0-canary.aa9c57e8":"2020-03-18T14:45:38.672Z","2.3.0-canary.c7dbe9ef":"2020-03-18T14:56:15.080Z","2.3.0-canary.7fb882c0":"2020-05-15T15:16:43.847Z","2.3.0-canary.e4705ccf":"2020-05-28T15:22:03.282Z","2.3.0-canary.eb76caa8":"2020-05-28T17:10:43.226Z","2.3.0-canary.4c819177":"2020-05-29T15:49:42.742Z","2.3.0-canary.6f128114":"2020-06-10T08:50:05.366Z","2.3.0-canary.afb145c4":"2020-07-14T09:32:28.514Z","2.3.0-canary.e970a789":"2020-10-06T13:31:57.922Z"},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"npmdeque","email":"axe@deque.com"},{"name":"wilcofiers","email":"wilcofiers@gmail.com"}],"dist-tags":{"latest":"2.3.0","next":"2.3.0-canary.e970a789"},"description":"Provides a method to inject and analyze web pages using aXe","readme":"","versions":{"0.1.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"0.1.0","license":"MPL-2.0","main":"lib/index.js","author":{"name":"David Sturley","url":"http://deque.com/"},"repository":{"type":"git","url":"https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"dependencies":{"axe-core":"~1.0"},"devDependencies":{"axe-core":"~1.0.1","chai":"^3.0.0","grunt":"^0.4.5","grunt-contrib-connect":"^0.10.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-watch":"^0.6.1","grunt-mocha-istanbul":"^2.4.0","grunt-mocha-test":"^0.12.7","istanbul":"^0.3.15","mocha":"^2.2.5","proxyquire":"^1.5.0","serve-static":"^1.9.3"},"gitHead":"3ebe21caf41fc3859d61cb699b0a7fda03b4f0fb","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs","_id":"axe-webdriverjs@0.1.0","_shasum":"f2ee9454829c3baa2e8296856124ec7ef8e3a526","_from":".","_npmVersion":"2.7.5","_nodeVersion":"0.10.38","_npmUser":{"name":"circusbred","email":"circusbred@gmail.com"},"dist":{"shasum":"f2ee9454829c3baa2e8296856124ec7ef8e3a526","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-0.1.0.tgz","integrity":"sha512-hi6YOtrKrXH+RcgbWkQ2b7I//ZPZ0cP49k7hemejm4ep0f3jGWJApHteNWiJaseFg+Kge6SWDsHxDzX1D2T8UQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEsxuQ1W8Lb8KIhK/R8Jcw1H7Acv5nPfb/sAQOJLR2yDAiEA5OAVv000qvhHqoLGvLaSqqV2Xp2NHpXePwnmtXuzt+Y="}]},"maintainers":[{"name":"circusbred","email":"circusbred@gmail.com"}],"directories":{},"deprecated":"deprecated"},"0.2.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"0.2.0","license":"MPL-2.0","main":"lib/index.js","author":{"name":"David Sturley","url":"http://deque.com/"},"repository":{"type":"git","url":"https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"dependencies":{"axe-core":"~1.1.0"},"peerDependencies":{"selenium-webdriver":"^2.46.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^0.4.5","grunt-contrib-connect":"^0.10.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-watch":"^0.6.1","grunt-mocha-istanbul":"^2.4.0","grunt-mocha-test":"^0.12.7","istanbul":"^0.3.15","mocha":"^2.2.5","proxyquire":"^1.5.0","serve-static":"^1.9.3"},"gitHead":"6a311b35e29c321d844ee707843db2d4f390711a","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs","_id":"axe-webdriverjs@0.2.0","_shasum":"5e31edaf6e9ba33442762cfd85de3a07473c1155","_from":".","_npmVersion":"2.7.5","_nodeVersion":"0.10.38","_npmUser":{"name":"circusbred","email":"circusbred@gmail.com"},"dist":{"shasum":"5e31edaf6e9ba33442762cfd85de3a07473c1155","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-0.2.0.tgz","integrity":"sha512-Krjj5RTv3RVU628V6N9IoG49i1qBOR/5IsZasUNLcYhW7906IndtcidVycPRZ0rH3oqugAcBe6hSR5PMV8G16w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGyIII/2SBPzICPsmYJ1iS47Q4653w94H+/kzVFFSbJvAiEAh6iAJdsYSYqzVzNs2Up8EuTEG1JaSNZXnngMcY2pvzk="}]},"maintainers":[{"name":"circusbred","email":"circusbred@gmail.com"},{"name":"dylanb","email":"dylan@barrell.com"}],"directories":{},"deprecated":"deprecated"},"0.3.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"0.3.0","license":"MPL-2.0","main":"lib/index.js","author":{"name":"David Sturley","url":"http://deque.com/"},"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"dependencies":{},"peerDependencies":{"selenium-webdriver":"^2.46.1","axe-core":"~2.0.5"},"devDependencies":{"chai":"^3.0.0","grunt":"^0.4.5","grunt-contrib-connect":"^0.10.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-watch":"^0.6.1","grunt-mocha-istanbul":"^2.4.0","grunt-mocha-test":"^0.12.7","istanbul":"^0.3.15","mocha":"^2.2.5","proxyquire":"^1.5.0","serve-static":"^1.9.3","axe-core":"~2.0.5"},"gitHead":"29f95945d9524586c178414ffcc51f9cf6050231","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@0.3.0","_shasum":"abbdedebef634cd9045c44a2a8320f2c1b6392c0","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"dylanb","email":"dylan@barrell.com"},"maintainers":[{"name":"circusbred","email":"circusbred@gmail.com"},{"name":"dylanb","email":"dylan@barrell.com"}],"dist":{"shasum":"abbdedebef634cd9045c44a2a8320f2c1b6392c0","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-0.3.0.tgz","integrity":"sha512-+tEF3gABSwUNO10dRR0WEoep41W/Tj4H78bu2EkTh5YnF06oWBv9jfzx1vSSL8v8zQGa+xwyHqPUQjbo2Yt8Bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzPfiZ6RGA1Qdwtc/4i8Xr3M8Py33UavAG74wSsSkdrAiEAsi5eVQahPL2YUFH/2vDcd91B1dS7K2cms/NGv/smSmg="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/axe-webdriverjs-0.3.0.tgz_1470250960933_0.13444312708452344"},"directories":{},"deprecated":"deprecated"},"0.4.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"0.4.0","license":"MPL-2.0","main":"lib/index.js","author":{"name":"David Sturley","url":"http://deque.com/"},"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"dependencies":{},"peerDependencies":{"selenium-webdriver":"^2.46.1","axe-core":"~2.0.5"},"devDependencies":{"chai":"^3.0.0","grunt":"^0.4.5","grunt-contrib-connect":"^0.10.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-watch":"^0.6.1","grunt-mocha-istanbul":"^2.4.0","grunt-mocha-test":"^0.12.7","istanbul":"^0.3.15","mocha":"^2.2.5","proxyquire":"^1.5.0","serve-static":"^1.9.3","axe-core":"~2.0.5"},"gitHead":"8d6cd08fabf507134fe3c6cf33516af00d8f4eb8","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@0.4.0","_shasum":"0b462794f59a33d595afbba6917dcd9c35007e37","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.5.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"shasum":"0b462794f59a33d595afbba6917dcd9c35007e37","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-0.4.0.tgz","integrity":"sha512-fbND6dEI4+50rOz+nZ1UNf2inJ5cjZ6mTijNL/abttLN7oLIAtItGROdraP+5E2kqJRGZJfgywPyM+HrJvC4fA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFDLGcSAmUxGuwTRqfMlPcQYf7t8dMX3EG+ilkbvFtl7AiEAmgZegLM1Vye1j4grotNNKkYWSK05v9Vpg3oFBWdyZ4k="}]},"maintainers":[{"name":"circusbred","email":"circusbred@gmail.com"},{"name":"dylanb","email":"dylan@barrell.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/axe-webdriverjs-0.4.0.tgz_1474985050018_0.1665313681587577"},"directories":{},"deprecated":"deprecated"},"0.5.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"0.5.0","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"preinstall":"node lib/warn.js","test":"grunt test"},"peerDependencies":{"selenium-webdriver":"^3.0.0","axe-core":"^2.0.7"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3","axe-core":"~2.0.5"},"dependencies":{},"gitHead":"72497ebd7eb9a0c0bdd15d366937ccfa3e267f85","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@0.5.0","_shasum":"8e314941f0642001d4802d812dc833b580a008ce","_from":".","_npmVersion":"4.0.3","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"shasum":"8e314941f0642001d4802d812dc833b580a008ce","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-0.5.0.tgz","integrity":"sha512-I6RWdzDrlTOwWioeFRrUe8ucf1N8rVNeTfyPX00VNes5uJ6FycMZPw5c1GBXtK6B03/JpBns5Ns3XZzoRhL+9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZRdHDxmVQ3tEyWZCj4QSzdoyXQS19clLeGzlnpRebyAiEA0O1sJH/Yiwwc3vZHpUUOnhkkbdt6aN6cumIO/2yE4a0="}]},"maintainers":[{"name":"circusbred","email":"circusbred@gmail.com"},{"name":"dylanb","email":"dylan@barrell.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/axe-webdriverjs-0.5.0.tgz_1482431583227_0.9383552374783903"},"directories":{},"deprecated":"deprecated"},"1.0.1":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.0.1","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"preinstall":"node lib/warn.js","test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1","axe-core":"^2.2.0"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3","selenium-webdriver":">= 2.53.1","axe-core":"^2.2.0"},"dependencies":{},"gitHead":"7c81ed7264f29eff17b86e7f759757edc3242cf3","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs","_id":"axe-webdriverjs@1.0.1","_shasum":"27cbb04dbb7bf7a6540c4738df44b0dbe794fe7b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"dylanb","email":"dylan@barrell.com"},"maintainers":[{"name":"circusbred","email":"circusbred@gmail.com"},{"name":"dylanb","email":"dylan@barrell.com"}],"dist":{"shasum":"27cbb04dbb7bf7a6540c4738df44b0dbe794fe7b","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.0.1.tgz","integrity":"sha512-9mIiixZfqoa+FNEsFxjPMK8nDTVLP09mXJbdvoY/ntQpsST7sH+L3lfCUZhz7EyNmN/9SD12fnqaskDgUnx41Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuS/YGPym8Ujb48WOiv0Q8z4XaUcygO/NFsZlWHpWQ3AiBf66xyiPVIduBpwrRNIjXsG5AGMKnfzEnocAjt/l+HZg=="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/axe-webdriverjs-1.0.1.tgz_1493740212158_0.6405845924746245"},"directories":{},"deprecated":"deprecated"},"1.1.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.1.0","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"preinstall":"node lib/warn.js","test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1","axe-core":"^2.2.0"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3","selenium-webdriver":">= 2.53.1","axe-core":"^2.2.0"},"dependencies":{},"gitHead":"f0cb80793f4c0cf7160cebbdb286e78b3c9f1c2a","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs","_id":"axe-webdriverjs@1.1.0","_shasum":"45e1cb590580395e5f8b15f4054e6f21c53f45cd","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"dylanb","email":"dylan@barrell.com"},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"dist":{"shasum":"45e1cb590580395e5f8b15f4054e6f21c53f45cd","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.1.0.tgz","integrity":"sha512-zq4wQdA6XAWWxI7FCgYNKXxkUPmQ5s+eMaVeapYFeI9hFzstN1YBQBgoFTCR5D65TbHUcClvv1D2NyR6d0VvoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOJr3YzxEdM3kd2L9/LsdAgYQh7UsF2MQTBSDGfiPizAiEAiYo2JuMgQ8DJ5GW9QNdfrDrHrjOQYtpXkLGpp0WFOE8="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/axe-webdriverjs-1.1.0.tgz_1493745441831_0.5139748207293451"},"directories":{},"deprecated":"deprecated"},"1.1.1":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.1.1","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3","axe-core":"^2.2.1"},"dependencies":{},"gitHead":"6964a0baa3655b64ddbe1bdcec572c2077538f4f","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.1.1","_shasum":"df958031ff31f8123f027c07be10954a66eee018","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"shasum":"df958031ff31f8123f027c07be10954a66eee018","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.1.1.tgz","integrity":"sha512-fQUr7RwJ7rOl33ZGBO7JeVC+UW6n+299TnFBaoFktywFqzbJdZsqQ+LZmE7kunMxsMFsIPRq7YdubDyxkQhonw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpHfO7YjnN2OjODNQ7BlkYRQHr+404GWhboqpIHPhS4AiEA8xVxzRc3EjaiP05Wm0apnbr80k9OvhQvis+s2tVHkF0="}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.1.1.tgz_1495316175341_0.7211085094604641"},"directories":{},"deprecated":"deprecated"},"1.1.2":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.1.2","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3","axe-core":"^2.3.0"},"dependencies":{},"gitHead":"fc3396553395484e3d18a9e94f6943f4bd060abc","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.1.2","_shasum":"61445915a33a0f6964cd2365df81546ce94ab41b","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"shasum":"61445915a33a0f6964cd2365df81546ce94ab41b","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.1.2.tgz","integrity":"sha512-kX7AtFyOZptJaCgCWpiKc9mdrloxYHgBzrgqimqs48nsxChxj2r8gqhHV8dKE9i6GVzoA2irurBDUTDKKG7V3Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFE//FP5JOCegw2zBZoGHPTiMh5afgXrnucCm+nO+mlRAiEA4dZlOC+72VNaMWVZFsc3szZRtDrD63CaxUxBZR7sTk8="}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.1.2.tgz_1497470885507_0.681001317454502"},"directories":{},"deprecated":"deprecated"},"1.1.3":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.1.3","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"^2.3.1"},"gitHead":"31b29be930c1650759b6fc69b813125ae9cb20da","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.1.3","_shasum":"948a972e4d0e2526b41c60a9b44064932bb6e06f","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"shasum":"948a972e4d0e2526b41c60a9b44064932bb6e06f","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.1.3.tgz","integrity":"sha512-im0aDZwiRfBH/0rYzGs7xFt5dZvf+tRQoqxlUU/K5CpOI71uG6FtOizZ/T7JIwgnPNmtp7T23AsoaP3DWFqI+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASoiDywJ9xtAnviebJvjrrN6K4JBIywSR6PDAZgAhbNAiBvQjzkDg15uMDldjQKl9CuVkoa3pWGYmQ/QyBGHtdzWQ=="}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.1.3.tgz_1498595591667_0.5613541721832007"},"directories":{},"deprecated":"deprecated"},"1.1.4":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.1.4","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"axe-core":"^2.4.1","chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{},"gitHead":"95a2ca1dfe87b376bec91f39ac981385e7172025","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.1.4","_npmVersion":"5.3.0","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"integrity":"sha512-PjKEDpwK0nEibKWNIYK/JHoCRKJ4ypn0BOGuuSVo5AjNBWgzDgzd40POq7TyJon745/iekbyPpvOrElHXKJ58A==","shasum":"1708267181d8d90249288d5a3264c69752e3c5fe","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.1.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFCIo9HtTEW8Ov3KHOk9g9+njgYZJVgHMkS7/eep50h/AiAOGV6NANubVv10SOXy6dHTowVQDs+F1Sz+cWSmF8csUg=="}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.1.4.tgz_1505760049587_0.7026209463365376"},"directories":{},"deprecated":"deprecated"},"1.1.5":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.1.5","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"^2.4.1"},"gitHead":"059d18d9081883a0dc3834776bd232df2b6459f7","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.1.5","_npmVersion":"5.3.0","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"integrity":"sha512-Nsb/6gyIGYFmQbo3NP14MZghNQff5m+v8D4ex4baad6DvtFzg6T843WZvbdb5F9oHCUWnXy5cgw4LhEpj4ffww==","shasum":"9fd9cd2acbe4b728dca4e32e8966e45e7848ee54","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeugXaHckJEHY4z6+7ektz00FrKzn3fyNVQLz4e9DnIAIgHmdCHen3+qvLCNWjlUmlU31OudxGnkzZtmzNyqm4aUM="}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.1.5.tgz_1505852146024_0.11280310153961182"},"directories":{},"deprecated":"deprecated"},"1.2.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.2.0","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test","build":"grunt build"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"^2.5.0","selenium-webdriver":">= 2.53.1"},"gitHead":"b9dfef85147f6edadd2c7d5309951edb5650607a","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.2.0","_npmVersion":"5.5.1","_nodeVersion":"8.0.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"integrity":"sha512-5ONeCl65pIjxZ6CvfYf1SZclHBWBBklGis3jVrsOu/bpyWaJgtNYu8VEaXHWbO8g5xBUl4v5zvIrthRFkhqhsQ==","shasum":"bb792d487e34ccc9b7dbe36166c54b7d28cb042d","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlIQwe04EJIpxyOeP+VdkNdOu5mPEu9Bq3TTsd49ogKAiBc+TxZSqgXOsJ3pYb5uA2hVtqmq7S02Dl4UidOh3FPiA=="}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"marcysutton","email":"marcy.sutton@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.2.0.tgz_1510883195382_0.4539098476525396"},"directories":{},"deprecated":"deprecated"},"1.2.1":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.2.1","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test","build":"grunt build"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"^2.6.0","selenium-webdriver":">= 2.53.1"},"gitHead":"d6e65181908b8b1a8518f3cb0e897754980e7f92","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.2.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"wilcofiers","email":"wilcofiers@gmail.com"},"dist":{"integrity":"sha512-SDh12aOKMhpjRkgrS/yXdS5uqz1hgSwTgpqPf3Vp4FECdv4T4JjUKoj2H/cHeOXjpySgmovwGEDk+YTc7iSwFw==","shasum":"134fd3cebe185e353cf765a8ef22a4799f3ab1be","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbIMXX9/OCtldyc9P8Dlh2Xq1iQustMJ7lTISnFX4qCQIgePqRwPzqrWVTvplCiT4CwIIDTHcb89rA0Rw+yrirGmo="}]},"maintainers":[{"email":"wilcofiers@gmail.com","name":"wilcofiers"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"dylan@barrell.com","name":"dylanb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.2.1.tgz_1513687225654_0.09469002345576882"},"directories":{},"deprecated":"deprecated"},"1.3.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"1.3.0","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test","build":"grunt build"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"^2.6.1","selenium-webdriver":">= 2.53.1"},"gitHead":"b62903711613c79ddd5be3e6f599a66457132703","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@1.3.0","_npmVersion":"5.3.0","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"integrity":"sha512-DGjz5DqQ+btGCj49cFSF+ZK9UWcYCwXiYqIlfBDBbPAen2u/plEUsHBiQODpkhTpbFdnUgCwxf6cwaP8Ku6hCw==","shasum":"3fbef17de7fe19972dc2deb3419a574d712c3912","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-1.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEUo+70t3lJ10pL83iBK4hPe8YtI7N1tirFFN6NwohRXAiEAr+5AZxIgL78M60weiUC1FSfg2SbY9bMUFxTmZKB9eXw="}]},"maintainers":[{"email":"wilcofiers@gmail.com","name":"wilcofiers"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"dylan@barrell.com","name":"dylanb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-1.3.0.tgz_1516294484137_0.012861357070505619"},"directories":{},"deprecated":"deprecated"},"2.0.0-alpha.1":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.0.0-alpha.1","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test","build":"grunt build"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"3.0.0-alpha.9","selenium-webdriver":">= 2.53.1"},"gitHead":"097a01243a8d613e377897a2f9f7136b7eb4776b","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.0.0-alpha.1","_npmVersion":"5.3.0","_nodeVersion":"6.9.0","_npmUser":{"name":"marcysutton","email":"marcy.sutton@deque.com"},"dist":{"integrity":"sha512-Vs+kZ3TNpTSEeqVMMqfDingEQ2xG1kxo2emdr7ILH4sH7btF73siSmZuwf9aXDKvICpArSrsW3FlwBGBG26TJQ==","shasum":"66f15cde52d55a3331bef73eac56298ec178581e","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.0.0-alpha.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgo5bGtz1Ud5MFdo099dx3RBmAzGLz6b33nxlySseVbAiB4FVwy+63s8Xhbheq65BSA9FQ3QEsj4RbnIRWw9ea1WA=="}]},"maintainers":[{"email":"wilcofiers@gmail.com","name":"wilcofiers"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"dylan@barrell.com","name":"dylanb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs-2.0.0-alpha.1.tgz_1516353841494_0.8735281289555132"},"directories":{}},"2.0.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.0.0","license":"MPL-2.0","main":"lib/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"scripts":{"test":"grunt test","build":"grunt build"},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"chai":"^3.0.0","grunt":"^1.0.1","grunt-contrib-connect":"^1.0.2","grunt-contrib-jshint":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-mocha-test":"^0.13.2","istanbul":"^0.4.5","mocha":"^3.1.2","proxyquire":"^1.5.0","serve-static":"^1.9.3","sinon":"^1.17.3"},"dependencies":{"axe-core":"^3.0.0","selenium-webdriver":">= 2.53.1"},"gitHead":"a0349b7cc04f160ed4544ebc5a6a6367a07fc660","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.0.0","_npmVersion":"5.8.0","_nodeVersion":"8.9.1","_npmUser":{"name":"wilcofiers","email":"wilcofiers@gmail.com"},"dist":{"integrity":"sha512-2aWgu6DxJBz86Q2ioCYud3lzScmec4tNlk5haK+RHdhwPI+j52tTxuUwHAjriEFVXGoQkBc4NzKjdCY+bdiznw==","shasum":"3395a1d22f4750eeb6da87e8a21408eecde0a348","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.0.0.tgz","fileCount":8,"unpackedSize":33035,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGIBKx4se2ZLujBy4V5F2pcj0DH1BKsGHNfkC3DfkatAIhALjLacZNeZ0ipTqBKYSrcEIDVkF/ZJkBFCP94RQkYvaf"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.0.0_1522253089046_0.30186282064946246"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"2.0.1":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.0.1","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","precommit":"lint-staged","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.1.2","eslint":"^5.0.0","eslint-config-prettier":"^2.9.0","http-server":"^0.11.1","husky":"^0.14.3","lint-staged":"^7.2.0","mocha":"^5.1.0","nyc":"^12.0.2","prettier":"^1.13.5","proxyquire":"^2.0.1","selenium-webdriver":"^3.6.0","sinon":"^6.0.0","standard-version":"^4.4.0"},"dependencies":{"axe-core":"^3.0.0","babel-runtime":"^6.26.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"gitHead":"ce8d9acc83f0b4d3c52f5df557c3561259e00469","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.0.1","_npmVersion":"6.1.0","_nodeVersion":"8.11.1","_npmUser":{"name":"wilcofiers","email":"wilcofiers@gmail.com"},"dist":{"integrity":"sha512-TdRNoV7martUlw6PvQ4kff86Y9NLqdS1gWDxe71oB4YQfalT8I7zWaGoHqKmFYe6p4XToUHfXWcWKgol+XW66g==","shasum":"4024185ba3daa3d580b94b3ebc62c4b12bd11c9f","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.0.1.tgz","fileCount":33,"unpackedSize":81602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMPQKCRA9TVsSAnZWagAAY88P/RSEeFBaRFNxa8RqPLma\nw9gzzGQ8KtD7LyTLYBuAXV4HFu92ICz30CZVM3TfnJYsj/C2UTrIkVYSVIny\nt/6Z+15mBBO/oacGJuBmdnOKHbrZ7+wC73ZTrr8dgbWsbbCiIKdXfwOFIqw2\n+komn6K+q/B7aOvHMNVo0P2PulSFVerQoE5bPegTqugWF4khQtaWi3EZCRPs\nSYM4Kac0o5GM63mGB4AKL6ABFGPRhxmT+Kw4T0ShoVIv3AWxvAy1SaQYrHCX\nPMzHJWY7D2R/HdPgvubG2vbq/GB9Ecpd4juz0fQteanI6ZwkuQ6vCl+DM6TC\nw+/rLf/d4/EQ6GYKj9p7LXoooxsOAivCF/WjJzcPpQ2XJshNANQ0/v5/gk0o\niY8aEta3bFJk2PMEuBEvxCA8kvaVTYXYufzD36qs2qy/EBZ/4cPaIGYG2JBF\nbdkT7u2h97ufsLaoSROzS9Jd8kjpyUjk1aqaxZj93xqRnr37EWQ1b2xU4pgW\ni47Hm1anRpQ3sLSXZ2mQ7NjQf64/ts9Q9ZhI/Csu8QAYDG5pvHJm2pMm2kaF\nwvs1BsCaTaE8pwjJi1l94/Qoh6BjTZedIZ3grWnEF3W+zZftdUkqe2drYPuK\nUIaJitJ1F/FZOEbGBJ70ZGrmDnZkOTOIgEyvGk+zKQhnJYMdWr/2YwIKSUC7\nqP6f\r\n=Dg83\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSHfZPkkvwN2d0rLnN15MdSDQr9fFCRozuseU0p+kyNAIgJ7j4NOZukMu8WfPRxfMyTw4Q4vsjb3gD/7IpnqHFE98="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.0.1_1529934858515_0.24094557458307975"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"2.0.3":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.0.3","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.1.2","eslint":"^5.0.0","eslint-config-prettier":"^3.0.0","http-server":"^0.11.1","husky":"^1.0.0","lint-staged":"^8.0.0","mocha":"^5.1.0","nyc":"^12.0.2","prettier":"^1.13.5","proxyquire":"^2.0.1","selenium-webdriver":"^3.6.0","sinon":"^6.0.0","standard-version":"^4.4.0"},"dependencies":{"axe-core":"^3.0.0","babel-runtime":"^6.26.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"98289690090534fda17f89758764d855b67cb8ea","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-zhJ1i4LZZ6O/l2dzR4hfY/Ox7gWQwbhl5M57JqMWPaTq+TI19ZXBzGRgBdM2vaeCQrLhHxjDk6YG6tfgORtx4A==","shasum":"b84b63ddc345ffbc978fd9b9d48f03f04d3544fe","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.0.3.tgz","fileCount":35,"unpackedSize":82737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4EsMCRA9TVsSAnZWagAAIw8P/ii8oVmYMKpnpVfWquKF\nIEXl9cBcWoOPfxT54AFOmZAihjSko3UEKnCaZSwWUjte/WKG2CIanmLlU4gM\nob0MjcOT7SvdMoS4lez4V2aVi/2lw86dNuwAQJo/rZiAg3D+5c6Lj93yvcQk\nmLQi1dVL1jRyEZlQRk2KR2/qtqa457k/nVL5far2z5kqTH39PnlfMtOYFElR\ny+hxuYejEGvDSFAen6gTqvjxS0ndL1TiVe+lXY4dv2xvbpiQoa8ogNFmUaRU\nQu4XvuTr/lWMKjZi1p6xqqrku35blmNKbx4yrJ2eFq0GbZug4Kdnqm4AaYYI\nDPuBLRjyqoQPPe+NHqy0015cvNU4QatvK7Cb5pJHK9R4jwRknSsnmnbHdvzw\nXN2By+qMHzSBxvkwGx1bUnZq92m7lC+L6j5gnyQWejVwMwVqZ4kdcpbCNv69\n/8cXPngBN2l7vQpE5QfIegNMb3C/HUmP3pv5e6/Cwk3DouRgbUnVVS2sp80G\n7sVlnCVwO8oDzvNgshG0gZP4LFhK2lawwSpqLgPlPH7IXilDdhcYGNbthM6M\nTNprFnoFMgwK2eiNQOjw64yxHQkmGonrxx1uzNGieC/kNyL65Suowvc0gdjT\nmu3JiRuoc7gGnbB+3XHuitMvaw6YEXc83liC3Dt7ONiOkoUhy53X9cMV1vMQ\ndQe9\r\n=Fwkp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4Lf0ubIcyLHbH0mt3JjM9ROXuCwRQMeG7jBzBAYMMCAiEA61azMLa9+IxtaeH50o232RT4Z9YetBLZS9ItmMgaUlo="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.0.3_1541425931836_0.33106172576279125"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"2.1.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.1.0","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.1.2","eslint":"^5.0.0","eslint-config-prettier":"^3.0.0","http-server":"^0.11.1","husky":"^1.0.0","lint-staged":"^8.0.0","mocha":"^5.1.0","nyc":"^12.0.2","prettier":"^1.13.5","proxyquire":"^2.0.1","selenium-webdriver":"^3.6.0","sinon":"^6.0.0","standard-version":"^4.4.0"},"dependencies":{"axe-core":"^3.0.0","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"6acf3a18779299d12add85dd1d8a0874128c123e","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-0gX7SvxSqnT2OTDTiAYJPlqw08Lt+dGW24jQhQHgYZCp1kSuP17koKUbNxJNhU1bHITYSz9pK64me7om2Wn6gA==","shasum":"79dc1c83bc98e85019f53e5f398640c83acfdda1","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.1.0.tgz","fileCount":35,"unpackedSize":90525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6uT3CRA9TVsSAnZWagAACwcP/0jYcwSlY9aMoig3PHSz\nt8Q8LafjZKsE9RruG0XsfTAf/1eLBM+xB/i2GoGO6eLwrjXa9FlqqIeU9EB7\nhWDPUt01QV+tLX1TNTfs/UT9mI/FKF5JbVzDzGy7gKXBW2q2MlJYKYPpKZKL\nuXyNcumwo4DmIx/J8+DgSlg4WDjEsObHgCoMw8MBrbopNYwnFZ6uVOaG3bEZ\n+kD3qlze4Yx+jgCpaW+yV6MpqzdhL9mv2Zl74KsFA7xUVWga024fIyQC8fcb\nojCnEUxitDnUZ6fvySwN47qtO/QRjzGrB9umHUz69ZS3qfmglyTaXODcLNC5\n2D9H78RH62O8hN1e4LdJSl5u6a+/x6NrH+40ZNfB/Cgo7sMMbQVNXARWOFou\nW0iFSBxtwwkeQg2ck1Cb2EMhZwsDahJ5S6BwKH67Wlg1vkAH3ExltX7yqkU5\nEZUqW42KKJc1qvwQl0xyiNcyOhSBF7tBqU6MZndkpJ7lH8GEEO6ME4dVVbUO\nqfchkleOUPRYS/QgPs9HZJb/O6+wb4mZ43+vcBbM3UMwHaaNObI6cuDpb3qQ\nPMclRJDeeViqZD83wVTnuASxhxBZ/CLO5nFf81HwJ3DbGGmRxAeirYuLte8H\nfwIcQ8aTs8jxLVsnlizIpRgJtbzZDCSOoT7pNLMZFlgs65viDvJRC5dPajmv\nrQL8\r\n=KHJb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsroxaR/ctvUKGAVZOcAxhv7dvKTqFVrfruwbNYe4guAiEAxzV5Z+jLkr4oReOVsrvishdZlyFr5PM3xbS4sLmWxAE="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.1.0_1542120693995_0.9818667178946949"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"2.1.0-canary.0580841f":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.1.0-canary.0580841f","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^1.3.1","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^13.2.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^5.0.0"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"0580841f2a4e01af4b3e48c2bcead86a1002202d","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.1.0-canary.0580841f","_npmVersion":"6.4.1","_nodeVersion":"10.15.2","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-SIRDXBU9+9I/SWt3eNaG6iLDZ7ruOC23uREodGTjOtbGNZA1bjp4cTO0GaPgvCLzyCocCARMtJ9wB79+XRVEcQ==","shasum":"419a7af675250536fe2dcaede26b3941439e8070","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.1.0-canary.0580841f.tgz","fileCount":36,"unpackedSize":92632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgBFeCRA9TVsSAnZWagAAJIQQAKUauP6oIDAnebBZyku1\n1/fI/4wk/frETQ0bX9gQJ7vtd7/AvSBiaLhiFnAq0Cj0WKiM4rWeSOGigSiA\n27ZuUKask0u9S4MaiCNIEgmnxEiIUqeoC+lX1djqVxuPuh8pfXooz+VJngsR\n/SnaAdlhyuaTSeo9MezyVerkRHGpzCKA9WxrUwli3AHIhKPKkCQbCob7yb/b\nOuC4TmJffJ1kInfiwnSH2DAp/mlDYIeZvbTfTTVGaqIIqpONkP02QqLEKjP2\nNoEJniM2xUBON5ybB/n13sZzk0gfT5L0ZGz98fDwCMpuviUxBWTAGQEW+ALB\nHZhFG8B3AGrZPJ3lZCAgRUp20eXv8XwrAYEzs8urxT3jQ0+vwOZd42xFy/wh\nIsb0lmPYJbhWKMqASQFCSvgFjrVdyRcIm3LxZ1RDYon5MGqLoAwxfIFLWc8W\nBRdYE70FBPHuCyiDx3QLiOcDsKUeG+OtlKoMyl/Yi/LTNfZSmtw8qDlHxBjG\nqQ1x4ATuhkjrj2sUa7v3jthyFd54zZ4jDWa4Y9j4tCFlH0cI7lw+MYIZ0oMN\nckYgdoWYF7Wge7EyPeHdwFD5eK2Wl56Z8GcTETdPnXP2aZP4iWACvQa3Rw42\ny5NJruTeBcSO1zFnyebxsIDL4JTaEzqPnSxh5oWCVh0ktp43sU+v1gVFjipF\nalaV\r\n=c2hZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARMH2gozfpcyNmxq95HE3ZILZwnmMV2clBByf5c3X0UAiBehk8z3hlHdlZX+JWGqqB4XTjZTLvypV6mwSMWxqdbww=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.1.0-canary.0580841f_1551896926228_0.8557136628148407"},"_hasShrinkwrap":false},"2.2.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^1.3.1","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^13.2.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^5.0.0"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"30a7b86cdeb1dbfca907b5577fa7d416c7141548","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.2","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-ckGIk3VaYkpXeESKSYYnPArSajlCVr+18wNFmBvms0H12thS5WaKK8nwtOzeN93SZB+EFn2M19VsGTy07XKxCw==","shasum":"4a63cd301b9b193207a03a3181e3be9cd6f15285","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0.tgz","fileCount":36,"unpackedSize":93871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgqBjCRA9TVsSAnZWagAAsxwQAJ4MbjKj4HURIZD5atf2\nDEWWKffyMH+FRiHh9vGuvLVfRs3FQqFds03TL8G2phECiz3lKhYGCxNOJnQ7\nSNCt4WZNXFpEuyb//tlWHg4K37o9yU2pHH/Z/FxkXUye2c+Eh7jKqiPHEl8O\n+qfozFBv1xCnsLGlhvcCs3nM02RRjXQo6sbLFuImvSsFfsVAT4ynJhbnSpRL\nVXhshDpitC2jI99OFWMew4Qvz9DbwXYfUJYpijw4hus2qzIXu4LDArfenV7c\nBGx/h4Xe1c3aOEg4JidgThJ1tNswta+YRTvLN3lOT6JqN4eN6pwycxmJEqYD\nnV5qweMkN5zx8hpqTiF73NrDgkNr59YcYYZSxEzBhFZsu94bQejF/9wCjaxt\nu3ftiRfkQYV88a6JMK3sDDVjJX8THhGgauThsa47h1ZT3IuIWWgx4hZzkKrz\nA4yvXlbivr+KX11juMHW8q0LY2u/wgnJ82FieLn2ilOgjiYd8XCrhR5BdRl3\nrMCtk2bRaGenGtXcKMqok8VLzjSwi8NT8QUuSAbRf8QI69Tfvol4VTgdtgIi\nPKoi4curSrh2YNSG95VinbMgOehAGqfQLWR9Kf4+qV9uTHXQ5i9+YrUP8Htg\nj+0uXdteTHeH9/6ltx/IU+55i86xWlbStcg0ChotrD7Laey6kY5byEdQWojx\nCH/c\r\n=oXMd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGKKZuwaUT5+WNzfQhWQVXyPnqjgi7mLQcDPOc9jkXF2AiB8GX6iAUJQCe/0psseEtW/sqfP4mPJEiixXWMJZzcWzA=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0_1552064610550_0.6640299130058416"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"2.2.0-canary.dedf50df":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.dedf50df","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^1.3.1","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^13.2.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^5.0.0"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"dedf50df8951b8056d15d9caf8d82c9418a4f629","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.dedf50df","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-4anAW1EzW2vZilLn4QO197MX9ATBjaZCAgqScWAVuF144aLISs0gftZnWHb90qpXT6WelN7rBR7gXZ3IDesbrQ==","shasum":"89f0881254944f1ce818a39a93484d85a86661b5","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.dedf50df.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcho3eCRA9TVsSAnZWagAAJqsP/RGcxfSSo5feFre2xgw0\nXpLbLq6rWTafABpqmVGpDDc63mjvAsLsgUO20p0E45TyBGj6FTNbffx+R876\nFYoe22LoYsKah4VmigK8DRJwFlnYIiZph4y1jykwrR56N3gVO4pvwGa2vZyu\nn65rTwaKcp7duf0HhTCmm0zX4SEDAfTtqZql3CXe2Y8N5Y7xmpBPohEVx9qY\nLxmLmb7UUt+jyghpjIlfCVPQteN0loutZ/wItaFRxAyCxRNfeYJk6NUPMvc4\navKkBzM3EUNjl7qksJRHdDFIO0Mh0oT8WonAKqDLceDSafJ3yCc+7jpSON7r\nabKK4WFSFhiCNX9IMxC9GxecgvEPcJAlapWi0bp50Xe9mOqHz7UKEcefkc/A\nmBp7xHHA2nhXlHc/hd4Boyo2N6uEKQ1sNuaVFnGx84aCPNmCEsrhvXsBdzUL\n7Cw6PcKNIUHkQ3lbbO8dldAigGxz5jtDFgOaeXJstuxpPyY4oUHH0fF8OFDb\nuJAfUVlLylIj8WxcFvnvHSWP2g7rQEEnA8lo2NeYVgDQTGpRetz2eWGY+rCW\nvL1m1KUrRCe7Ga7qHs5IOlcFqRx8HULjGVq/011SJwqlnEoAJbI/uFwN97MK\nLM9W9eV0IqmXKo6e/K+mAqjLEFpIRpWRuYGd0TZXx+JR7vsSsextLWmjDMse\nuiTy\r\n=9GUe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICa6jzQwMqj80/FJyjiuzg5fJ29TdH7VuQPeNp5O3PIWAiEAxW4B/9dz2WqbWguQRlxwZK3NVtl52Yny56gPhoG7YI8="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.dedf50df_1552322013668_0.8068868709145471"},"_hasShrinkwrap":false},"2.2.0-canary.bda73580":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.bda73580","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^1.3.1","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^5.0.0"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"bda73580598c325ee211dba5d64054bb083edaa2","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.bda73580","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-kyl8GPdEJJE4JeLGY68aQ5wCxkYZDEzqWxdywEUH1Y6I2p/Oti5cNxqxHIjTdaK4YHfYqerLRkxbIr706yHE3w==","shasum":"b441a3c6ab24924317bd7c9291fa06789d3ba811","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.bda73580.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctfGwCRA9TVsSAnZWagAAgXAP/3L/n4xyq0lRqtlPGX/k\nUV9+PxOg4nY+u3x9L/1BtEyLsXGvY7wVRclWdfo8LZxiMSLhxo5Pvghg1XQh\n37NV1OtCkPp0o6Jvf7NSPTZzqZT0A/xmFwZIm6h3qX0aIWXn7+TE7qlVf4wW\nLJ7tQ3BPk4VMLRasCM4bfnjKwfBqD5PFeFWUwMz+AX087S8J/6v2ihufAfxC\nctQ9FDsllKyhNqWlQ/2q6pbuszjKx6rJpUnkhmAZczOPVf/+EQFbkccwVYEK\npDjXNRq9zl2ahcOsZcpeZm6KSRU1s/8HFcdr7q8opstGaMBbptc27KttEHXO\nRDWF1xKrRNKxB33qrPHlLwnxyuskIJNW6ZvynvO/kvkSmruh5AWN0jUuYXKk\nU7s67rBuGiNXjBo3vq9nCGX68p2A7Z5PNK5CHXs9c9rrzhuw/RDcnECQ8UTC\nNaXHH5DwHOeg3BFJEjT8ywFV1MxoQiy8eNg0+D/iOB4XhMJ8EXBzxJqUB7JU\n6RBJrvUHpPbzOLjNN4EPmKqf9Mn9phyaT+IzO7RI7BLV8EOBGx5TakFgh6y+\nefxoE2A/ohpKwoAELqcIG4Yi9M3JNgY2iQa7Oi52RcNSUxOi9FIulIH/eKmK\nDpUyKsxdfGvbrFw3gxGQzUEYkgfJmGLBpaVW3hIQ4LCMZtsP29M4Ap+pN1LS\n/wLU\r\n=M4RK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEZM9/b/Afm8iZ+vQ1XotLo39pM2B4WBxlZ7cJ9nE3zgIhAJcG04xXWKnTAeSzpDAEvKIL/TK4Hit05EB5FIMOo8IW"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.bda73580_1555427759769_0.9605681935213388"},"_hasShrinkwrap":false},"2.2.0-canary.157be91d":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.157be91d","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^2.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^5.0.0"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"157be91d0abb44ce320878b7fc8d027662dba38c","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.157be91d","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-nMGXa1yneF1xRX2mHEQ9JnEVhIhpWVJx2ekfF+dFSY3sXPDMIKkl3VOFj3v1xg63CFYXWAhMqvnX0Wx6j7I/Bw==","shasum":"fadbbb54127dfa59a5974ee325d5970f8dfb8e64","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.157be91d.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwX53CRA9TVsSAnZWagAAcksP/2O352gUsPTY/VP+8Dq4\nucL4+MNbxJGroNUqTLu20mmDgsXdkF5+jzFBw8F+97B489/Kor+hHs+/WoK+\nL9+MBiC05LuePlwjxDbMaSdgeFktt5FXsiY3z4hUlCt849cjZIiofMWnm/kL\nkH+hveo8xKOIorG3zbJKQAR5uGjD87M3ecposfCmVhSsG9/Ofu9lLjeh8ru6\nZHeg6s0JuH+NFAF+s/rFLDMQqJG+NGmdJhTHYdnVtjXqbMFvgaBrkhKzIIEh\n+9hmrSx5soeOssHeEg+E7vFP1yeBg7tMB2hBHvD+PtwVZx8U19/QRs0DB+JU\nwW8S67kggR514q0zGIjHbrjAo4UW5xT1evJvz4KOEAkPbgeG0g4OWF3am3sy\nXZXZtTVfgJfsOSmRV7UCHG8MGrKo/9/umwPkIb+7qJtM6uCEU7lsOeJQLqYL\nTBAAkvfsFFa5AKBEVFJR0+elHa3sm7GuA4jKEO6zKvSwwXaMnhHablVOqz3Y\nmYZ51bLhoivch4ZScJQpZLiA35sxN6/FKiXStG7ESCNOcbN8oUwD8eJQ26Vb\nW6ncGdQ1ag/535jPJUvBzPZcuK1Waef8d2emgD2vAxYTADJHztY5vqcWQHQ8\nhLfS41+sw1kN2DAuvrs27KCuPpiHlmkwDIp+j2TXPKQQkcvkpKxsJj/aRJnl\nkTZK\r\n=lTPL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAzGcgaWl4xspKHaeHsqUUDl5MxzROrD5Hun/HA3iYFAIgLBHazgM5Xq3zpV3XpZ3iqTpxGvrriQbbK9SaWk1/8Pw="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.157be91d_1556184694697_0.7521093873759772"},"_hasShrinkwrap":false},"2.2.0-canary.2d07dc39":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.2d07dc39","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^2.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"2d07dc39cde0935abadf6dcfc9fc8393bdc259fc","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.2d07dc39","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"dist":{"integrity":"sha512-YnTa/Hg1ROTWI+Nyie23UJdG/Vk7FajlNEB2IwAtiLnRBXMIT+SQrEzvesjCe2ZLCKH43bGNuOArQiPl9D22TA==","shasum":"2e448e1f3100ba798d0a65aeb5715d0953994532","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.2d07dc39.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0E6zCRA9TVsSAnZWagAA4S0P+wayXUpY+dYbtfsrvEwL\nuv2NkBT0JAhDwfON4x842bEX6L6Fu+1r6pkFWrpJvZB7yEx0I+KzfQe/hOCk\nxhGjNv3aGF4Uk7zKrMlutm7Yo13OOaWyS+t3oyi/5/LylhHec46f80csjT8+\n523DX+mQ/QGvKJYEduPB5Qi40qizMJjdZ7yJCJQxAkRVR6/jrGDHivfOYB7C\nB3r0YsjpQv2pjnE/g8KyBh2U3ShQ9N3f6Xxd7fjJ0ymXuyIRFSCnDV4OnH3/\nTeb4gunPpMwmtX5me8/lp2fKdYl87bOB0JTFZN5vuN5Igs3XreMNZ/26Nim2\nTk/VJbC4eV7vd9paaK4pTiFepG7E79gcmDo3NW6qmrvtDUaZA52tCapsDR3d\ni2G6haA36sS5kcF+mz7XVdvM97LrG6+ThVtVZoPnta4otD1JIiCqOQVG2Hyt\nU2s17vetjNjumrdbEYuar8IhUhoVFD8/UwqHg/IHHvV9r9K4kX/FAl3CqDsR\nzC+B4DUh0sv/x/A7V3ihDKcOUkUo/qmWVePk9E/l5KqKZNzKg2V3/LzzZYbF\ni1JiwsIiaDACyDAHAwhz7bWTkjdoMpoa30hIMHpYm8akDc0Wj6uv8LpGiS7Q\nUftwm6XaguzHYVz4lEK/0eclfp3jrL821j6HhNWS5Ei1YOxKWSH41YOwOTAU\nLbt9\r\n=sB6u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbNoG6UZ3cCG083arpUTu80t39zOUL4wOgrYLLXk+msAiAs0XVEifwhaJSnA/8z4qvPtlTIpk2cAF82TaM3ZNMB+A=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.2d07dc39_1557155507336_0.8529103692491862"},"_hasShrinkwrap":false},"2.2.0-canary.56b1419a":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.56b1419a","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.1.0","http-server":"^0.11.1","husky":"^2.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"56b1419ad9656e42cd62750d01787ebb1da1ee72","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.56b1419a","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wAr4r90J41XbJP8oseEgaINwphCKSaPnFn/hDHjChPQl7R7FcEmhIlSq9d+ghzDOcpaRZMypJisX66z+Yuabrg==","shasum":"56f6cb1982a5f4f0f8daa327889c9eda84d639c8","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.56b1419a.tgz","fileCount":36,"unpackedSize":93887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCPhkCRA9TVsSAnZWagAAtIUQAKRy9Pu4ji+Dzs63lNcD\nNSZ79/TKmR2hMPeEqepj7xdBQUzyp+EuLmRk0mV5NS3KYwFXAJsdiJZQmByT\nJwYqX1zK+l9x1YgUjE+fafxC++b5u2OZ3jtt/FBvHEwQU+bYCRsXNqzcpEYT\n/VAhircL4r02327T+x3R4YfP+Zh8Td2gmTh/9vH1+qmxqbaVIoODvg4+8tnJ\nC5GhNEI2xuu5KGZP+mV1/imXkaOSXAc0rkVrlGEsijxI9VUPSV3cxSfugg6h\nFOyGTAtYQaB8eX5WA6UNvHFL3/yigYbR0TzwSzerm/ZLeu5KxB0Xp+Xor3AE\ntXUjPcmbiCqKJQVxgfl929RK/1taapU2IQAQb5Fq+MpxGJ96G6QjE5YUiLLp\nkoKx7fZV4pz3eEITOmGohHwIpxu2rERGN/Oqsg46bEx8hb3nAfvQFEILmQR3\nEYxYPiEEfIAsbs5dKFrpiTvz/7hFHFr9AQuJwSXsHqrYhoTnZXj+6H9KMzc1\nU8onWnDeWnLqJHFiDvboyaX083j0Gd9VWNWYnfKg34768TDVU3EJMH/mr7VM\n8o6qlEYo8a/KeDhz2YkPakpy1U7kOiCirleJkg0dzY+7nZNQd4ecDVNA61WG\nF9OoMaTIVu0Sdc/l2ef8TLThGMNuGnq2xc27ckrqLC1Y/O8Y+W3ScMOTP7uF\nApjq\r\n=GDB6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvshFS93umkv/0ASHHlwQreZccPdVnNjr8UozIbnzzdwIhANLq3VhtAHrOu3qQVnJ5kXsYEQzZz9j7aVxt7ikqF+e5"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.56b1419a_1560868962973_0.6249667011898752"},"_hasShrinkwrap":false},"2.2.0-canary.ddea87b4":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.ddea87b4","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^5.13.0","eslint-config-prettier":"^5.0.0","http-server":"^0.11.1","husky":"^2.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"ddea87b4bd46679fcc5b50af46c0d23936781278","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.ddea87b4","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0a0M41gLZkVbVp11UJMOeRQuvMeIXBlBB+FOo3vnl0rcOZllI5BmZc8BZYe3HnBLYPIRQA2BUqNBdyJ3rXCBkg==","shasum":"e24e217f21bea99eb8b8a2bd37b28b039637c8c8","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.ddea87b4.tgz","fileCount":36,"unpackedSize":93887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCPmzCRA9TVsSAnZWagAAUFcP/3HbuV9B6bhyCiP5/H43\n6nOVAfRzMT+0IwVg18CqMIA6eYAnFbbgVsV7Wg7ZUusmLte753Px/qrwK78q\nFKkUKTz4A2n6II6ACDnYxugSVJRH2E7jt8aY3wbrDZG7fSk5JXgUOIW+BkC6\nTgP2rS4NazrlJNYWqS7dN3MqEmsKym+mdZTKhS1toL+BBS9IIPfam8u1rTh2\net0LK0v26jX9DJ+D+PA/9TyYDHe2vbYySKCGkrgDIRH1MgVnBeCq1XH3ztbB\nlDI2pil1/m/A+CYUiJAdPSo1awu67HjNrUDS0wAKgho+zRoViZKhH+UtCEbn\nYD8YtnEbWOzQmgraRb+uCO0bvo7Cr6Np7pDM72MB8L/wsaFMdBbq7eYIlW6C\ntzGalv4dWYUD6fc+8PuVWGahrQLTb5XLMi27ozw6rT4fZQAheiDUEPbG5RCm\nAwHErXXrpCF4/u5oXWYVl4P4axCDNb1yCP91ba4VAf9okGWG+M5/WSu3GnHI\njHXLkSEL9I26GeufgH9275xGT5ZGX9kTw2g5D55zbeHvoG2QmV59YhijtLuy\n1OElO5m/yg5bsh4TUu0QYjTRvJvn1DeD5xc4/xolG6/yac7URA0FBN1LOEEO\nuPNM+w3wizXkpYu3hwjumzTNauA9kyOOxUQ/svqbHoNHzon74DpXOoGw18qg\nRBn+\r\n=IhJ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCynql4zE0Ou/ahTSzPJL6CTtAWvntMtjwOtsKEMHudWwIhAL0qoHxl/mIcCM33y5qQiS5a6PGtFU7yQPopGeA9ZVxM"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.ddea87b4_1560869298847_0.5053725804442817"},"_hasShrinkwrap":false},"2.2.0-canary.1b85ae02":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.1b85ae02","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^6.0.0","eslint-config-prettier":"^5.0.0","http-server":"^0.11.1","husky":"^2.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"1b85ae0201dd6dbec9c177d1f855cde6fafef968","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.1b85ae02","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-s5EOpFMHPN3thKOtxDiO7216U3SIiPJdq0FQUKGbx+GEWcLbBStVhwIREyy1vVu2J6UkuL+6fvNZiIgNe7X85Q==","shasum":"001a0e04ec0ebe9108e82a54e7d39b6a3c460c79","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.1b85ae02.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEe7KCRA9TVsSAnZWagAAF1IP/3Y4Qnx+ZtCz6eaRwBv6\nuYZpVe2M8aJFgxtLbeTTi5ikItQHwMMKAJx20pYHZyzWlHi41SX6SGe0O27U\nfP0b15+NG5dVSsgj2ieYr/hMwdZBV4QKnyKLe/C/43ZaUFIJ23Jw9Vw+tK+R\n8TjLdmBMnHwR8UxABRqUlntsf45uo34di8Hylf3nVOnnotBIUXygV8VzcGSv\nJtIdVUwavnaX70fzK/LqPwQCl2V5MzqEptNFYDIz/ospS+T00kkIMZBALSE2\nkOBys105/S3KZIzlmh2Q4mkjUFpqvTf7LYyfoRvW54OxAkUhtMo9Qc/VJPA2\nREuToC8Rvl7awU6m8XqQ1nfMFGnpM2vnSOu5oj9Eros92ceCWKqhT77gUvlS\nwLWe9/aBNObLaedLaaO6GwcIkuoQBKJQuJcHzmSRQC4yGFBbgmK6zOVMQUTj\nd6wJMJpyhfjG9yzuwnnxy6K9ZZ3u1HRTqM9rfiiO+BJaJ/hyvlzHT14OAEk+\nCp3Po2V7tucm5YITsjWUmALwvdKfwT6bu3ZJ8FAF2XglIspASIX/CgicNHAW\nnAR4jQrw5pVDFesRC0pn7mxAxRMlTrGRyjxni/6J6G4YiYeZvAooai3RL1oE\nvtPCkKRCLwZ2NpX7+++c+5M8b79HPQSyNlPXXvMHqEhjd/UQ6jxnXrdQsYTq\n9lkS\r\n=mDpM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2BgtS+y2lsGja0gBmBjHYOeQHi/Ic+foFVF2oJwBCdQIhAIdWAi6ABmlJJOAb7w+hwPW4s/gS94xEsMK15lAYCrsH"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.1b85ae02_1561456329494_0.09376609403222513"},"_hasShrinkwrap":false},"2.2.0-canary.92fb739d":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.92fb739d","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^6.0.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^2.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"92fb739d4b2931e215ed4d73e3e46bd4be83c1f5","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.92fb739d","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-V2C5wXiPaQrF/+6hBPlxKHqnu5OzWamXrrwKU4twXmggqlR9Nlo8X3MjAgYdpmMEeCatUQM0XXFnNI2PFohLiw==","shasum":"9ac4ce9ef34d7fbb5cea6698bccb0017397effcc","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.92fb739d.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEyd5CRA9TVsSAnZWagAAJVYQAIjTYCPp2Ns5bpacCVhI\n70kgq8t96sHSmu+oAlwm6NjbPDEqIp+J68z24Xjr8teL8wTzbE6+Pi6bFajC\ndomOgliRsV4AGhPxrGfp4wYKDbPNbYaX+LT3gyXxN2gQ15ZfCiVwJbem23sV\n5PXbwWmTcRXBmbME7sQig2ZFtpm9HUdLg5ccb5xLv6Rn3av84kxK0hehSqob\n7Fo8aLovUk0Mf5KVCS1vCMh9Pj/MEe0b9SqX8pMoF2+MGwusEciyrNOvC5k4\nJyVpmQysl7oVT7I+bXbcJ5ibxMfsfCCTfuBSLYUFWiRHKbsFLGeeGorGg1xk\nvK/C1Uq2Ov4WnbYmwFe9NAoWFuLpTJ4TPrgEvbxNlfQclLDk950P+87Co+ed\nrVJGeqHQ72lLQQnDcFyHeJ47NuCmgJ2/Nc3r39hBkJ8PmeuCmDPhf2TyleR4\nxD47ZNsOVIenND1/iumCn94QQCrtZLw6hPbYOtoEQ3Y1NEtnn2Ho7FUwmwSV\neyFzdDyH+lZF/XVEyBRxoe9u4Hw41+nyKulUPTTwxfO7i3Ii7GNrex64qody\nY/KzL5T5cfueX4Y1B+BlyhBGx2qOu7T835qFL86LudZI9t9RN9WQP92Lpjgb\n8qGXmqGlubA8X9Pan2pZpPM6RrcECfW1SzeLYm4Nvgqb+kDJqU7E0TEaRzUG\n5WeD\r\n=i9+k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtM5beklp6kAwm6VXMj1mv2DDV061y4sF5mmGFiNWd2AIgENyVRjSFp5+WfL01OBC/9ql6QeSRrhb4NWtJPtS26P8="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.92fb739d_1561536376336_0.38156146441849037"},"_hasShrinkwrap":false},"2.2.0-canary.9d90efe5":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.9d90efe5","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^6.0.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.0","lint-staged":"^8.1.3","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"9d90efe51af05590c0aa6fce91900dd12006d00a","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.9d90efe5","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LwQNEN2UE6yxHdwbNhJRbf54k0qJE6PytPWl5DMdzxQWOuxiTm3lNbDzUcPEMDA19oqBcvF6nR2PAUl2/a8zGw==","shasum":"ee7837b0098f0507c14b3b187032f4e70ee20be5","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.9d90efe5.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHMfqCRA9TVsSAnZWagAAzEsP/1W3oVBmzHYiNg8eDL/y\nOu+dOCwUGCqA1iex+FKEnMzB0Zhr41sVYipWs/GCzVPh7GWtaBus3yPdI2R6\n/QkHDS7xIHrNnwNUe9j8orwZT5mvAVdSpJQ0br6l6wpsbFbBGYFj6iiIxmne\nFcHZgc/FnzsrrcHCG9Q/iux07AS+Lf5+u5bplS5ke36s7RUF5aETNn0qqkF6\nyqool5y+kYhRKBPyVvfF9dAs+McMJZdrIXsWOSINsXMCYWMfJFqa6UV94ba+\nY2k10R45E6d/rsvL02znwrPTmVbjE2GaWeGBh9bOhyfSWhr4Yg+jCmEQAfX4\nmTuCl/msV4MBpnXJMSEweIptmSd5k36ACCu0Ne/x72yoC80SAX/IGRjaEi7G\nXAl7QWu/nQeH3whJI1PvWZhmfXLx37Q6+aq6d79K2IexpD6uxKsFSEQYxSj4\ntGGJg40vVx1f7JdvBOf/ud6N579J6yAA8KasKYi2/7GE0YQCy35ijiQ5fWdo\nboyxgov+t4JfspJOFcKRtlMoENg5CyhcLZ3kGDNCNLqkoiZd7x0hNzzuJHG1\ne5cAqJzrN5jqDkt3KQgb/s6THLcdTxjxmdu/uB/88VxnhEJBdZtDNeGkBIeG\nfIEg2Taxetp5y8A4TCUi7GVeZ1/HLB3ajT3gj1F50KSPzpCRq3RT6hswdik8\nycmj\r\n=GHnF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDR9DOvQNslpJzyRCsBt0dYZxK/kaJA0Qwi+VW9qd1arAiBv/qtaNAfoF0bsuy5ULvcQJzx0W46tuS/hV3hH5cQxiw=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.9d90efe5_1562167273636_0.32588733578190543"},"_hasShrinkwrap":false},"2.2.0-canary.6a0cade7":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.6a0cade7","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","eslint":"^6.0.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.0","lint-staged":"^9.0.0","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"6a0cade7cfbdacd6de910b41907011ae9583fb55","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.6a0cade7","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gM6jb7O0ijD2a+P1aEWTlKtvXCBbv7Q9xZfoBsNWuC4X3YkcLd0/Ix5X9nfhYRpACZkzBoA20e04u+FKOyBvBg==","shasum":"2ff2f6100ce56927303b136e6606ea926f9e0af2","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.6a0cade7.tgz","fileCount":36,"unpackedSize":93886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHMyrCRA9TVsSAnZWagAAfJQP/0RqBWN+hHo4l0tedije\no9tebzK6DN8itdEOxHac1ZPKnare36qdBdfhT4Jxk6jmjpHNRe4hcqM4pC2T\nLOJwCwCdY9uLnHZ2/A3IV/S/HC0VvcqVsiKLKMuu7FM57Kox9cjCOabkj2Gm\nGlcTjehXRjagqP9FgVSu84ntjzdGLIULeeEp6uy6Qlk6LOo9BVyoQJOiMtuj\npo2KYhfTbc0kaMWlgKgjUI6BKN17bN0tOdsE5Hy0vOZtnz+cZieBewmghz4V\n9dvREMx4N2G6tlx84Gy+GBp/xrwnvOM9YLyIqyqNyV9zR2BwRt1jnbluEhjF\nIy0GbXlchCFxj3cMCxr1+/QtfkVSSwbC/+IBaZY5OQNOODGBQT0fFcptcVuN\ncbVwsN4cKsFtpvCzML+n/rrYcO5Bwf6eqg3/DCuBw3F16KqNIeWgtvI0PCJ8\n3LzCkVaRSqjXo7c9ABum0dKMzqrgTAfRqMTJsBHxqwSip5V3HpWUUu5myyyl\nJZY/95mu0SrxlUwT9N5ZCaYFNEaSGZQK/pq654LLE91RHG8L7j3usaXughZ1\nsSU/kRmkS0VxzOukhyV8dsfTkHMGhvwKR76VxahQ9YkoSxKxIS9XZOscAFPl\n6pZmtORAqavUBaEcOlCbLh87S9sJde5OgwoNQOO3Was+fxxtoj5ypa5/8vnE\np+yt\r\n=bgTt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6BUR7Ma8JkL2g0k69MsWxew2AimD83VMWdhcOFcD/qAiAujBRG+mEkzlR/uobvBYPQEGFvjhJrw2FATudrb308OA=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.6a0cade7_1562168490895_0.8088698885177259"},"_hasShrinkwrap":false},"2.2.0-canary.cddebecf":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.cddebecf","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.0.1","eslint":"^6.0.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.0","lint-staged":"^9.0.0","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"cddebecf573b5ec5ffe2d0003663ebb7795d3d60","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.cddebecf","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-vnhsXdiiHWk51BPm5VXVYv8HAikfNC20RY3QDOzFG4DGFUYLjvDlxcVKLVMCYc7SMfUm38LTUkWuCrwHfVyqJg==","shasum":"66366107549d4a3c1aa4f44b8af7535534a7b84a","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.cddebecf.tgz","fileCount":36,"unpackedSize":93888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHOdVCRA9TVsSAnZWagAAcGwQAIF4urBXPXl1ZmOOueOg\nKW+3JN9aZDmzu60AR4nbpeCNabkYIBQPx6lGhsWfwQNbQWh/kiWXrD1mqOP6\nFeBjTeq3+tXa7b4zNN+VaHuNGptPyVmVZJ1i8+z2PyQ7B692Vw3I28ulAXWP\n4bxxJ1KDrgl99uJZ4kiqbStuJ8r9k7Xj9ipKiuFVBwfDOiCZivYk3sJO62An\neHdoo6Cy6Ghqwj/rFRq9/440/tqEl/SqoOJGCuqbjTRA6OhwpwGUTKAw4KTw\nbAqARpF6Af9igbwv+kOFCFP1vO7l98DqIrngXzn2b6AvA+jdF2Mmc+EGyFle\njsIYmcr57DUopE3so+CSKCSjOJNGhbUj2RRyh5MwrBLscYWQcglBho05GKRF\nPBGffjXiGQJKdiKYENZ5yrYKKqmkRdw8TdBt/XzqEjrovI2K+lyu+Uxi2pWe\nRgzuZCQzK9I6BgI7fspMhdyBMz2ULs2xZOF8dgfduMRVm+LZTMPjcNZS8+zZ\nmXbQLOiai8rEY3RXMt1r0f4Rx2Ta2wNUUDJnAanHzlyJ4CYI3zz21giNxlPC\nZMAkP71fj+GIUT3u4+0e8xnBij5IucdeXUueSFi6rhBSy1b8Bw4vub7cBKJC\nnzUguYibjbEhHth21tc4Xxq6vt+WDH+pYALEGFPJmCGsCJAyzlC3ILZPdw3V\n5sa1\r\n=SOXH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJJD9zyLoySDiewgfI3q2QBU+3+YXuw6JAO522iDVVOAiEA6WfH42C1imO5erPjog05d8lo7olV9OX6HXaCoizL6GM="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.cddebecf_1562175317075_0.419565949401846"},"_hasShrinkwrap":false},"2.2.0-canary.d625312d":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.d625312d","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.0.1","eslint":"^6.0.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.0","lint-staged":"^9.0.0","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"d625312dab412fb9852ed475feae2f2e1019a1d7","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.d625312d","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gSdXfuCrw71SFWha3Vlcj/UT2VRb2PkPKLNGRfiKiwy7ifqP6Mz1B+WEpK1cnD9q/Uzptm+oj8sb9hPRyUqCPQ==","shasum":"64bc71fb76c274efce1875a17a88a3df6fb40a3e","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.d625312d.tgz","fileCount":36,"unpackedSize":94742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJMHVCRA9TVsSAnZWagAANPsQAINMvBM20BdYOeH/8ekN\nylbjnXQISbGeX4CMq9nH0y3TPbBOEFjyErCUVNTl0iYyMXLOyvff5OAELwkE\n7SuMvIS7TOP7tJ7A/4iiNAXO7Eu6oJp8ohzMEAgTBsmOBC2l1K48S3gyxc6i\nWPin3Q/bGfyPN+vs4E1nrGV9e24OuAEt73KF4FiC9DzK4pf9C2uAGi7t+PVP\nQg2WjFkiNXauS7dKywNmhHWesQmRzSVUYXncHLfOBCQJwTqi7CnWWqrEZ78b\nlqJqKyMpnnkGs4ZLmZm+J3zG8WkBy4j5kL6pryB4oxW2mzWc68Hy7aaWG9I5\nTXjQTjMVPyrwSS9GhtVPLOGIHEyqfwygmQBEdJYY/PAsEuT6haRPfFjHPGJ6\nFfNhmSIE/6HM9yj0n/R/r8YIIkohhwKE4r1DmdjZ65DqiOsaLq/9mhAk5JFl\n7m9NhDypD8v7fGpeuy3pRfpTUKxpx7zb5sYXzMna/jxgqF4V68+qD5bbeRuu\nPbHUAeKOodOuVVcDKe1Ujh1CKfFRxnoNstQk8NJNtBlwdB5UmEg4eSCHrW8b\nBKevEddn4L003zBr8FfDHEzh9d/4Ju49Vc07S+y//bE5MwDSMTpi/aQVnQJE\n9QSmnI0eYjtymDRJORGMMgucQZ4WsMC3+ydt6WcsSkg0qZoVEEVZlBoM3TUB\nMEpY\r\n=zXig\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdZsHdTSO+hXzyfUCdFuSs92rtN8jqJiUBuOkfppteEAiEAgGq1VfqmKwEqKR3FIlcuFY2C2UTqMCS3tb1kYX01Pt0="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.d625312d_1562690004718_0.9331210074454241"},"_hasShrinkwrap":false},"2.2.0-canary.9fdc92c7":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.9fdc92c7","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.0.1","eslint":"^6.0.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.0","lint-staged":"^9.0.0","mocha":"^6.0.0","nyc":"^14.0.0","prettier":"^1.16.4","proxyquire":"^2.1.0","selenium-webdriver":"^3.6.0","sinon":"^7.2.4","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.1.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"9fdc92c70ff7bfa91461632aa2e9a083a9a1724c","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.9fdc92c7","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-i9Lhb0neeeJIKMehQ6hMAsAfNtK3opz0J7qqkBqlonUg7BrWXNaZvycMje4w/dr+2W7PwUPSiecP8MLd0PY5Dw==","shasum":"498b94b6be6823ccc43f4103fc549d17cf341de5","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.9fdc92c7.tgz","fileCount":36,"unpackedSize":96531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLiJJCRA9TVsSAnZWagAAWBIQAI7p4RP75rB9VZWts8J7\nOmxIxbzSfWmgnUlt30uCfmkAlrc3KOhLFWAudDxxmLChgfsg5jhZWCydIdA+\nZnWbZLlt/dD1YxeoPe8ZzSJnKG2y6GXZns6lehFMWEnjh5ZJjcJvkD7UkLlr\nzmCgXrbxOkoZIeDPLTCXMeODs/hdsYDaM9M/4zVQrruJuI9X26QjRgvGXi7M\nPvDBLfOMhTfr+c5wJ1Pq4e3AuT7O1g+jzrdJJSJvvEFz0lbzhwLuF3awPXUZ\nOLkVltTaLzfWMp64+6scNTu9UcM2tlXyJSzVrqUel4bRDdD7U/8KhIYfw5Pd\n0zSaoX40GOmWR4OgbMVgUfOjbTw/tZKopkCNQ9Sw+eDhV6Q3vYX7gzHYOEN5\nIpRkzqjfcZC5btEeYy2q8Ipby+PJ+1OIB+AjYouSpsg4cbPgMr+uRVVzqCoF\nTT0EQItqW0pPztP5r/giJus1LCHQEvbbLDfAR6mqRt6wVoPbp3lIH770ItqH\n215xZ1qiA2i3znKJciLI2+8GmDER/E6pDjnSO18tA4ku1wthNJGJK1WvppyZ\ni3aD78+WVsmDRaWA6LSpaQrpN8JzHKl4oMR0JZeVPdD6ZEw9TKm/JyLulEch\nehHK73DoBruDP+WU/5Zl5gNv+vPCqbuJWCjKiCpUD697dn049HkU4XawQtQL\n6j/V\r\n=AnRS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLWPMzxWYhpm0Yv3kWTVyvsxDFW9ulqwNR3U30iXBJAAIgeMNkYMyTRrFNypIyZv6sLjkHhI5cQJB03xTlNFckXzA="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.9fdc92c7_1563304520028_0.6492112890003383"},"_hasShrinkwrap":false},"2.2.0-canary.5c0cd637":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.5c0cd637","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.1.0","eslint":"^6.1.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.0","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.3.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"5c0cd637574577b937127b506bb4c2ca0b286755","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.5c0cd637","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-q0S/k42KEp2TQyNQTAfLYABO0euPR6aTdlg6/5tGR/gMOMz9JP0yYRW/pX5Q/CrJCwuIExNcHLZ4Ebbj1fbFHQ==","shasum":"70864a7ee0c65ca7a384887f1b327307974dbd0e","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.5c0cd637.tgz","fileCount":36,"unpackedSize":96531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOIXDCRA9TVsSAnZWagAA1aUP/Rzb7grgMyDBPMDA+TFC\nmQXS/h25rsT8esMWxGSheyz3HWgad0fbMokRF/0OTiPfH7JHsqpUHVdT7qHj\nB0TQCwc6XLlmkmWdRyl+8GiDQBFPihmCy1k25v5fNN7jEGstoGx5/i93CSQU\nmKA5cm9GJYnYjnMKOiZG1x2jYGxDjTlOHveNgaI1l6v348pkYchuDZpi5ajx\nEM8Yv0P2JRrfFDTYJpRoDvDqkzAkXi/XqofVZyyttmBmBC5fUV4bb9WXMYP9\nRqJX4o8zsefg/bdyzB9BHW3DTr7AXeTT+J8JTtpwn5+rSVj51wIVlqgal4Sh\nO+VQHU8AlXuB4vR8FKyi7c6C3I/zbaeFziMUTN8VyIbO+8vFbU3BVNBrPaEk\nRo6KVQkguTFgLyVG98VFfzuxOrBhDp57juhoNX950CPmcKIJ2v5jqI8BjIAM\nPZrfnea9IdIOIRAFIaLfazX8/efQUEidai05XuFmFtklT3TR6vw3CbyQgTIH\nd6//BlK/CibgqTYHDyTqC7f1/OuKQzQOrfmfmoanA3Dn0VdzEibgmJWSiKvv\n4XuXOQ7/BLdfRASNPGDAfy9JinmVk0ASKW3FrvlwArymAfJoDCpoPNjBAEkT\nWPlmUe+XjPFVIFHcCzXX2O2ISEevwhfipByXUxhYe9aJ5fRzPv9C6Hmqg/aE\noIBn\r\n=ZYmH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkg8Os4IEjfA6GPTGeNj1ypwnfcRkD3V0Lt0qOXlie7gIhAJvzDMees3KTOXEA6MPg+0+TMcjxCwsDUO0BdzK/2UzA"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.5c0cd637_1563985346979_0.9573365908110885"},"_hasShrinkwrap":false},"2.3.0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.1.0","eslint":"^6.1.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.0","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^6.0.1"},"dependencies":{"axe-core":"^3.3.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"f9742102c62ec115497f0682da58873d8e49024d","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AuUsX5OFTXOJ6reIKjtGay4O656n5G+m8MzhfL1SC8MHINBFFFn3Taucckn8+UZYJuTtNEobllSfiuPTHyKnSA==","shasum":"92511fbce38624a57e1aa861dd8a3c73c6a3a972","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0.tgz","fileCount":36,"unpackedSize":96958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPxhHCRA9TVsSAnZWagAAzjkQAJUiqc7f7LCYChez+C4h\nbsRo/pviH0YUWoehD9pfyf4M3qpl0IZ7CfGnwxb/I6tNHf1eJpizHDVnG5JL\nUywb5V8VXs8rVhQnBG73bRzirwNTi7h15avmwJ8Q1qgCal0BxCtopKq220Sq\nT4yUxhWAyLq03tO4cay6ly/Bl/mqcOmChYvwe8tg5zq/AOG18NFjLeLDq2rn\nyp5gqLl40wkpqHyhI7FfZsPfMssBPMe/Byo8fBczFtkZp8IeVTeQ7RldR9cR\no3XYFQ+QdAsbS/KfEt5beqRcgZev0d00X8KCb7G3YinIDL2sNUkOhdN5RPlY\nvCaesoZOCSGj2DKZC19Q45QCuq/OZZ4yX0zBDWcWNsLizwFZ3gceGIyX7Sfv\nnaCQ57TxGeJTW3TQFc3uPBCI0pjK+RTEtEXSDnHI8JlzxmegWmMOIEWicf/Z\nbpocTEwCrQij0ZH0dcu0z66Eb3IsBcQTlmw1AMaT1Lgg1QJoqpwq9BMUvcLN\nCsViAh7lGcqax5n0droc/rrjZxOz6TBBT+FkuPKDgzPv+Dk5WKwlYX97LcTx\nqg6U3JUdI2HrK2KrtB9QNFG0K9vat5lHri1F+XmBwOLvjGNFwzHqgbHc7ML1\nkwsaPj4GZJ3DP/MZ9bDEeaTHUpwYxQiKQ0/k+PZO/Yq68OzEa7yCqveIqI9W\nPYyx\r\n=eoDH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl3nxaztnPOkLkPp/34pFvEZ1CWU6O+ByMaLiMjUUN2AIhAKHclzFsGEyBIQ/LxMdFXp5R1cQU/NoVxX1kAnbj16DG"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0_1564416070511_0.17263424696989071"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"2.2.0-canary.781c47b1":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.2.0-canary.781c47b1","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.1.0","eslint":"^6.1.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.0","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"781c47b1d95860395b03fe7e46589ff77f2ae368","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.2.0-canary.781c47b1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-I4AaRtqKR45JVbg8PE3J4X/4zGCQIean6lDT3qL+HQXBK0LbVlXgnaYNMsoxaT0oMJIidM3dnBRWvvKsMRL0uw==","shasum":"8d1f20a8a72aace995c0a9008e0b14147037b8de","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.2.0-canary.781c47b1.tgz","fileCount":36,"unpackedSize":96531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQEhbCRA9TVsSAnZWagAAMYEP/RcMSibNv+9fey6HbiM7\nYmdXNQq8ztIijvlLsozIFocIqY2kb5GpGkyM/rgUEu6+KWHUw4Tgnz9Bxq5U\nR5JrFG8rdk57YB0QsIF5NTrCs1Rf9NLvqr4oRryy4YX3ajXC6kAKxggU5r7i\nXgsuY1nRO4U1uROSdKG6LOa/XFgd3O/WUzGAdPUO+x2z6pOt9e8rc8tK2JKV\niKbetJieKXq6ZyhDq61XvJvQE/HN4GjXXfryVir7K2Tj6V9FPrEpo2aPtIPA\n5stqNUv07LK7OPs/dcZ8dKq5kHa/x165xhbRrSiQfcEtHWlTDB1BOds2ZwRz\nLF6XsG3KL1UhsT4oHhnlT4i5dmROZ/xty8fH2VocktP4OjNvqohAlyfVM8hV\ndSz1Fc3QL/pn9+qXdIgoBlEPqDD3Usey4iyMUzvlu2ItBV0TsJXRMW3MXg82\nuWIGCE/Qi6xbrrPhVzFpP7S5KpoCPYwwkr5YG1nDOT4zplmCoNDBp+gfTOz/\nPT74+1xpt6c/cFtqR7EGBXOhRET2c5guaacyCsLoUi1z+B9inxp1a6M6/ix7\n/KDnqmBdlcb+XcGuAZLJzITm+zEDflK1QKw3eWaMvOPpNunaIjwIOEyyEGfU\nQa3sw5si68INFELpWSWz6mjc54Y0x7sRqho16wfVXL1ZQxNAcOq5p2U4GyIL\nFM0f\r\n=xUCT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQv+kmf7LdMdkPpjYrhhbXUwYRKtWPiNeN5PCHyWxiaQIgM1sTW3QT0UxwYhOI7FTjUXxZuo731jDDr3quMxhIIFg="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.2.0-canary.781c47b1_1564493915045_0.9513580753233886"},"_hasShrinkwrap":false},"2.3.0-canary.30023b03":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.30023b03","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^75.1.0","eslint":"^6.1.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.0","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"30023b032a8d5e0cb690e83cac3806ce3ced330f","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.30023b03","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-CgcrFD5Lx+7MQBiaP+BIQGol9UZyrcSviDivyd6bjWfpUPROw7wFQ832Vq8zFyZN15UA7iM+l9UjvteraiHNaQ==","shasum":"3123282d9384ae2e2cbb902c2565c693362a63b9","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.30023b03.tgz","fileCount":36,"unpackedSize":96973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQGE9CRA9TVsSAnZWagAAWScQAJUXMHkx1gUe4P0sFNL6\nADtgBRaZgXJrU/hu7Obw8nNj/YZCxVzvWl3/BPZyvIxKLGXd4xGgk5y9NB6G\nwUBjPjilONJUPnfcJlzhITwhM1l1iGfwVongtyVSa/2ASzOJlsZc04LnnhQ0\n16y6Dbk7Ao1i2Cs5bO4UCjebjD5VMp/HtmXr5+qITLms4L5pEw/X/DkVj8aE\nlL3hRQgsgb4wX6SfVyI77lHWpMqrChvftTvjuXYDry+y/S9J9gmrE6yG45Tv\niVMUKnlPSJr/6HBOditslNLENcZYTpqyJZmGP5077Cot3Hy8QkAeUM/Dopbw\nFYY0eizbV3jL6ADVaFF4Ooi4vgkIUz6WICsEdhqVmvLVMQ4Ujj+t4kQouwW6\nOguKbzNafTw9XsFq/r9M7tE8ejvF/SeQzGF8DXtd2XBOGXw0XrTlWVc30pvL\nNcYVhqqd5FMJldqFxBA1bikMwHUpCrL0Amuz+1uMs15Wf7dAHncBltuygXnX\nfoZDMnzY4btYONFpbXLpHKGzvF8kbzkNehPTnH1X77SgP6IYi886T1yvuVEr\neqrlAv/e5uukIAT/m4scQhhokYCPMm4UaF/+hLWxjY+O9YgW0Pws9PkjvjK+\nKqQm8mTTeni1IW6ZLka91tJqtLXFKrC7UTqgiJFSEEgprF53qMgUMFGP0rxb\n/kj0\r\n=uHdt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3dEgaouxEjJgztsgJFoIkBSPZt5bsB4msfXef3yiuLAiEA4mqM7No5zDjKnbAHurZP/v6IJiam1vEsT91jlDPjrvE="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.30023b03_1564500284978_0.04238833461322389"},"_hasShrinkwrap":false},"2.3.0-canary.c196cf60":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.c196cf60","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.2","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^76.0.1","eslint":"^6.1.0","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.0","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"c196cf605b09df6b1a150b412e715a0281ea3b3c","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.c196cf60","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cjtmRhwB64OxFM+FZPFqbQ6EyXv7iJhBrmVmTjZ6jrA4t2kJ89Ado7dkvnmF2KBmjG3EDi58b6mbICqU+QL+lQ==","shasum":"fa49a1814d5a00f01ca7d87bf0a9b5d82e0c5b53","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.c196cf60.tgz","fileCount":36,"unpackedSize":96973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZp13CRA9TVsSAnZWagAASTsP/2ijf3AnKSSllizMpLQ5\nEpWI7t2o2LIXqQwLAT0f7RllPglMUiXkKBxfRMvDcs6bQBxYadRnKtbIvMTW\njm3Sl8uq+grA09lpNCXUDTmRKds0dge/MagjedSqH2asgXDQiAQcEPdQQhXL\nRxqZ9qOBMll0TxrEYUhvyuzj2yZt6pB6idr5eUMo0q2RHhk2o8t5sdtdKWB0\nTKrakqNnbK7ThQ7D+BZKQkO6zRdvlBol9ZXGLk1za5AOCBNEKLtcFQ/Xb/JK\nBLxk+3MDwgskLm/b/mciZTIpX1+0JG+YvO27dM9gmND2Glqnv94mwksCe6e9\nggCUumTeV8YHeVbK1FFeZSE5YB8rNl7td+EF3gbeUUtriHjr+Kb/sC70RbWp\neCo27FE83CcwLj9Fk3TVsEu58YLhEdZ/48+uoEJpa2I0tpywKhVoEbXNwDHx\n/CyWy5ZA2amoqcALvTlZT4Juo3ThvPopDkvfnGhMSoaGj1Qy1qkfFcrGszBF\n46l9DmgkJINI3DNZpV0RrvXAZnZR2qjX8RBLXriRPmJ9OhMtCX9Fgiyh8n0H\nUm00Fo7SEpRh3fjPs5la1wn1Vj7jwUlAJbktUhiDdud9Y9e8yZh06SViu+OA\n+04RQDgXTDKnOsi8irceGp64W0mY3BO8mu6koNufCvHihSKHxzfIJWbTv8vi\ny27s\r\n=TiIn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGq25PJZL033vU+RiB2k2pqiTTffRaRfC8TinuYUXKy7AiAJ46x0954EwLmUNtZL5DOT3Lr7m8FUcuT9cUCzk3G9aw=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.c196cf60_1567006070112_0.5088432564861469"},"_hasShrinkwrap":false},"2.3.0-canary.65fb5e2b":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.65fb5e2b","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^76.0.1","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"65fb5e2be0cf145f7f518d58183a9e6485d58520","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.65fb5e2b","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-T7NvhmJxxaR1GE0vdmoSf+FpGhU8YRD2K83L9VA5Xxv2/JqWd9NfPypY+gAfWKDqABXYLws+ARevGF+/UoTqnA==","shasum":"e600b555d3f6eefd0df43eb57fcd729b5f1448d7","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.65fb5e2b.tgz","fileCount":36,"unpackedSize":96973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaA3ECRA9TVsSAnZWagAATUoP/1arSWNcgou4MNC47nqd\n7IkD080thUqBu4WQCY+NocZYykt1QkxdKv/2OYd2BRNiqAOr+xdrLT5TiP+c\nkxYl67xWr/GagosF45mDIsKnvv7kx1rsR8K+thQzoffs1dfDAPay1xkOPZMO\nQ0fM6MMfirKeKoxUILY4suq+T68JuKoQ1laAJzY+w+/rWjd9NetK7QNuQZS9\nkzZaOuE1W5FyHxNhgQWRZVfPX/6z2K8iyb58B24sWENjm2Jbvb/sAKQo23RN\nd0vQknX8BlT2Ssj4Nn7sjrOUnCWIBV7U75AtOOK9gnUir2UnxtHBnFG1i3y9\nTNfJzabnHXnHvVYyb2ZihBNWi7Z2cz0zMx2+HsZQGQ2cmCg+wmuyn/Dkfj4H\nRCWMDr8teDHDyeFvZsExL02YeoG+yRnLU0wYOx0GHG/T3s2P2BEkkmN9SUwr\nCrTBTf3nlaszKF4+fy9wZXTN/d8YrRgmxav4Osl+s1gHAHpYuar2WtFPn0rF\nKi9Dezgq33QI6/bghD872bGgu2+mJIOxm0sXLl2VgX0mJWM5sCwCR5yY1qM9\nSDznqzmqPl9OyaLz8dk0WKVmIy/Kz0BucpbQbT3Dsru5Hs7uhNPYacWd8dMX\nkZeENfTw/LdATRNAqchuzfsgdDYP3VKqmXOFBUG2Z8lq9hD5iUWqTKno0qPS\nnTnB\r\n=qAcI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdfytpwudOrTjTipBJE5LJHRyJD3hCUjNe9TO8BlTzhgIgRk2sVUUQc3XmTgtCDRaFEay0iqP62M8qEBzkVyE8VSc="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.65fb5e2b_1567100355650_0.6023128755144349"},"_hasShrinkwrap":false},"2.3.0-canary.33951bf6":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.33951bf6","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"33951bf6585850392d4e262cdb7861f5a5bef22c","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.33951bf6","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9uH8hM0iICI5v+BwuhD3LXwKtiZee5fZzGS6xBoSHMKrIMA86Y7ZY/sq4eswFzC81fuPzkwFJPcnMKA3xEMNyg==","shasum":"ecb12f92acb157706a3c0e480648cfbaa370bf4e","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.33951bf6.tgz","fileCount":36,"unpackedSize":96972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlL+bCRA9TVsSAnZWagAArzsP/ju1oFCeN8BQdvqVoas3\ndte16DnnSROYAHAcJmoXhhWRdtoLbPabz6iP0xCp3Ws9Ql9x0sklBSiy8Myj\nIzN+M36d8/bs4JGLt1YVg5Gj+Pwd1lNAObINxDUPLfNSleEaZ2ol5XIoj4sA\nJKGu41PCG5RurmN41mCJZcQW7kM3ZAei0o3Xwww132Re7I8fvD5ZLUmHAQs6\nq2Y3XLzXsvTMbTHQFirwODiVeTuBHn1D3FrmXOBVe9nkB2QyLs+Z4VJmdE3F\nOLYda9EFXRDiX3Sr7903XFCzbTvIM/7bxfhbYRyga9w6k+WxzV253fFSimxk\nqK4D8KYH7zbSa+Xjmvl+DRrhzZBqfmMZgayV+qFAaMu5K6LIwuyjmT8VpjVU\nDZ4Eg18MRXIPTKKBWQ2n/kDueiP3Inl6vkeY678+YvFM15MUOuSL8gyyqiT1\ncNrqziMklacQUcpUR4Ml/Ow+I8Gve9IDlqLZzrGPz6RCIstgh5c+xTUP2hNS\nsv9ijzgxi9J/qVxfq/HQ+AiXB1bHTdSo27wDKbY4NwUtkyHetLqG60y1YEW4\nkffIPTXCEdi8v08ZBDa89bDmmBPMq1cjP9XQCCRIyik1nFwLI51wcFWjbB2z\nBsGTeoFCKHY9a3dNEDAcIv9KT6jqMReJMmNcWS4fLHqiWq+RNfaD5ZhFk/sN\nhBfA\r\n=usJl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLuD2YHnw9vzifOhSw5gS741Kz6otqyARciajIgrQZggIhAIYqIZTYHkV3ZMwTCw0IMYVDQm3NCfV2rLHziQhJLAe+"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.33951bf6_1570029466664_0.12922984701208673"},"_hasShrinkwrap":false},"2.3.0-canary.d657746a":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.d657746a","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"d657746a864c812985c7c1ea956787d756e9b225","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.d657746a","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-PZa3MvC05C+iKJ+NgXYGMJ28K2eZmQy/n72PKQxIV+0BLM1ljcWSZUjm8QwxLRUDVKPhprARv7QR9vNy4bn2GQ==","shasum":"3f46c50e6998c889361e847957da3660920d96d5","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.d657746a.tgz","fileCount":37,"unpackedSize":102963,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsHKlCRA9TVsSAnZWagAA4KoP/A76U61bAQ6WbrTiqkw8\nrSeeSTQ7MpWao31jnkilBG7fQZOWIaCUoqTKt04E/Ec/V8rLCkAv/KO/Hpr9\nyABezc4X8cn8F/Ub05CxBJMG8gkFkXUiYDbbRRUyUdpcwuH0zk9ODrS9b0C9\nZz8gd+y1LYIvhVXUqlDr7bJx8qPyALt1qsjSnbvBdbSrzD/nV+ppYScTahJc\nPS5rNtWLCHGXY42crZuTffP9QXMtpc+l5uh+m2ZuaJLzP5wvwXzgH3DodQlF\nXQowfPId8iEfvkbL/fSnPLhxec6i/JmVkMM/0qHl9EYuH+ULQu+2pkEuvdg+\n0DMSKcZBYKK57UYM3GutodNQmlCDAbw+M2qpu3VtffxMLmTV4SpBbkaXmzzv\nMo/GzYDT6VWQFo3Oc06kkebyDrSTeBtZ/Tii2nsNEfSZ+851ryQydOnmytdU\nXOtmr1oe/CqNXuIqZVvUiEk/0FyD1JZ/a++JunLJfyylU9i5ICXccVUgXWoD\nVNp2Oy0ifAAvKaRrAK0JlRMl/FGb/PksBvtcXaMZA/SQCOH3TpjBAaUJjxey\nifX2hK1TBCXGVBTD8XZN6ew4IyEyyAJZBk2rd+RfDrrpE7/XpqZIm7EJWIWB\n3aeh6899mY1dTOjOVGEFMskvft9Wxl21qhC4URWAkBoe3mBbo0eOeHPYKxa3\ntEMx\r\n=v76Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgYpg7I+m6fW1c2IfioP/sb53HCJ/a7pFkKqkfDPnSFAiBCont3jtnRVcqH8zV2/9CkZvj/KmGU8hWDtNki09T2YQ=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.d657746a_1571844772821_0.12942759709817286"},"_hasShrinkwrap":false},"2.3.0-canary.6b71ed8d":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.6b71ed8d","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"6b71ed8d9e60395081dabc392c2fff5221efa7f7","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.6b71ed8d","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-IRiSnvwgmA9dp4kgf/HI07QARr0gDTt0jMgf0dlbn4Mhu90Qty2bKoNRHMz5Hj1hVVetE8S/AUAhTkYsr1LMgg==","shasum":"80103a17be12b52a712d9e9c5c2ae9ad9bd9a121","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.6b71ed8d.tgz","fileCount":37,"unpackedSize":102816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8RScCRA9TVsSAnZWagAAgMEP+wXz6/yUlMKSXdO1fL/0\nd/BXSt3R/HdxMnFFI/nv9jeHWJmON8213UAH/ZErfn+z4y5/WEjg+xrg9aeP\numBqPjlBjKWzjxxH/+d9eG/rDkXZcN44Mgnyn4AuPhzrfAeyN5u/sSurNN9S\nGeEm3IcvuV9mWFptohPC6CvAgxz8b0v1z//r2w5edjXmmxhHdRGHpmFrnlkN\nRKW5tNiIGdZ4MuvpT8HinSQcVpqVHHW8IjryI4ipIT22hU8nnJNR8vRTktMU\nXUnHRpDyGBV8/AdqtQ9JoBDvUZKZb+6rw2qUINoRqKT+DhEv1TOa+8WrIs3N\niSXO6NXwSdI2A8+e780ampMiczFlyuf0GVVccukf/kX8UMKTKuFaE9ZGwWI7\n9BZ2lvN+uo3N/DnXAI6wPypk5O551fPNVgbXfsVqQu2Q3mBBgr46OG03YRwJ\nyTJQJToTHojCZPeVSDmzsH5le6YNa6cuH/jfxOdNA5TiSq69dcpul+fjriIp\n5+uVI+cUqkEH/G2hH4gty5Tvysw0KbyHJHcYLdrgAFnA7ThrgfzX3XNaThX3\nR2w5XEEsYep+QnP/sGpE9ncHG0ST0e0U74gLYM09RIwvWMoKR/aidKaXkwxw\nrAik8szd1nLzP/N2VFo1TLUwL3OrRa2wE0hPs29u4HwrUZxwSDzmBJHREDkN\nIKbp\r\n=cgoR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClmEsW0N4s42eiZY+suVkAdB4qxPtNsLdbcBNwL8ybJwIhAKRK33L7b3ySsX+08OGkhyo/I49ptUYN4EECM+Mo5M/h"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.6b71ed8d_1576080539540_0.7023352374732539"},"_hasShrinkwrap":false},"2.3.0-canary.c76d3f7d":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.c76d3f7d","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"c76d3f7d641f24902dbc73ef923926418978a596","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.c76d3f7d","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-sHovbe/pGvY9yPOcYmFwPB3VdyZiRPzNnTwfq8UGQzXH6XSutkS8/U0XKUhCa8uFzfLyuxvFOCXkWQXiI2BtZQ==","shasum":"f35e6cdafa7842c1ce77ca90fc60701934150d3e","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.c76d3f7d.tgz","fileCount":37,"unpackedSize":108874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8Rj/CRA9TVsSAnZWagAAMK0QAJnSTKXQihCU5MiBgluX\nELd7QLjREOXbtn4NynXSy4eRBmAydzs8UTGlr3jdzi9038g1kKZm9uqvuOXX\nkgxxFUE3+yPvp+j/omcorD3Fv9nSNdEcRhQT236zQzKoq2Xi7btnhZ4rTF/f\nIu+fAXKXD8iMqzW5HymvjsaINlpUISXC1wT1wRfXiDKq8ecsA3Goe1PRmMbN\nDCVkveXSn8IGdga/u5kjajFk69IvIMoXZbjP3zIEk9npCIOUWcSuqRsGnyDO\nzGmm3ZXhHGzKSric/+IoTklJj/11QMMZ79yhJxGhLb2Uiz7h1AlgjHiib3g/\nT45VoPMni2ljJKTv6x/Yca17YHKF3xrHmkS1fjzi1ZRNwfcr7OjdeQk3rx9q\n8WC7RmG3rErSnxGa6t73g289HqinNfmrpHwWXIPVtYoBhOn50mz7hEOjn8Kb\nP6CSV/izlmTfxdNHLM7CePfUegbugn0+As2E43MSAUF/73riwMf8rNLhGZCW\nWT/lWWopb9WDMa45HTyFKNB2fzAvHPqkYfewcWdDnlXcXD6climN8pZQswPy\n0ijJeL9AFHY1PZzK15eSl2fVTDZ5/pvW/8NNt1AjARLI6Dac6p4ihzyJve70\nk3dbWMi+8Jr/39YsraSHP7TuVmxJBPtgXNwhpqpSAoAOG0h7jhWXR6JHpB8Q\nbbRk\r\n=Rdjc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs58Jny/C9aBB8IYO4PRd7rxC+AXBXz3k1Xok4R6dVHAiEA0d9577PL99PiPN6WLtQ69aOWaU+uRTu9l7U3W46WnqE="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.c76d3f7d_1576081662840_0.027716642377283218"},"_hasShrinkwrap":false},"2.3.0-canary.62b21d4a":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.62b21d4a","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"62b21d4a890315dc7148428dac80e1e9d696a1b4","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.62b21d4a","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Usu8J0dFiW6KaOaWyIC0JR+OQMZCSnVJqdvME0U2wwlDoPcXLT2VpwmGmawtnPgEt+kSjyPJpQynO+54UHUCTQ==","shasum":"280ceaa81f75ea267715c39c8715f7817f2eab05","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.62b21d4a.tgz","fileCount":37,"unpackedSize":108874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeE1SmCRA9TVsSAnZWagAATo4QAJnNjhN3S/uEBX2FijW4\nQFtFpswLEEAbg7jP9MPvhit9PyclRGYODoRNVp9HrPUk5CF0dT3HtoNdWZb3\nMEHA0yn3l/chx9UT78/5Vq7iaL68WhdyzweKGESoaIpegcyfZsKvQpPv1zBL\nFtdrGEFFFLC9u7Gw8tn0A+vX5dXwfq5b0WWX945GQ50o9I44j+R6XI0DG9F3\ny26j9zwv8ruy9rprk6B2/tS9WHa2qDITIzQw/P8d/H0MDjYtZQCOcH4+hjpP\noZjRNpo1Te6RF5gwy9rN+EN55TOG7CmTKtgM3OrdduCzdZKfNNfdDQipkOR+\nmTamktfhZs3x4U/m+M3Oz/q7rUWnBSbnbgsHhf+2rvWb5kdH7g7knu4745zF\nR9PcNR9Yg7PMBsxFnB56xR9iNm8U/fPFUcjUMOyI4hFU3KmR03/wWXQ/wECd\n4T64x6wdy12OS26vz1PCUt+PC8ezry/I82aqpaiBkehMsTV8BHXOsGxj0+CL\nIOnW6/6t6qrTJib6uDId9BfoDanP+aEdIvvaJPKf45CrKhVq8N+rb2KygEfl\n3PGdhqqW9xv4lWhzL6rU0+APVBXoSujuU+1dm1JXkX8T3uMFJcDk2jJbdR9P\nKTdULpUTKIr94rDR+J1ocIQGkP+C4Nu1dzY326qpIeW7j/Q46TTb/lB4oZg/\nvTAu\r\n=P8ur\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4ktwKGmeXZ9nEUVvao733ubZXR17my2L9GA2KUYgMIQIhAMyk806ETHNFtBlqYGm4QJSpdhvwfbyvmfPPO5UlMxdM"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.62b21d4a_1578325157515_0.93162986379422"},"_hasShrinkwrap":false},"2.3.0-canary.49d2af44":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.49d2af44","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.3.2","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"49d2af441fad037e884eca85b58b46f5db224bec","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.49d2af44","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-bGrWodwkhT4ImcHdtwrX6z/eujFd+i6RMdCAzU/DDslN5kgm5JLjpQuQBHW0R25O7/nbtOz6uNscYQDvPYhBQw==","shasum":"fa4452f81a66d06aa0560f0c2fe0da09100d91c2","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.49d2af44.tgz","fileCount":38,"unpackedSize":111033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeF3UdCRA9TVsSAnZWagAAwvkQAIsnRvU/VnB+zYvKLumn\n0NYuCKwN0nCHHKbyKlSsOLxRVj5hAMcpP8V9HkMCv2kDMKjvwo09+iDza2+I\nDU8Mt0Z8MUXvACUdgIJDvjsi1VHpTKG3/d1lpeOQs5sEJ4ujtN6M++fW5kdJ\nx3N4CMbqeLTf60u7KegO6qe7khipcT5SUqFOcr2FGtARvyDvsw7+va8i0MCg\nPecbSmCyi8CMGw2l2ZxQf3wnIw+O2Fbj9RGzfm70mwRqlwol7/se5O4/Byeh\n1hJiAvqtHMHADxWWus3ONHBwEPW0Dz/oy3mYx0wK77G4qW6zc/WlGLzRcrMI\nZa0Hhv/K9Ofpbz8JS0vNfqIO40+61vLbTRGVtRrnuCzcSog5C3Bu6dwE4E3w\naZFkosdmuzAJnPUMijMjoBzXyzQOSUaIhI0weqBNc8SNczoNBvWy6l2Rhu27\nCt5BvZS/ktMLrdHC6k9kit4rXswbx4w5gSXH4izxe/GHEFOY3PzFzahBYdlW\npdjSUMzfN+MuQDc2OrxJU5oKqXDex5w0yVGo02YmJTzjWbhIyxAnI7hL60Xv\nrug+ZIINMNtN4rm0SDgcRwvS3XHUKYlf027nfsr6AwABm1so9oe8Yxt4phjD\nMUM/QMcMjSSrMUOzWH/t0z8ixhuoWGENlVcoKyl20/U5hK97C6JKurVSv9RN\nC71P\r\n=7o3K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOeO5i6VkK3w6mEmS5fd11OrXT7qsWQtUCHf4468XhDAiEA/uNIuIel10gQlt7lTzzw+8MJbYSoLk0pqJyuLPFiePM="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.49d2af44_1578595613060_0.16232510977287862"},"_hasShrinkwrap":false},"2.3.0-canary.35a0f5c7":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.35a0f5c7","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"35a0f5c77bf4c47a27b66af6b902efd2ca66c1b7","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.35a0f5c7","_nodeVersion":"10.18.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-GmIPZycOElAxiWnD92aJD6E0egsDyrxgM+JDi12IaQY9HI/+YnKki38WeiA/CCKAE3L5GovQeB6LqFL0GlMIGw==","shasum":"7d3bd4f004661d04fdc94724290c400a09aed5b4","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.35a0f5c7.tgz","fileCount":38,"unpackedSize":111033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMeSgCRA9TVsSAnZWagAA6acP/13eLyMqqmNoOisXoZLU\nD0h/5VTYc9Xt4HeZykTD6gRz7i27W0I2TyR/Qh7kf5pVO3D9TfO7Hc+EAltu\nKpo7/AUuqxuuIA4eHHmnLoX65d4/Bmyx8IKcJzdST+6il8dhnjovF//joxCk\nkfv4jXK98H5mOW28spHUQ9C9LP1RyzjNyk18hvUN9GYPMNkxILQmAB9yrjCb\nrCLTw6Zl8Hbgj/aW4KniPSzjrZoA5gGrefw3LkqXLe1tz/axCrU9EuWf5KB3\nFgkFBsnGphWCs+cpHppDagM5E9CKVsOuZUdLanJlFMBUDzhr6EUiA2hiYR8O\n+5mJA5X9XRdgG5jNN/xNASocNEx9SzXpvZR6DklpcRV6cfPrB+wPf2jEU0QZ\nR5dpvBY4QfKGW5M5hTNFBFQvou8MthHviKUtMFmKP+fGGuuJpIxKOPtzwDs/\nfjpw+gvcEkp17810nRPq2cS0V04Q/CRbq5zpl2U/krapemTFBXcHmfq2AmOm\nsZyp7/wbhxR8vBHlUm8f5ZalfDJIlA8Gph9p1CpGwRySud/NZUx6z+h0wGdb\njnW10D3y8nCEpLlagxw8oLJrRaeBOL60I3BTpP93kcesfvHyBftnhladG3Z1\nuocHHPEHieoSwtQ0EfmLMdCfjYEwFZYrtmimnEKl9tBt5P2bIc2Nf8E3kkTP\nMked\r\n=NqtH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBgR1bMsDRlZaOioW6knq6NxekhCSrHcnshKdkT0xPrFAiBgZZMx06L4BxdO8NS/1wJmEYboeL/A7EDerQLKvhiWZQ=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.35a0f5c7_1580328095964_0.4274928224381993"},"_hasShrinkwrap":false},"2.3.0-canary.aa9c57e8":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.aa9c57e8","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"aa9c57e8eaeb50fc45b1cbf4eeb7f98ebc7f25c2","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.aa9c57e8","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-3gevSgxh9I+Hk/bMuW7XGFN1QvHb47cxOtPeEUG0ZY6M0djlhZhYUGjGYuZrT2vOwY1gVxr5Ikp/QZhL2Eo7hQ==","shasum":"cc69fcef25a2449ae38635758377744a338c7abd","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.aa9c57e8.tgz","fileCount":38,"unpackedSize":111405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecjQSCRA9TVsSAnZWagAAtBAP/isYACoAMThzI++8nY0C\noOllB9UzNCMTfNkXgLHAFc6DsH4iczQaVC7tcsoseSKr3pssEZiueNIZHArD\n/9fnTEqMoAf0icNTE5VbMORymN/0Qs1uWYvfVmlyHIcFS+rGm55AJMbvPNDP\nNTPJC2fakAtRP4BjzXK8s5qwCCssHmY7pjrYENYkYSA6tHIjzSq7/9topneJ\n/C+nEXsNUmJBFD207GmfAJCtUEpbpEMF/sWpmvlWUpf0VKYAIvG/Der20W7q\nQVXmfdZpbuxijcfgp9oX3ZJWcs/JsIcWXfRTqbytpTg1ZAhZ5eA796KrvHXt\npOW/fYrARByQ/0zCz/CYBcx2lLrPsmvCG3dUrvoszPTJT6SvrGtAzP0CCjop\nliqI8Db6mLOlx5l363/tdzwuikpx7haYn+hV+vbJXw3ZZiIm+Ol7ej2hYi1L\nisLxr6nHSFvauB+8urGP7sIhap1XRZvr40vz2XqjVo1PBy71xPLQYlk6Xe61\nyefuwT3/y+z7HizMw2lawg83SXOCPayYfnXQSy+mcpZ91FLz3EsYOh/ea+mR\nK2Wj/y6z1jbpLN2QsmkXe/Pg9kD61fDPTEdd7Qitk3o78vyrE6jknyaKiytM\nqbmOiFYRW3fNx3LgScPUwtiUg5bbiHqwCji0NKxWRLpBseP4lCQ9sK9UkhVF\n9NuH\r\n=FiNH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGFfBZBHanLmkXI+zCkbdLa2Qiq7P4IdYTBkcJbYqt4WAiAJ4ddYlNJEOq19GqN86PAwJtsz7ijt55DWmudcRxUang=="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.aa9c57e8_1584542738483_0.7684458397150375"},"_hasShrinkwrap":false},"2.3.0-canary.c7dbe9ef":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.c7dbe9ef","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"c7dbe9efa3a05b89f31100d4ad7a5fe008f36eda","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.c7dbe9ef","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ryj+RWbsZaBQ3hYOdkbOAs6OtSsd/nJy8NCDhk89qT14k09dAbAZNipZ4PB5Yq2JeFu/SZtZy6uCDMNJj3NGSg==","shasum":"a44d8d0c26393fb2c3c8d6947fd95f33df09b5b5","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.c7dbe9ef.tgz","fileCount":38,"unpackedSize":111405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecjaPCRA9TVsSAnZWagAA/yEP/13X4ZJg18LDMt1KaUsO\nPoKrDRc95AV11MEqyF8bt13WPTebQ/xY8iSOF3C32u8ixR3ti0PMjsGIv2Qx\nFj0eAuudJ0TXpjJsRbgCOVI2QLYgTOgortzbXnKUODYUcKdK2DWA/Z+TcTN5\n2VPS3DCx16m9pHb/NSrNsRyK+fdpPLITIsp7FNDNyVYVTXAOtqUTj9Sq0HMX\nXGohKFC62QGr3kcmPrCr4RjX5TpbD95XJITNr5B8DAY/evvxABNN/MVQOORb\nYUQuCUv6xqvsms9Nr4i7f5JH9xgH5O1mHO7zakqXjIb8sdAo5iLHbIyu3cyl\nfLy6hHcltBLR9SidXusTzlOjNpcq2tEuPP+A7Ptwro3Z7QoA7L94CeU1tVtk\noA6w5G2WdhrpKG56nx8H/i1LRABBWxERzNRZShY9rlskG8RBnJuXpBAr4jE9\niykcxavU5Hq5VcY3is80d9zyVE7OxvXtiyc2AiQ4Oy1ddrMiu1zny7scLbSF\nW72fTHAV+2ZFYZ+hmUBJgWs/6ZI9SeGJl11X+fyNNqSnAAthwTAXrya1uFmg\nCwIug6wmZFjD249h2yVIT39vNbNRdwIyNYI1uAPSIyBqBW9Pq4dBQKiOpaCC\nquWNzo6TfvWbINQjH+YOkl+5atKxH85GOXS3DYlcV6fwz641hOuJkyGRz6cY\nnLU5\r\n=l4+D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNQPHKFvk6JjELeq2FAqCQRVPphoohPICTRjT3S1UuuwIhAO9f/WCM6QkBxTQm42h18/03uSRo0+GKwusYs7Epbcib"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.c7dbe9ef_1584543374914_0.3614451058645296"},"_hasShrinkwrap":false},"2.3.0-canary.7fb882c0":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.7fb882c0","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"latest","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"7fb882c0ab9c908a3b85f739e5276364fe7cb630","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.7fb882c0","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-zjsmlEnd8qzabm8APLgdGI9PJgrjmLTouq6of19Po20LdLD01+sTwHxbULQp2sybJHwPEKQDcqbMJpQPr29GFw==","shasum":"cb4d21434dce38de0e9467a1d3c94f5eb9a50a00","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.7fb882c0.tgz","fileCount":38,"unpackedSize":111405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevrJcCRA9TVsSAnZWagAAnsEP/RcSvC80gTLgqE/+gDGF\nEjaakRnBqFY20q0SIhIB7ojmESAs4VDsdXzkcn01P3GLUql/1HsVAQV/RX9m\n3Qt0pC+5t7LbjPbiQHrbATFAKrS0q7XTif7wV9V0EDi2gHrwIRYWF/pTMDd7\nk3voiPIUKQjckdx5QaBgVhV8zJjnY2a8Jkhwe3dP0V6kt321RgdcF7WJ+Fl2\nV4YW0V1BIJwBkOpr4fCZgvbG+0sPxGVTa148nY4UBA7agDHZRQ+596zRr+vq\nm2dGW/Cj4Np2cCiVtEbjqy2HUS2AQFQimaF9ppslU2lRN7OzaV2sA0N2+s7d\nnHJTCPc+/m4wCZShc6IXqLKGNO9iuqHU/Z3FTXLPa/OczBdvK4n+PsjlNDU0\n+18+oW4eX+hswENY4E4NRqv5dGRhPuVGtkmPUYalQ6odTJHyf4rneTMgwfwD\nIzGK+GBmQmYPzf6WRjp1ikI8L8gdvf4fowdK9WA7H+u/IXgxuNiRNRfFxGVA\nNZ5mH//kDW/XtnJOaZXzpyoXAtrflo826bpihICbsXuMmY1RwIWNVx9XI0XO\nfXPRYLdzygqgAy8bzK8iiXzcNtMAvJOYqTPJhgZwhgIWVSoIR0+jCJC3hXxM\nOxHc7F8I3809nfFEOJshWSrgJ75EhG2aKLlQUjVsxlgf/hUK/2Dtjf3lX1cl\nLlJ5\r\n=0f7P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwgLcKvmiW8SJ1ctng3PfBoD9h7Gbf2fZt5kMqqkVdwwIgMu1fxKDRN0vYy8xMKbGDEd/nKqJCqnM9W4Ioa47aJJg="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.7fb882c0_1589555803717_0.8955941016959239"},"_hasShrinkwrap":false},"2.3.0-canary.e4705ccf":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.e4705ccf","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^83.0.0","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"e4705ccf815d815bdfe2a1e3edad832b9af99f58","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.e4705ccf","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-tARc90cLaCH5nxDsXnK6X1yzA7u+BCXl7qqCv1Uto3Lyy6l2nm5TQn1rge2Wx30nZvH8ceKVNlaFWRuHBBXTXA==","shasum":"08be5200c4f4bc08ac8b007c17d279889d31495e","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.e4705ccf.tgz","fileCount":38,"unpackedSize":111461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez9cbCRA9TVsSAnZWagAAz7UQAIok0DmGZrsxXVmeusJS\naKv2GZOzrFFDCljD+/jsY82GKwDOQHnOS9se5nf4xFkeISY/nPpoA/9m/iti\nOkl1WJz/vJuCxAf1z+5S/50p7vMik+STRvzJfW3IluKQdWNLsGkVYjnn/iiC\n4juopqiC/G4xYCk79FBH89vDK+dchTm4d9WE3EYmSwobuy3vxZIrnQ6M2D4W\ntZPhM3g6JWIPwKqzfEvua6bImgZgelFrIPv486ohJQIXnN33qrXTwmiQrhbv\nDhbNWTsj4QdfCYxYsPtf8RW5wvlPgFCw/GgXLv3llEeyqHMTDOtQhJ3jZRCl\neQzukOhKu0uGojr/sXzT6h3vPs2ny2uYsBPEC0D6B7/ulw0Ln1c6cvRFzOB9\nypzBSX8xpSqfMmp0mYcYaZH6lAiuz82/PaSSKgcWTaerNMjU7p+KXU0vnMdg\njUnuD55iRC70JY3DC87o03Q7xebYS8oS0Z54KZFEpE2EXutbS65UWP2Fn2In\niOnc4UOG/xmUiBzi97s6njtw/t5BQ9kEsNvVAk3dADwDaGmzozT3CzOy+nYD\nGCpIbVB5Ose/VctOWsQ4ldMXGRvlIfDHHsbIuVojozg96rudOeY/D0hZXPN3\neiBNpqmIXZL6Ol7l3ME8ovsX/rf9PyyRLnmbxoqjyZUF2tANR34sscciPMDp\nmbTM\r\n=nnJB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGI7QjNxuWodBkqFQQ1CCg4mt5WBdHSs9S6h277PHcdLAiEA7jtK/80KJ2/m+ekpLyrtnCEq96rOYISA7dw5bqXmifA="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.e4705ccf_1590679323181_0.05625874207080073"},"_hasShrinkwrap":false},"2.3.0-canary.eb76caa8":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.eb76caa8","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^83.0.0","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable aXe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using aXe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an aXe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"eb76caa8b6913195caafbbb1d31ed674b5af961e","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.eb76caa8","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-m6ppKTcb/2tcy1J0E7wn3Z3MrcEZ0U7XM02qRZT9UfHf7WCN3+GqV1ofDoeTsJb454kCynJu/bg8Qu+L35VE5g==","shasum":"01a1617815cba288a7b95186ea279d9dce6850f2","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.eb76caa8.tgz","fileCount":38,"unpackedSize":111462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez/CTCRA9TVsSAnZWagAAY5QP/i426eKt1Kc/ol0KLPeP\nc/Ph5NyX6GJ6ywB6UxuqGr9P1deEemuIRmjVyXxbnhyt2F17FX+bQSbgD1OW\nixIO9bV7DZq0kykRNc4Akjqq6AVPs24cGskCEgTCt4rnpdPBWcsVjbO2a7C/\niw+bxcu5eDStMs7xBXc52aYv8xUeWOuRVdGA/FkOYPqT+gTgAFsB118nckNg\n+2TKZKywnpO8tfls7129/Aw3Qwn6rBVtkphO4btpmqztyrk3U69yoIw1tN7i\nNKfYrUudkK7Jj7SG77rliEZmLQfK9deSTccziMT914XqYSyeJmRqWJejVm8G\nPA1onmJhHxTKQTWK0pCLTbeFXmPQEZI2pWs4NgPxgYMZYBE+w63thKHDMstf\nTbfE4pZ9VULg7f+fMUGd7+GxhFJS0O59LyuX9wukSr6AEQA53vwkNCdSRb0D\nJJON8mIczbloS6w/uTfNezZ9eiIT3EtWW6oXdX9MjH+ZenFMhDUdQzXTJjPw\nENSdXbz3PL8tzNHDioyN3CS373fnWsflujVVj5mCXzATEF51je6zW3F7O3lO\nmjc5gsAz149fQSDu+ee1kEvnIPm0dqRovsoJdgGZDCVPDyx6eiwTE5UZAHZX\nf6xW5GuoPiBiH14Ft+6bZwK03PTPeuL/Js5GWiLhQC2E75pzJh/dckrUel10\nqwYf\r\n=RTct\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxNN0jjdxFQK8LxdPL3VDWaqN0h1zUYY0UVzk7LZtzfAiEAxAXgg3dukG4MnN5lAKAWwiU0VMYJm9YgnQeCRVafKwE="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.eb76caa8_1590685842992_0.40953598847900974"},"_hasShrinkwrap":false},"2.3.0-canary.4c819177":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.4c819177","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^83.0.0","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable axe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://seleniumhq.github.io/docs/wd.html).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using axe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an axe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"4c819177dbc79078ce782170bfb5f9572cef9f7b","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.4c819177","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CFjtMHup2Efk3zoueKOLKr7JTY4Z2NgLXJPZN1kqL5pQ34UlK6x/uWpVYEnyhWc2FNn+K0fuU9vXBcgQlD2Fzg==","shasum":"b7e9ff3825b1644d61ce846dab42263058afbd09","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.4c819177.tgz","fileCount":38,"unpackedSize":111462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0S8XCRA9TVsSAnZWagAAkOgP/1PBOjBcYRJHvE2juByv\nFo6NZ0QiGZkQlP9duJCWBeKOU6k2Mb2y5h4iYhquHgtOGAe4IySnE5ozuGCA\nP4Ce0TRAKQFXs4Woc2p+OLL+nsF16dqn6QcS7EMS34DH7LDXgHETI+g9ZbWH\n0CScX2QiGBFPXM2YWCgkO3QAl///ENdtl6S6l7IlGsAGjiXZalnrq40EAies\noy/4OQ3UFm13wzoFfreYlizTNiOy8MuNmD8PQFu5wKYxGZNh1BnuYvOpDHTE\nIwEHu/mqjzfo/TVtDqWG1jK8v+BN8MfiZuTmvx1VU2a72XzN4QxNqgtc8SAC\nTNPeMBJ3om4Ka+laV+UFM5qH9VHY6NNA+KLj/feUapPyfkOHPQ3qXn7bPdFS\nI5SBsgnJSkfYP8miJdeHaCNB6mzNCc58MWx/bSxLdu+k7l0suOfjEZsNyJos\nsjbzBve7NadyFO/gHNPULXNoQoDtjio3TO2G6627wg3hGyML5gBQ9pK+gVMQ\n50NPMBdqCRCMhjvTT3CDbUndygNk61a7Id0VnvUoolLiRvfuz98i1kP1xW92\nngpUL7sHIRbgxEtXZaWTSy2qllaZjHYDEEVBUMDIrbLuxHiszeFG+FFGvGxF\nUa02HU+pSzUqu+38pUDuJ3bCrh7vU2X3eTUXiH2YIfhFkcfUSc3R3IF/34z1\npaRm\r\n=DqM5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICp/h/M7Aw4Uk4tGDephLpYkx/1zmIshmkJ2swft9NL/AiEAp6EoOHW8wEJe2kgPhbEy4wLT6bFrS1GRhdMSQgRLGEM="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.4c819177_1590767382629_0.9373573862179883"},"_hasShrinkwrap":false},"2.3.0-canary.6f128114":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.6f128114","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^83.0.0","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^7.0.0"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable axe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://www.selenium.dev/documentation/en/webdriver/).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using axe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an axe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"6f128114d1205be05de63bdefd5e681b2583ba0d","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.6f128114","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-sX0ek8cZuxorqrHlFAE/di5vaOwf9Y+n5fp8kI+15saNHVXlbZwryIZaA+N7AtzfAjX8VLkRUHd4mHMj/93gGw==","shasum":"ed7d0fccf8f20e1054a1b12224cb3da968105a61","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.6f128114.tgz","fileCount":38,"unpackedSize":111473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4J69CRA9TVsSAnZWagAAjYMP/3cHnP7PN6ttVnLW6ll9\n2X5qfQEADgoXcJm8zetwHH3BcFwPTHYB3Ct92p7/uOONwMoqNSDX1KFXzfPD\nSblypgGiR3dsy9ARl9yZqorIronycI31S706mY0uHHSRP+kJCUxzhLbKgIci\nftUNzcSQu9AEMEJOEbLS+/DfnHE+FSG4Y8GHmWctEUrxeJLbFII84UIf0/u7\nnlN27ouvcbrc3rgLi/BiGhauO2+LQRZlpv5mB/Mf9mYyoYJvX3vV73esCRUA\ndAk4gxYrgSJyFRzarY/dhutqRxPFxAiRFsnXjTOXb8eNDXtQ/54tfkSmDmyo\nScUIp8/5fO19T6LsYv1xksJFeiELVKYBEBSSupN2NJjQ88ZzgJcIJarjmx9X\nU68Q6dLS0v06ZDuEKHP7mODALOd8aoWzjseamWG1dmtUs4XFbmLINPPxXcFc\nAREZJSMGLxnJd0LSOWJ6zcZhJiMXFiojLqKUM7Txr43AWv5p59WgXfLHdfkr\nXmwKV7dKR8CL+Hudh6mY5jshKfjI11V8GkxoziUcgY01j/f+fXkQW00crqZm\nEdDk0pzbKwpJwvwtf2zth3Tg6k3K8s/BWkyQYhLFXeRr0J2abBJWr4t2efNG\nZrszTfcA/O6iJPbdm6juwxG4Ak9xdDesRCH566C3s6JVTMRVSmsF5j9NtrnJ\nr0/u\r\n=PUZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqyNyZM+vupETok0nbiz9c0S3XzKt7C8J7FniG+khBQwIhAJprofZVrT+xVgDOdh9dbrfMTv2YcbuoG9jtFPMMncMK"}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.6f128114_1591779005229_0.9850820962993392"},"_hasShrinkwrap":false},"2.3.0-canary.afb145c4":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.afb145c4","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^83.0.0","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^8.0.1"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# axe-webdriverjs\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable axe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://www.selenium.dev/documentation/en/webdriver/).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using axe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an axe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"afb145c418ff5eb608490ce3ca4aa32d2e049b5d","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.afb145c4","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LgbbQiDXlYZP7+veRWg3a/iLK6wKbF9ARdWaWdT8iu66OxcT9OCjFvsP0YowYYVjnYJdmdyYVfa1y0F7ybqvGA==","shasum":"d04f4f78569a1729be40c025d9f062f513c30b4d","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.afb145c4.tgz","fileCount":38,"unpackedSize":111473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDXusCRA9TVsSAnZWagAA7A4QAJObLGiA9X1qImuCId6F\nfM5Pwv7vcO9JDGKYdL/qCd89+E02LKLJllrYjYMpixzYDgRuoER4Eu7W1rLS\nw+3Ns5dOL3JBvQztQgK8f4pggnXN+id18E4FhZgdhl7MbTERMcTYr+xACr9F\nazG/Z2+kyww+laoMnkjwMoRKCiDuKaM1n6HzZQTFaGHGYO8oCN6aj/i6THJ8\nd5Tsi4q4yHRAX9uoSwBGG6Za0P9wQZUI3+L30UU1G46JQ4dXeeyEeSp7prz0\nO78nCW7GspvIjffHKL4Goai9pzbYwKHyZQ4RTU9Fx0BK2A8cM1rh0vjZNNl/\nt5Y77ERkhfrz04ia9LsAV6wFh3i4Kw0x2Qzpt+ym/et8piWsJdl6Cxb4GD8w\np8PBFNGkpsLxBwNIExAswi4Bc+WsDAacL7luj/Ey5RKPwwFFHrBcCb6cqwuG\n+4ZIy2C5i/TD4BypE1lxRwCVRQXMtXvxP/OPyNkH3FFA07ht25Tj5OqS58CI\nTseKZ7/fY8iMjeojTf6TOm9wNXVGFgV4zNPJclGbDaseNwmfSarmGhQc/t8B\n27sWPoz7KSD+6tWpU7C+2s54ft5sFyXowvZs2K09B17G8Bln0Q6ezkIgsUZa\n/YGHFf95v5JhYF5KFp9DRvJQZDdXq+bYej0qJsuSgDvJ2jwuLGlbR8RYtCtu\nyb7q\r\n=dOY1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/g+daFvfzo7NexUZhEoV3hosEKqEdMG7T5yRImPoG0AiEAyBFqGAJDJObRy7ombLQgSolv2gTBBc+IPeuW+8bX75E="}]},"maintainers":[{"email":"dylan@barrell.com","name":"dylanb"},{"email":"marcy.sutton@deque.com","name":"marcysutton"},{"email":"wilcofiers@gmail.com","name":"wilcofiers"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.afb145c4_1594719148387_0.6437088612036199"},"_hasShrinkwrap":false},"2.3.0-canary.e970a789":{"name":"axe-webdriverjs","description":"Provides a method to inject and analyze web pages using aXe","version":"2.3.0-canary.e970a789","license":"MPL-2.0","main":"dist/index.js","contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"engines":{"node":">=4"},"scripts":{"lint":"eslint './lib/**/*.js' './test/**/*.js'","fmt":"prettier --write './lib/**/*.js' './test/**/*.js'","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/*.js --require babel-register","test:integration":"mocha test/integration/*.js --require babel-register","test:sauce":"mocha test/sauce/*.js --require babel-register","coverage":"nyc npm run test:unit","build":"babel lib --out-dir dist","prepublishOnly":"npm run build","release":"standard-version"},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"]},"peerDependencies":{"selenium-webdriver":">= 2.53.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^4.2.0","chromedriver":"^85.0.0","eslint":"^6.2.2","eslint-config-prettier":"^6.0.0","http-server":"^0.11.1","husky":"^3.0.1","lint-staged":"^9.2.5","mocha":"^6.2.0","nyc":"^14.1.1","prettier":"^1.18.2","proxyquire":"^2.1.1","selenium-webdriver":"^3.6.0","sinon":"^7.3.2","standard-version":"^8.0.1"},"dependencies":{"axe-core":"^3.4.1","babel-runtime":"^6.26.0","depd":"^2.0.0"},"prettier":{"semi":true,"singleQuote":true,"printWidth":80,"bracketSpacing":true,"useTabs":false,"trailingComma":"none","arrowParens":"avoid"},"eslintConfig":{"parser":"babel-eslint","extends":["eslint:recommended","prettier"],"env":{"node":true,"es6":true},"overrides":[{"files":"test/**/*.js","env":{"mocha":true}}]},"nyc":{"reporter":["text","html"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# [DEPRECATED] axe-webdriverjs\n\n[![No Maintenance Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/)\n\n> This repository has been deprecated. The package has been moved to [axe-core-npm](https://github.com/dequelabs/axe-core-npm/tree/develop/packages/webdriverjs). The package will be available via NPM as [`@axe-core/webdriverjs`](https://www.npmjs.com/package/@axe-core/webdriverjs).\n\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/dequelabs/axe-webdriverjs.svg)](https://greenkeeper.io/)\n\n[![Join the axe-core chat at https://gitter.im/dequelabs/axe-core](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dequelabs/axe-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Version](https://img.shields.io/npm/v/axe-webdriverjs.svg)](https://www.npmjs.com/package/axe-webdriverjs)\n[![License](https://img.shields.io/npm/l/axe-webdriverjs.svg)](LICENSE)\n[![CircleCI Build](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master.svg?style=svg)](https://circleci.com/gh/dequelabs/axe-webdriverjs/tree/master)\n\nProvides a chainable axe API for Selenium's WebDriverJS and automatically injects into all frames.\n\n## Getting Started\n\nInstall [Node.js](https://docs.npmjs.com/getting-started/installing-node) if you haven't already. For running axe-webdriverjs tests read more about [setting up your environment](CONTRIBUTING.md).\n\n> Download and install any necessary browser drivers on your machine's PATH. [More on Webdriver setup](https://www.selenium.dev/documentation/en/webdriver/).\n\nInstall Selenium Webdriver: `npm install selenium-webdriver --no-save`\n\nInstall axe-webdriverjs and its dependencies: `npm install axe-webdriverjs`\n\n## Usage\n\nThis module uses a chainable API to assist in injecting, configuring and analyzing using axe with Selenium WebDriverJS. As such, it is required to pass an instance of WebDriver.\n\nHere is an example of a script that will drive Selenium to this repository, perform analysis and then log results to the console.\n\n```javascript\nvar AxeBuilder = require('axe-webdriverjs');\nvar WebDriver = require('selenium-webdriver');\n\nvar driver = new WebDriver.Builder()\n  .forBrowser('firefox')\n  .build();\n\ndriver\n  .get('https://dequeuniversity.com/demo/mars/')\n  .then(function() {\n    AxeBuilder(driver).analyze(function(err, results) {\n      if (err) {\n        // Handle error somehow\n      }\n      console.log(results);\n    });\n  });\n```\n\n### AxeBuilder(driver:WebDriver[, axeSource:string])\n\nConstructor for the AxeBuilder helper. You must pass an instance of selenium-webdriver as the first and only argument. Can be called with or without the `new` keyword.\n\n```javascript\nvar builder = AxeBuilder(driver);\n```\n\nIf you wish to run a specific version of axe-core, you can pass the source axe-core source file in as a string. Doing so will mean axe-webdriverjs runs this version of axe-core, instead of the one installed as a dependency of axe-webdriverjs.\n\n```javascript\nvar axeSource = fs.readFileSync('./axe-1.0.js', 'utf8');\nvar builder = AxeBuilder(driver, axeSource);\n```\n\n### AxeBuilder#include(selector:String)\n\nAdds a CSS selector to the list of elements to include in analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel');\n```\n\n### AxeBuilder#exclude(selector:String)\n\nAdd a CSS selector to the list of elements to exclude from analysis\n\n```javascript\nAxeBuilder(driver)\n  .include('.results-panel')\n  .exclude('.results-panel h2');\n```\n\n### AxeBuilder#options(options:Object)\n\nSpecifies options to be used by `axe.a11yCheck`. **Will override any other configured options, including calls to `withRules` and `withTags`.** See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.\n\n```javascript\nAxeBuilder(driver)\n  .options({ checks: { 'valid-lang': ['orcish'] } });\n```\n\n### AxeBuilder#withRules(rules:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withRules('html-lang');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withRules(['html-lang', 'image-alt']);\n```\n\n### AxeBuilder#withTags(tags:Mixed)\n\nLimits analysis to only those with the specified rule IDs. Accepts a String of a single tag or an Array of multiple tags. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#withRules` or `AxeBuilder#withRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .withTags('wcag2a');\n```\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa']);\n```\n\n### AxeBuilder#disableRules(rules:Mixed)\n\nSkips verification of the rules provided. Accepts a String of a single rule ID or an Array of multiple rule IDs. **Subsequent calls to `AxeBuilder#options`, `AxeBuilder#disableRules` will override specified options.**\n\n```javascript\nAxeBuilder(driver)\n  .disableRules('color-contrast');\n```\n\nor use it combined with some specified tags:\n\n```javascript\nAxeBuilder(driver)\n  .withTags(['wcag2a', 'wcag2aa'])\n  .disableRules('color-contrast');\n```\n\n### AxeBuilder#configure(config:Object)\n\nInject an axe configuration object to modify the ruleset before running Analyze. Subsequent calls to this\nmethod will invalidate previous ones by calling `axe.configure` and replacing the config object. See\n[axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure)\nfor documentation on the object structure.\n\n```javascript\nvar config = {\n  checks: [Object],\n  rules: [Object]\n};\nAxeBuilder(driver)\n  .configure(config)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\n### AxeBuilder#analyze(callback:Function)\n\nPerforms analysis and passes any encountered error and/or the result object to the provided callback function or promise function. **Does not chain as the operation is asynchronous**\n\n```javascript\nAxeBuilder(driver)\n  .analyze(function(err, results) {\n    if (err) {\n      // Handle error somehow\n    }\n    console.log(results);\n  });\n```\n\nUsing the returned promise (optional):\n\n```javascript\nAxeBuilder(driver)\n  .analyze()\n  .then(function(results) {\n    console.log(results);\n  })\n  .catch(err => {\n    // Handle error somehow\n  });\n```\n\n_NOTE: to maintain backwards compatibility, the `analyze` function will also accept a callback which takes a single `results` argument. However, if an error is encountered during analysis, the error will be raised which will cause the **process to crash**. ⚠️ This functionality will be removed in the next major release.⚠️_\n\n## Examples\n\nThis project has a couple integrations that demonstrate the ability and use of this module:\n\n1. [Running a single rule](test/integration/doc-lang.js)\n1. [Running against a page with frames](test/integration/frames.js)\n1. [SauceLabs example](test/sauce/sauce.js)\n\n## Contributing\n\nRead the [documentation on contributing](CONTRIBUTING.md)\n","readmeFilename":"README.md","gitHead":"e970a7893be224c7a826cf7efde43e77d9251b24","bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","_id":"axe-webdriverjs@2.3.0-canary.e970a789","_nodeVersion":"10.22.1","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PZXuskwCUINqJxegwbwZeggci4/6LvD7m04vmDAGkY1iyc71L9Z094DNml1ZFI1UtEH7eEYyTa4dGba1ct66oQ==","shasum":"dc282cdd7ddac034602cd42d8d762cebbf60c606","tarball":"https://registry.npmjs.org/axe-webdriverjs/-/axe-webdriverjs-2.3.0-canary.e970a789.tgz","fileCount":38,"unpackedSize":111840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffHHOCRA9TVsSAnZWagAA8K0P/jsMMk+ZHtBbzoVawSiK\nZSyjHr5+84hxv7ZygN5Ay5B/DPVZWGmPxmhPWaYMW1aerjc1svNLAEQI03cu\nDep5/KfPGD1OIfXdGBuv6Ein4Yz7X04aoz1/gIQpga/8aUCdeJr9FJ//KFg4\nWzsTDE6JUAGGdxLS5elqXHRHRqb3E99/Sztp/BeiEwU2HqRMYDVdosu3fe4y\nAW/zVwgLaQk8me0efL2DoBcgWjAxTqnfuhjJUpeIHBnM4yLQo6M6oQcTwsRe\nGqQGD1WGpOQ40Js2pyg/eyNZ3QRiP5fceXUGRQ2TtngNDYmg8Rnatibs+BGD\n46nP2XJmrhYwFy3ChGX6lEjPg8QbDFIggrVaU+8ob4QwzokSTG6wqmcUwv0x\n6wxthm2WHFjC1rUv0UB/sltKRCE8pB2E2yeR364+XJcDlXOWDEVTJgK95CDu\nmZIGcEGKqXvcOiCwZAIfPInsuHLd3xy5pIuCSeZGGf/K8JDJdwptDrlMQJrm\n7Le+zvTcAMVkNGVo/m20NsPJb/pdXh52KeNlH0KcKYf2vwXTam3Mt5uvFTln\neEVm0TsRbjDJfU0raTFKT16xe2AOrREA2iVfZPdhIS6cTL8SswNXohw2Jb2W\nIif2eSXT1ffLkePLw6fZD6n4UNTa1luR31hc6BCkzWB2oH9N1JM/uEcQEEnR\ndf/4\r\n=eiBF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6Twr/zaDXl7zId+eIyyKDOlmNjWY93xMXfU6RYuvCXwIhAPr28QcvCgWx64YbiV2rX7F2P9j2s/3hZv1fpf0g2Syu"}]},"maintainers":[{"name":"dylanb","email":"dylan@barrell.com"},{"name":"wilcofiers","email":"wilcofiers@gmail.com"},{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/axe-webdriverjs_2.3.0-canary.e970a789_1601991117672_0.18394577642850485"},"_hasShrinkwrap":false}},"homepage":"https://github.com/dequelabs/axe-webdriverjs#readme","keywords":["a11y","unit","testing","tdd","bdd","accessibility","aXe","selenium","webdriver","webdriverjs"],"repository":{"type":"git","url":"git+https://github.com/dequelabs/axe-webdriverjs.git"},"bugs":{"url":"https://github.com/dequelabs/axe-webdriverjs/issues"},"license":"MPL-2.0","readmeFilename":"","users":{"cycomachead":true,"max_devjs":true},"contributors":[{"name":"Dylan Barrell","url":"http://github.com/dylanb/"},{"name":"Marcy Sutton","url":"http://github.com/marcysutton/"},{"name":"Wilco Fiers","url":"http://github.com/wilcofiers/"},{"name":"David Sturley","url":"http://deque.com/"}]}