Compare commits

...

16 Commits

Author SHA1 Message Date
Rowan Manning
6bfb4f72d9 Version 1.11.0 2016-05-23 19:13:46 +01:00
Rowan Manning
b3a28bb1e8 Update the README based on review comments 2016-05-23 19:07:23 +01:00
Rowan Manning
4bd5613427 Update references to the new Pa11y organisation 2016-05-23 19:00:22 +01:00
Rowan Manning
17b04daae0 Document how to use environment variables 2016-05-22 13:10:52 +01:00
Rowan Manning
c15cc32542 Fix some lint errors 2016-05-22 13:05:08 +01:00
Josh Chisholm
08a1a9060f allow configuration by environment variables 2016-05-22 13:01:05 +01:00
Rowan Manning
1358d0f38d Add a changelog 2016-05-22 12:58:13 +01:00
Rowan Manning
4eb2fba6aa Bring the README into line with newer projects 2016-05-22 11:45:57 +01:00
Rowan Manning
6a1e06a435 Update to the latest version of the webservice 2016-05-22 11:39:00 +01:00
Rayraegah
5bfc958270 Revert "if wait value is null or undefined, set it to 0"
This reverts commit 7ce4127908.
2016-05-21 16:14:53 +01:00
Rayraegah
7ce4127908 if wait value is null or undefined, set it to 0 2016-05-21 15:43:58 +01:00
Rayraegah
2a15773e04 Added "wait" field in new task and edit task pages
Added UI control to set `wait` option in pa11y script. Updated test
cases.

[pa11y-dashboard issue
#127](https://github.com/springernature/pa11y-dashboard/issues/127)
2016-05-21 14:13:38 +01:00
Hollie Kay
aa3f0eb727 Merge pull request #128 from springernature/sidekick-update
Sidekick update
2016-05-20 16:21:35 +01:00
hollsk
aad26d8cd1 add horizontal rules 2016-05-20 16:20:47 +01:00
hollsk
fbe6875cf0 moar space 2016-05-20 15:45:37 +01:00
hollsk
c0ee197138 add sidekick update 2016-05-20 15:44:19 +01:00
12 changed files with 300 additions and 31 deletions

167
CHANGELOG.md Normal file
View File

@@ -0,0 +1,167 @@
# Changelog
## 1.11.0 (2016-05-23)
* Add the ability to configure task wait times
* Allow configuration by environment variables
* Update repository references to the new Pa11y organisation
* Add a changelog
## 1.10.0 (2016-05-18)
* Automatically focus on the filter input box when you select the filter
* Make a task URL clickable
* Tweak the documentation to make it more usable
* Add a resources section to the README
## 1.9.0 (2016-04-25)
* Show errors' context and selector on the results page
* Add context and selector to CSV output
* Fix lint errors
* Switch from Grunt to Make
* Add a `SIGINT` handler
* Update dependencies
* pa11y-webservice: ~1.6 to ~1.8
## 1.8.2 (2016-02-10)
* Update the license in the footer
## 1.8.1 (2016-02-10)
* Update repository references to springernature
## 1.8.0 (2016-02-04)
* Make the graph more accessible to color-blind users
* Fix lint errors
## 1.7.0 (2016-01-29)
* Hide the date list from individual result pages
* Make the date selector properly keyboard accessible
* Change the options button into a more accessible list
* Make the errors/warnings/notices lists keyboard accessible
## 1.6.1 (2016-01-26)
* Add keyboard access for filters
* Fix lint errors
## 1.6.0 (2015-08-20)
* Hide all graph data except for errors by default
## 1.5.0 (2015-07-06)
* Add the ability to use HTTP basic auth with task URLs
* Update dependencies
* pa11y-webservice: ~1.5 to ~1.6
## 1.4.0 (2015-07-02)
* Add the ability to set a per-task timeout
## 1.3.2 (2015-01-17)
* Update dependencies
* pa11y-webservice: ~1.3 to ~1.4
## 1.3.1 (2014-03-05)
* Fix the URL filter position when in demo mode
## 1.3.0 (2014-03-04)
* Add filtering of tasks on the home page
* Add the ability to ignore certain rules
* Add the ability to ignore a rule from the result page
* Tweak the display of task cards
## 1.2.3 (2014-01-13)
* Fix CSV export for the OS X version of Excel
## 1.2.2 (2014-01-09)
* Fix spacing issues when the graph is not visible
* Add notes on publishing a release
## 1.2.1 (2014-01-08)
* Fix dropdown positioning in Internet Explorer 7 and 8
## 1.2.0 (2013-12-12)
* Add HTML Codesniffer links on the results page
* Display the ignore rules for results on the results page
* Link the breadcrumbs on task sub-pages
* Fix an issue with saving empty ignore rules
* Cache-bust the CSS and JavaScript
* Add the ability to edit tasks
* Fix lint errors
* Tweaks to the display of the graphs
* Update dependencies
* pa11y-webservice: ~1.1 to ~1.2
* pa11y-webservice-client-node: ~1.0 to ~1.1
## 1.1.0 (2013-11-22)
* Add a functional test suite
* Allow the webservice to run automatically
* Documentation improvements
* Add a Travis config
* Fix lint errors
## 1.0.0 (2013-11-19)
* Initial stable release
* Add the ability to set a site-wide message
* Add a demo mode for demo/public-facing sites
* Disable search engine indexing by default
* Tweak the task header at smaller screen sizes
* Make checkboxes on the graph WCAG2AA compliant
* Make checkbox inputs and labels WCAG2AA compliant on new URL page
* Colour changes to ensure there are no contrast issues
* Make the copy more consistent
* Update screenshots
* Update dependencies
* pa11y-webservice-client-node: 1.0.0-beta.7 to ~1.0
## 1.0.0-beta.3 pre-release (2013-11-12)
* Fix lint errors
* Add descriptive labels to tasks
* Add a name field to "New URL" form
* Add a WCAG 2.0 link to the footer
* Tweak the layout at smaller screen sizes
* Notify users when there are no ignored rules
* Fix the expires headers for front end assets
* Move from Make to Grunt
* Compress static files
* Minify the site JavaScript
* Compile LESS files with grunt
* Add a watch task to recompile assets on change
* Commit compiled front-end code to the repo
* Add development instructions
* Update screenshots
* Update dependencies
* pa11y-webservice-client-node: 1.0.0-beta.4 to 1.0.0-beta.7
## 1.0.0-beta.2 pre-release (2013-10-04)
* Add screenshots to the README
* Fix margins
* Add bower package management
* Stop the graph from appearing if there's only one result
* Add the ability to run tasks ad-hoc
* Add more useful information to the footer
* General copy edits
* Update dependencies
* pa11y-webservice-client-node: 1.0.0-beta.3 to 1.0.0-beta.4
## 1.0.0-beta.1 pre-release (2013-09-27)
* Initial release

View File

@@ -3,9 +3,16 @@ pa11y-dashboard
pa11y-dashboard is a web interface to the [pa11y][pa11y] accessibility reporter; allowing you to focus on *fixing* issues rather than hunting them down.
**Current Version:** *1.10.0*
**Build Status:** [![Build Status][travis-img]][travis]
**Node Version Support:** *0.10*
![Version][shield-version]
[![Node.js version support][shield-node]][info-node]
[![Build status][shield-build]][info-build]
[![GPL-3.0 licensed][shield-license]][info-license]
---
✨ 🔜 ✨ The Pa11y team is very excited to announce plans for the successor to pa11y-dashboard and pa11y-webservice, codename "Sidekick". Help us define the features that you want to see by visiting the [proposal][sidekick-proposal]. ✨
---
![dashboard](https://f.cloud.github.com/assets/1225142/1549567/f0361e72-4de8-11e3-8d14-3fe6900cc15d.jpg)
@@ -19,9 +26,21 @@ pa11y-dashboard requires [Node.js][node] 0.10+ and [PhantomJS][phantom]. See the
You'll also need to have [MongoDB][mongo] installed and running. See the [MongoDB install guide][mongo-install] for more information on this.
You'll then need to clone this repo locally and install dependencies with `npm install`.
You'll then need to clone this repo locally and install dependencies with `npm install`. Now you need to add some configuration before you can run the application. We can do this in two ways:
Once you have a local clone, you'll need to copy some sample configuration files in order to run the application. From within the repo, run the following commands:
### Option 1: Using Environment Variables
Each configuration can be set with an environment variable rather than a config file. For example to run the application on port `8080` you can use the following:
```sh
PORT=8080 node index.js
```
The [available configurations are documented here](#configurations).
### Option 2: Using Config Files
You'll need to copy and modify different config files depending on your environment (set with `NODE_ENV`):
```sh
cp config/development.sample.json config/development.json
@@ -29,17 +48,15 @@ cp config/production.sample.json config/production.json
cp config/test.sample.json config/test.json
```
Each of these files defines configurations for a different environment. If you're just running the application locally, then you should be OK with just development configurations. The [available configurations are documented here](#configurations).
Each of these files defines configurations for a different environment. If you're just running the application locally, then you should be OK with just development and test configurations. The [available configurations are documented here](#configurations).
Now that you've got your application configured, make sure you have a server running with the `mongod` command in another terminal window. You can then run in each mode with the following commands:
Now that you've got your application configured, make sure you have a MongoDB server running with the `mongod` command in another terminal window. You can run in each mode by changing the `NODE_ENV` environment variable:
```sh
NODE_ENV=production node index.js # Run in production
NODE_ENV=development node index.js # Run in development
NODE_ENV=test node index.js # Run in test
NODE_ENV=development node index.js
```
Check the [development instructions](#development) for more information about running locally (and restarting automatically when files change).
See [development instructions](#development) for more information about running locally (and restarting automatically when files change).
Configurations
@@ -48,19 +65,19 @@ Configurations
The boot configurations for pa11y-dashboard are as follows. Look at the sample JSON files in the repo for example usage.
### port
*(number)* The port to run the application on.
*(number)* The port to run the application on. Set via a config file or the `PORT` environment variable.
### noindex
*(boolean)* If set to `true` (default), the dashboard will not be indexed by search engines. Set to `false` to allow indexing.
*(boolean)* If set to `true` (default), the dashboard will not be indexed by search engines. Set to `false` to allow indexing. Set via a config file or the `NOINDEX` environment variable.
### readonly
*(boolean)* If set to `true`, users will not be able to add, delete or run URLs (defaults to `false`).
*(boolean)* If set to `true`, users will not be able to add, delete or run URLs (defaults to `false`). Set via a config file or the `READONLY` environment variable.
### siteMessage
*(string)* A message to display prominently on the site home page. Defaults to `null`.
### webservice
This can either be an object containing [pa11y-webservice configurations][pa11y-webservice-config], or a string which is the base URL of a [pa11y-webservice][pa11y-webservice] instance you are running separately.
This can either be an object containing [pa11y-webservice configurations][pa11y-webservice-config], or a string which is the base URL of a [pa11y-webservice][pa11y-webservice] instance you are running separately. If using environment variables, prefix the webservice vars with `WEBSERVICE_`.
Development
@@ -97,12 +114,11 @@ Useful Resources
* [Setting up An Accessibility Dashboard from Scratch with Pa11y on DigitialOcean][resource-una-k]
License
-------
[Copyright 2016 Springer Nature](LICENSE.txt).
pa11y-dashboard is licensed under the [GNU General Public License 3.0][gpl].
pa11y-dashboard is licensed under the [GNU General Public License 3.0][info-license].
Copyright © 20132016, Springer Nature
@@ -110,9 +126,18 @@ pa11y-dashboard is licensed under the [GNU General Public License 3.0][gpl].
[mongo]: http://www.mongodb.org/
[mongo-install]: https://docs.mongodb.org/manual/installation/
[node]: http://nodejs.org/
[pa11y]: https://github.com/springernature/pa11y
[pa11y-webservice-config]: https://github.com/springernature/pa11y-webservice#configurations
[pa11y]: https://github.com/pa11y/pa11y
[pa11y-webservice-config]: https://github.com/pa11y/pa11y-webservice#configurations
[phantom]: http://phantomjs.org/
[resource-una-k]: https://una.im/pa11y-dash/
[travis]: https://travis-ci.org/springernature/pa11y-dashboard
[travis-img]: https://travis-ci.org/springernature/pa11y-dashboard.png?branch=master
[sidekick-proposal]: https://github.com/pa11y/sidekick/blob/master/PROPOSAL.md
[travis]: https://travis-ci.org/pa11y/pa11y-dashboard
[travis-img]: https://travis-ci.org/pa11y/pa11y-dashboard.png?branch=master
[info-license]: LICENSE
[info-node]: package.json
[info-build]: https://travis-ci.org/pa11y/pa11y-dashboard
[shield-license]: https://img.shields.io/badge/license-GPL%203.0-blue.svg
[shield-node]: https://img.shields.io/badge/node.js%20support-0.10-brightgreen.svg
[shield-version]: https://img.shields.io/badge/version-1.11.0-blue.svg
[shield-build]: https://img.shields.io/travis/pa11y/pa11y-dashboard/master.svg

41
config.js Normal file
View File

@@ -0,0 +1,41 @@
// This file is part of pa11y-dashboard.
//
// pa11y-dashboard is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// pa11y-dashboard is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with pa11y-dashboard. If not, see <http://www.gnu.org/licenses/>.
'use strict';
var fs = require('fs');
var jsonPath = './config/' + (process.env.NODE_ENV || 'development') + '.json';
if (fs.existsSync(jsonPath)) {
module.exports = require(jsonPath);
} else {
module.exports = {
port: Number(env('PORT', '4000')),
noindex: env('NOINDEX', 'true') === 'true',
readonly: env('READONLY', 'false') === 'true',
webservice: env('WEBSERVICE_URL', {
database: env('WEBSERVICE_DATABASE', 'mongodb://localhost/pa11y-webservice'),
host: env('WEBSERVICE_HOST', '0.0.0.0'),
port: Number(env('WEBSERVICE_PORT', '3000')),
cron: env('WEBSERVICE_CRON', false)
})
};
}
function env(name, defaultValue) {
var value = process.env[name];
return typeof value === 'string' ? value : defaultValue;
}

View File

@@ -16,7 +16,7 @@
'use strict';
var chalk = require('chalk');
var config = require('./config/' + (process.env.NODE_ENV || 'development') + '.json');
var config = require('./config');
process.on('SIGINT', function() {
console.log('\nGracefully shutting down from SIGINT (Ctrl-C)');

View File

@@ -1,6 +1,6 @@
{
"name": "pa11y-dashboard",
"version": "1.10.0",
"version": "1.11.0",
"private": true,
"description": "pa11y-dashboard is a visual web interface to the pa11y accessibility reporter",
@@ -12,10 +12,10 @@
"repository": {
"type": "git",
"url": "https://github.com/springernature/pa11y-dashboard.git"
"url": "https://github.com/pa11y/pa11y-dashboard.git"
},
"homepage": "https://github.com/springernature/pa11y-dashboard",
"bugs": "https://github.com/springernature/pa11y-dashboard/issues",
"homepage": "https://github.com/pa11y/pa11y-dashboard",
"bugs": "https://github.com/pa11y/pa11y-dashboard/issues",
"engines": {
"node": ">=0.10"
@@ -25,7 +25,7 @@
"express": "~3.4",
"express-hbs": "~0.2",
"moment": "~2.2",
"pa11y-webservice": "~1.8",
"pa11y-webservice": "~1.10",
"pa11y-webservice-client-node": "~1.1",
"underscore": "~1.5"
},

View File

@@ -42,6 +42,7 @@ function route(app) {
standard: req.body.standard,
ignore: req.body.ignore || [],
timeout: req.body.timeout,
wait: req.body.wait,
username: req.body.username,
password: req.body.password
};

View File

@@ -60,6 +60,7 @@ function route(app) {
task.name = req.body.name;
task.ignore = req.body.ignore;
task.timeout = req.body.timeout;
task.wait = req.body.wait;
task.username = req.body.username;
task.password = req.body.password;
var standards = getStandards().map(function(standard) {

View File

@@ -62,6 +62,13 @@ describe('GET /new', function() {
assert.strictEqual(field.getAttribute('value'), '');
});
it('should have a "wait" field', function() {
var field = this.form.querySelectorAll('input[name=wait]')[0];
assert.isDefined(field);
assert.strictEqual(field.getAttribute('type'), 'text');
assert.strictEqual(field.getAttribute('value'), '');
});
it('should have a "username" field', function() {
var field = this.form.querySelectorAll('input[name=username]')[0];
assert.isDefined(field);

View File

@@ -63,6 +63,13 @@ describe('GET /<task-id>/edit', function() {
assert.isDefined(field.getAttribute('disabled'));
});
it('should have a "wait" field', function() {
var field = this.form.querySelectorAll('input[name=wait]')[0];
assert.isDefined(field);
assert.strictEqual(field.getAttribute('type'), 'text');
assert.strictEqual(field.getAttribute('value'), '0');
});
it('should have a disabled "standard" field', function() {
var field = this.form.querySelectorAll('select[name=standard]')[0];
assert.isDefined(field);

View File

@@ -74,6 +74,16 @@ along with pa11y-dashboard. If not, see <http://www.gnu.org/licenses/>.
</div>
</div>
<div class="form-group clearfix">
<div class="row">
<div class="col-md-4 col-sm-4 col-xs-6">
<label class="control-label" for="new-task-wait">Wait (milliseconds)</label>
<input class="form-control" id="new-task-wait" type="text" placeholder="E.g. 3000" name="wait" value="{{task.wait}}"/>
<em>(Note: default wait time is 0ms)</em>
</div>
</div>
</div>
<div class="form-group clearfix">
<div class="row">
<div class="col-md-4 col-sm-4 col-xs-6">
@@ -92,7 +102,7 @@ along with pa11y-dashboard. If not, see <http://www.gnu.org/licenses/>.
</div>
</div>
<p class="control-label"><b>Ignore these rules</b> <a target="_blank" href="https://github.com/springernature/pa11y/wiki/HTML-CodeSniffer-Rules">(full list of rules here)</a></p>
<p class="control-label"><b>Ignore these rules</b> <a target="_blank" href="https://github.com/pa11y/pa11y/wiki/HTML-CodeSniffer-Rules">(full list of rules here)</a></p>
<div class="standards-lists">
{{#standards}}

View File

@@ -86,6 +86,16 @@ along with pa11y-dashboard. If not, see <http://www.gnu.org/licenses/>.
</div>
</div>
<div class="form-group clearfix">
<div class="row">
<div class="col-md-4 col-sm-4 col-xs-6">
<label class="control-label" for="new-task-wait">Wait (milliseconds)</label>
<input class="form-control" id="new-task-wait" type="text" placeholder="E.g. 3000" name="wait" value="{{task.wait}}"/>
<em>(Note: default wait time is 0ms)</em>
</div>
</div>
</div>
<div class="form-group clearfix">
<div class="row">
<div class="col-md-4 col-sm-4 col-xs-6">
@@ -104,7 +114,7 @@ along with pa11y-dashboard. If not, see <http://www.gnu.org/licenses/>.
</div>
</div>
<p class="control-label"><b>Ignore these rules</b> <a target="_blank" href="https://github.com/springernature/pa11y/wiki/HTML-CodeSniffer-Rules">(full list of rules here)</a></p>
<p class="control-label"><b>Ignore these rules</b> <a target="_blank" href="https://github.com/pa11y/pa11y/wiki/HTML-CodeSniffer-Rules">(full list of rules here)</a></p>
<div class="standards-lists">
{{#standards}}