{"_id":"grunt-tenon","_rev":"26-66644a260ea83a97625fd89fe181ed0c","name":"grunt-tenon","time":{"modified":"2022-06-18T16:08:10.403Z","created":"2014-11-03T23:29:13.796Z","0.0.1":"2014-11-03T23:29:13.796Z","0.0.2":"2014-11-03T23:34:35.416Z","0.0.3":"2014-11-04T00:40:28.549Z","0.0.4":"2014-11-04T14:02:38.322Z","0.0.5":"2015-02-22T05:34:02.447Z","0.0.6":"2015-02-22T05:55:36.493Z","0.0.7":"2015-02-23T04:26:07.757Z","0.0.8":"2015-02-27T01:32:43.472Z","0.0.9":"2015-04-21T01:28:12.626Z"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist-tags":{"latest":"0.0.9"},"description":"grunt tenon accesibility test plugin","readme":"# grunt-tenon\n\n> Accessibility testing tool\n\nGrunt task interface to the [Tenon.io](http://tenon.io) automated accessibility testing service; [learn more about Tenon.io here](http://tenon.io/documentation/).\n\nThis plugin is currently in beta. Please file an issues as you come across. Contributors welcome.\n\n## Getting Started\nThis plugin requires Grunt `~0.4.4` and Node no later than 0.10.0*.\n\n*Users with newer versions are experiencing issues with the node-curl plugin that is required to make request against the Tenon API.\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-tenon --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-tenon');\n```\n\n## The \"tenon\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `tenon` to the data object passed into `grunt.initConfig()`.\n\n```js\ngrunt.initConfig({\n    tenon: {\n        options: {\n            // Task-specific options go here.\n        },\n        your_target: {\n            // Target-specific file lists and/or options go here.\n        },\n    }\n});\n```\n\n### Properties\n\n#### urls\nType: `Array`\n\nDefault value: `[]`\n\nA list of publicly accessible URLs that can be tested against the tenon API. Items of array, can be `String` or `Object`. If an object, additional tenon params can be added to object literal.\n\n```js\ngrunt.initConfig({\n    tenon: {\n        your_target: {\n            urls: [\n                {\n                    url: 'http://www2.foo.com/content/te-com/usa/en/solid-state-connectors/product-1-2106003-1.html',\n                    apiOptions: {\n                        projectID: \"MY_SPECIAL_PROJECT_ID\",\n                        importance: 3\n                    }\n                },\n                'http://www2.foo.com/content/te-dev/usa/en/index.html'\n            ]\n        }\n    }\n});\n```\n\n### Options\n\n#### options.apiKey\nType: `String`\n\nDefault: `''`\n\nRegistered tenon API key.\n\n#### options.apiOptions\nType: `Object`\n\nDefault: `{}`\n\nAn object literal of tenon api parameters.\n\n#### options.contentPaths\nType: `Array`\n\nDefault: `[]`\n\nA list of explicit content paths that are concatenated with the `httpBase` to form a publicly accessible URL for the tenon API to crawl.\n\n#### options.force\nType: `Boolean`\n\nDefault: `false`\n\nSet `force` to `true` to report JSHint errors but not fail the task.\n\n#### options.httpBase\nType: `String`\n\nDefault: `''`\n\nBase host for an internal list of URLs to crawl.\n\n#### options.timeout\nType: `Number`\n\nDefault value: `3000`\n\nThe number in miliseconds of the request timeout to the tenon API.\n\n#### options.urlService\nType: `String`\n\nDefault value: `''`\n\nA custom service endpoint that must return JSON and has a `urls` property. This property is an `array` of object literals. An individual object literal has a property called, `path`, which is the path tto a page. The path can be fully qualified or relative to the `httpBase`.\n\n```json\n{\n    urls: [\n        {\n            path: \"/content/te-dev/usa/en/sprint-7/video-details\"\n        },\n        {\n            path: \"/content/te-dev/usa/en/sprint-4/pnp/demo-browse\"\n        },\n        {\n            path: \"/content/te-dev/usa/en/sprint-6/pgp/demo-pgp\"\n        }\n    ]\n}\n```\n\n### Usage Examples\n\n#### Default Options\nIn this example, the default options are used to set the tenon API key and public URL is crawled by the service.\n\n```js\ngrunt.initConfig({\n    tenon: {\n        options: {\n            apiKey: \"z3x55cx71z6045466X28cdacc87x544z\"\n        },\n        local: {\n            urls: [\n                \"http://www.myawesomewebsite.com\"\n            ]\n        }\n    }\n});\n```\n\n#### Custom Options\nIn this example, custom options are used to overwrite the default options.\n\n```js\ngrunt.initConfig({\n    tenon: {\n        options: {\n            httpBase: \"http://www2-qa.foo.com\",\n            apiKey: \"z3x55cx71z6045466X28cdacc87x544z\",\n            timeout: 240000,\n            urlService: \"/content/te-dev/usa/en/admin/testaccessibility.json.html\",\n            apiOptions: {\n                certainty: 80,\n                level: 'A',\n                priority: 40,\n                projectID: \"MY_PROJECT_ID\"\n            },\n            force: true\n        },\n        teLocal: {\n            options: {\n                contentPaths: [\n                    '/content/te-dev/usa/en/index.html'\n                ]\n            }\n        },\n        teProd: {\n            options: {\n                urlService: \"http://www2.foo.com/content/te-dev/usa/en/admin/testaccessibility.json.html\"\n            },\n            urls: [\n                {\n                    url: 'http://www2.foo.com/content/te-com/usa/en/solid-state-connectors/product-1-2106003-1.html',\n                    apiOptions: {\n                        projectID: \"MY_SPECIAL_PROJECT_ID\"\n                    }\n                }\n            ]\n        }\n    }\n});\n```\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\nv0.0.1\n\nv0.0.2\n* Updated Gruntfile.js\n\nv0.0.3\n* Updated README.md\n\nv0.0.4\n* Updated for NPM\n\nv.0.0.5\n* Refactored node modules.\n* Added tenon api options as task options\n* Moved `urls` from options to dedicated property and made reverse compatible as options. This matches the usage examples now.\n* Edited custom service description.\n* Updated README.md\n\nv.0.0.6\n* Updated README.md\n\nv.0.0.7\n* Added all tenon options to default (bulk) url requests.\n* Added ability to pass all tenon request options to each test URL to override default options, while still retaining ability to pass individual url strings.\n* Temporaily deprecated the `src` param, URL testing available in future version\n* Updated README.md\n\nv.0.0.8\n* Updated version of node-curl dependency\n\nv.0.0.9\n* Updates to reporter and tenon API endpoint\n","versions":{"0.0.4":{"name":"grunt-tenon","version":"0.0.4","description":"grunt tenon accesibility test plugin","main":"Gruntfile.js","directories":{"test":"test"},"scripts":{"test":"grunt test"},"keywords":["wcag","sec508","a11y","accessibility"],"author":{"name":"Andrew Babaian"},"licenses":[{"type":"MIT","url":"https://github.com/gruntjs/grunt-tenon/blob/master/LICENSE-MIT"}],"dependencies":{"grunt":"^0.4.4","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","grunt-contrib-clean":"~0.5.0","node-curl":"^0.3.1","async":"^0.9.0"},"devDependencies":{"grunt":"^0.4.4","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","grunt-contrib-clean":"~0.5.0","node-curl":"^0.3.1","async":"^0.9.0"},"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"homepage":"https://github.com/babaskate/grunt-tenon","_id":"grunt-tenon@0.0.4","_shasum":"0b68a65f18f457c06771c92bfd7cb20cb19aa210","_from":"./","_npmVersion":"1.4.10","_npmUser":{"name":"babaskate","email":"babaspamian@gmail.com"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist":{"shasum":"0b68a65f18f457c06771c92bfd7cb20cb19aa210","tarball":"https://registry.npmjs.org/grunt-tenon/-/grunt-tenon-0.0.4.tgz","integrity":"sha512-GIYDHC+0xfGL+hpQsPu0cEWNhZKAZIX5+XW/5uSIrg2eN+AT0XvaUMefOxv0ErYaYVPRk2ZuxRQ/FUsoVWITZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCL+hCjtuVyp2U6WlVmCal8tBOr8JIpThg3sKUG12MTxQIgNLZOIhpNSQd16IuUcePr1dlAZivdSXtJHBg2TEqJcBc="}]}},"0.0.5":{"name":"grunt-tenon","version":"0.0.5","description":"grunt tenon accesibility test plugin","main":"Gruntfile.js","directories":{"test":"test"},"scripts":{"test":"grunt test"},"keywords":["wcag","sec508","a11y","accessibility"],"author":{"name":"Andrew Babaian"},"licenses":[{"type":"MIT","url":"https://github.com/gruntjs/grunt-tenon/blob/master/LICENSE-MIT"}],"dependencies":{"grunt":"^0.4.4","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","grunt-contrib-clean":"~0.5.0","node-curl":"^0.3.1","async":"^0.9.0"},"devDependencies":{"grunt":"^0.4.4","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","grunt-contrib-clean":"~0.5.0","node-curl":"^0.3.1","async":"^0.9.0"},"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"homepage":"https://github.com/babaskate/grunt-tenon","_id":"grunt-tenon@0.0.5","_shasum":"8a3a19aaa735302e93a75569b7a6b8474d3fd6eb","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"babaskate","email":"babaspamian@gmail.com"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist":{"shasum":"8a3a19aaa735302e93a75569b7a6b8474d3fd6eb","tarball":"https://registry.npmjs.org/grunt-tenon/-/grunt-tenon-0.0.5.tgz","integrity":"sha512-YKGn6CMR9XWqrMDOwzMxkuQEz2CTd5Hlr6Yp7pV3dwmu7l1Q2ygLLlkXgGEbze1vQ5vYlpi38roJu1O6XivOkg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDITGGvIR5mChXrj26skh5GXFBIELrl9CglO/bDGZR9lAIgWvEGFMWOu+xWp0zt9jPdBHDm6YinY7UPDO7mHrhUe7E="}]}},"0.0.6":{"name":"grunt-tenon","version":"0.0.6","description":"grunt tenon accesibility test plugin","main":"Gruntfile.js","directories":{"test":"test"},"scripts":{"test":"grunt test"},"keywords":["wcag","sec508","a11y","accessibility"],"author":{"name":"Andrew Babaian"},"licenses":[{"type":"MIT","url":"https://github.com/gruntjs/grunt-tenon/blob/master/LICENSE-MIT"}],"dependencies":{"grunt":"^0.4.4","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","grunt-contrib-clean":"~0.5.0","node-curl":"^0.3.1","async":"^0.9.0"},"devDependencies":{"grunt":"^0.4.4","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","grunt-contrib-clean":"~0.5.0","node-curl":"^0.3.1","async":"^0.9.0"},"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"homepage":"https://github.com/babaskate/grunt-tenon","_id":"grunt-tenon@0.0.6","_shasum":"69c47db159a7f0a7a0becc8ae58424fccf8963d4","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"babaskate","email":"babaspamian@gmail.com"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist":{"shasum":"69c47db159a7f0a7a0becc8ae58424fccf8963d4","tarball":"https://registry.npmjs.org/grunt-tenon/-/grunt-tenon-0.0.6.tgz","integrity":"sha512-74GfR86jQb09P+XEKVcdWb9AWxOwLqzT4wgygfC5LYnqoh2H9iPXiQiakbyRpkAH7VqCunHnPWi5zjTO9Uyu0g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAY2Rb80MbNUVXrh/JgakTJuTZP7kHmVsIY244k0c4W4AiEAwnFR1FNE8fd9UsZwIojhegQJ0stxK/X7MkRzCatjHgQ="}]}},"0.0.7":{"name":"grunt-tenon","version":"0.0.7","description":"grunt tenon accesibility test plugin","main":"Gruntfile.js","directories":{"test":"test"},"scripts":{"test":"grunt test"},"keywords":["wcag","sec508","a11y","accessibility"],"author":{"name":"Andrew Babaian"},"licenses":[{"type":"MIT","url":"https://github.com/gruntjs/grunt-tenon/blob/master/LICENSE-MIT"}],"dependencies":{"async":"^0.9.0","extend":"^2.0.0","grunt":"^0.4.4","grunt-contrib-clean":"~0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","node-curl":"^0.3.1"},"devDependencies":{"async":"^0.9.0","extend":"^2.0.0","grunt":"^0.4.4","grunt-contrib-clean":"~0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","node-curl":"^0.3.1"},"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"homepage":"https://github.com/babaskate/grunt-tenon","_id":"grunt-tenon@0.0.7","_shasum":"5463251c64b9043e0b2c8018747b339571334fae","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"babaskate","email":"babaspamian@gmail.com"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist":{"shasum":"5463251c64b9043e0b2c8018747b339571334fae","tarball":"https://registry.npmjs.org/grunt-tenon/-/grunt-tenon-0.0.7.tgz","integrity":"sha512-QLRJiPzCHj0j4uqyI1k4h1ps6bx4rZ2cnf04yEpXhaqcePVgAb+FIPb8iGs7k8ZTSy0o33lFei0uChUeYA3VdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBzKqNzUu1B0oQqwcUAawvOCNFPODP3xHMBOuYaJAtjtAiBaJzAOmgcXzEZaBSyvHLcvUOKZoSOdTAnKuXJ4WUe6ag=="}]}},"0.0.8":{"name":"grunt-tenon","version":"0.0.8","description":"grunt tenon accesibility test plugin","main":"Gruntfile.js","directories":{"test":"test"},"scripts":{"test":"grunt test"},"keywords":["wcag","sec508","a11y","accessibility"],"author":{"name":"Andrew Babaian"},"licenses":[{"type":"MIT","url":"https://github.com/gruntjs/grunt-tenon/blob/master/LICENSE-MIT"}],"dependencies":{"async":"^0.9.0","extend":"^2.0.0","grunt":"^0.4.4","grunt-contrib-clean":"~0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","node-curl":"^0.3.3"},"devDependencies":{"async":"^0.9.0","extend":"^2.0.0","grunt":"^0.4.4","grunt-contrib-clean":"~0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","node-curl":"^0.3.3"},"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"homepage":"https://github.com/babaskate/grunt-tenon","gitHead":"11334cf16f8fadb82f3ee0edb9722c94bb15c8fb","_id":"grunt-tenon@0.0.8","_shasum":"ea5c2b4f81108b137b1e8b12d21c7e48b5ecc57a","_from":".","_npmVersion":"2.6.0","_nodeVersion":"0.10.30","_npmUser":{"name":"babaskate","email":"babaspamian@gmail.com"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist":{"shasum":"ea5c2b4f81108b137b1e8b12d21c7e48b5ecc57a","tarball":"https://registry.npmjs.org/grunt-tenon/-/grunt-tenon-0.0.8.tgz","integrity":"sha512-VWjU+2aC/H9dg9GnKay5OgMOTv2lhqgekVtJpo8wuF31yIf1tqICXLlJMFlx9OoQvb4/T0GP9nQixp/6D+XFjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjLvrsAFY7bU67V8p+4/nIqmv/WXAe2RilLtJ9RtbvxAiAT4CWFesfeCJ3Ux5+rYwEznuYV8LQg2bZiIExUYvph6w=="}]}},"0.0.9":{"name":"grunt-tenon","version":"0.0.9","description":"grunt tenon accesibility test plugin","main":"Gruntfile.js","directories":{"test":"test"},"scripts":{"test":"grunt test"},"keywords":["wcag","sec508","a11y","accessibility"],"author":{"name":"Andrew Babaian"},"licenses":[{"type":"MIT","url":"https://github.com/gruntjs/grunt-tenon/blob/master/LICENSE-MIT"}],"dependencies":{"async":"^0.9.0","extend":"^2.0.0","grunt":"^0.4.4","grunt-contrib-clean":"~0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","node-curl":"^0.3.3"},"devDependencies":{"async":"^0.9.0","extend":"^2.0.0","grunt":"^0.4.4","grunt-contrib-clean":"~0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-nodeunit":"^0.3.3","node-curl":"^0.3.3"},"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"homepage":"https://github.com/babaskate/grunt-tenon","_id":"grunt-tenon@0.0.9","_shasum":"a42d6c72b77f0c6fba4cccf9be632a8d8c106cc7","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"babaskate","email":"babaspamian@gmail.com"},"maintainers":[{"name":"babaskate","email":"babaspamian@gmail.com"}],"dist":{"shasum":"a42d6c72b77f0c6fba4cccf9be632a8d8c106cc7","tarball":"https://registry.npmjs.org/grunt-tenon/-/grunt-tenon-0.0.9.tgz","integrity":"sha512-WBupkcpTS0wUs8SRV6QN/MfZnGn1b8wZubtf9b9GYk+W+KcaCpvYjsLrJ4Acc2yRjIOtcqtQeFiChgkSxOZvRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6wL5+0gwVISo6iD+Ogbqfwhtsba1lZh/HQ3I81XPz6AIgQIM9krS8j5IJS0vzGZGvRDu7TgGRL1gdkFVmw7oj8i0="}]}}},"homepage":"https://github.com/babaskate/grunt-tenon","keywords":["wcag","sec508","a11y","accessibility"],"repository":{"type":"git","url":"https://github.com/babaskate/grunt-tenon.git"},"author":{"name":"Andrew Babaian"},"bugs":{"url":"https://github.com/babaskate/grunt-tenon/issues"},"readmeFilename":"README.md","users":{"ginader":true}}