mirror of
https://github.com/pa11y/pa11y-dashboard.git
synced 2025-09-25 14:51:28 +00:00
Compare commits
26 Commits
2.4.2
...
results-la
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6090a126d5 | ||
![]() |
bb0491858b | ||
![]() |
4c0bd924ab | ||
![]() |
6d4b8c9676 | ||
![]() |
0654790289 | ||
![]() |
1d931671ff | ||
![]() |
9d95c79625 | ||
![]() |
b8029c56f7 | ||
![]() |
9a23b79d89 | ||
![]() |
b7d45c0913 | ||
![]() |
9ae73dc446 | ||
![]() |
ff8142b4e4 | ||
![]() |
2f7e8ae451 | ||
![]() |
a2cc2c7942 | ||
![]() |
59f657b422 | ||
![]() |
ea3183791c | ||
![]() |
102a237d2e | ||
![]() |
7c77467dcf | ||
![]() |
2de7e59f44 | ||
![]() |
c7bd2a53b6 | ||
![]() |
350f94a0d4 | ||
![]() |
a5ce220509 | ||
![]() |
ce07206899 | ||
![]() |
1609c8d667 | ||
![]() |
c1dcbf4436 | ||
![]() |
ef769d95e1 |
@@ -1,3 +1,3 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
module.exports = require('pa11y-lint-config/eslint/es6');
|
module.exports = require('pa11y-lint-config/eslint/es2017');
|
||||||
|
50
.github/workflows/tests.yml
vendored
Normal file
50
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# This workflow will do a clean install of node dependencies, build the source code and run tests.
|
||||||
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
||||||
|
|
||||||
|
name: Build and lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: # Run actions when code is committed to these branches
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches: # Run actions when a PR is pushed based on one of these branches
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
checkout_and_test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- node-version: 8.x
|
||||||
|
lint: true # Linter is run only once to shorten the total build time
|
||||||
|
- node-version: 10.x
|
||||||
|
- node-version: 12.x
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code from ${{ github.repository }}
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup node
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: MongoDB in GitHub Actions
|
||||||
|
uses: supercharge/mongodb-github-action@1.3.0
|
||||||
|
with:
|
||||||
|
mongodb-version: 3.4
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm i
|
||||||
|
- name: Run linter
|
||||||
|
if: ${{ matrix.lint }}
|
||||||
|
run: make lint
|
||||||
|
- name: Create test config
|
||||||
|
run: cp config/test.sample.json config/test.json
|
||||||
|
- name: Start test app
|
||||||
|
run: NODE_ENV=test node index.js &
|
||||||
|
- name: Wait / Sleep
|
||||||
|
uses: jakejarvis/wait-action@v0.1.0
|
||||||
|
with:
|
||||||
|
time: '10s'
|
||||||
|
- name: Run tests
|
||||||
|
run: make ci
|
24
.travis.yml
24
.travis.yml
@@ -1,24 +0,0 @@
|
|||||||
|
|
||||||
# Language/versions
|
|
||||||
language: node_js
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- node_js: '4'
|
|
||||||
- node_js: '5'
|
|
||||||
- node_js: '6'
|
|
||||||
|
|
||||||
# Build only master (and pull-requests)
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
|
|
||||||
# Services setup
|
|
||||||
services:
|
|
||||||
- mongodb
|
|
||||||
|
|
||||||
# Build script
|
|
||||||
before_script:
|
|
||||||
- cp config/test.sample.json config/test.json
|
|
||||||
- NODE_ENV=test node index.js &
|
|
||||||
- sleep 5 # give server time to start
|
|
||||||
script: 'make ci'
|
|
334
CHANGELOG.md
334
CHANGELOG.md
@@ -1,266 +1,292 @@
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 3.3.0 (2021-04-27)
|
||||||
|
|
||||||
|
* Add new list view to the dashboard (thanks @sangitamane)
|
||||||
|
* Upgrade express-hbs to the latest version in order to address several potential vulnerabilities
|
||||||
|
* Fixes a MongoDB "ObjectID generation failed" error.
|
||||||
|
* Update pa11y-webservice to version 3.2.1 and pa11y to version 5.3.1
|
||||||
|
|
||||||
|
## 3.2.0 (2020-10-05)
|
||||||
|
|
||||||
|
* Update pa11y to version 5.3.0, which means better compatibility with sites using AMD modules
|
||||||
|
* Update pa11y-webservice to version 3.2.0, which adds the ability to configure the number of workers running pa11y tests
|
||||||
|
* Update several dependencies
|
||||||
|
* Replace chalk with kleur
|
||||||
|
|
||||||
|
## 3.1.0 (2019-09-27)
|
||||||
|
|
||||||
|
* Display the task ID before each line of output, so it's clear to which task a line of output belongs to when they run in parallel.
|
||||||
|
* Bump pa11y-webservice version, which fixes an issue with some pages failing to run.
|
||||||
|
* Fix incorrect routes passing an invalid value to Mongo's ObjectID.
|
||||||
|
|
||||||
|
## 3.0.0 (2019-07-16)
|
||||||
|
|
||||||
|
* Update pa11y to v5, which replaces Phantomjs with Headless Chrome
|
||||||
|
* Update dependencies
|
||||||
|
* Several bug fixes and documentation updates
|
||||||
|
* See the [migration guide](https://github.com/pa11y/pa11y-dashboard/blob/master/MIGRATION.md#migrating-from-20-to-30) for details of the breaking changes in this release
|
||||||
|
|
||||||
## 2.4.2 (2018-06-21)
|
## 2.4.2 (2018-06-21)
|
||||||
|
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* body-parser: ~1.17.1 to ^1.18.3
|
* body-parser: ~1.17.1 to ^1.18.3
|
||||||
* compression: ~1.6 to ^1.7.2
|
* compression: ~1.6 to ^1.7.2
|
||||||
* express: ~4.15.2 to ^4.16.3
|
* express: ~4.15.2 to ^4.16.3
|
||||||
* moment: ~2.15.2 to ^2.22.2
|
* moment: ~2.15.2 to ^2.22.2
|
||||||
|
|
||||||
## 2.4.1 (2017-11-28)
|
## 2.4.1 (2017-11-28)
|
||||||
|
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ^2.3.0 to ^2.3.1
|
* pa11y-webservice: ^2.3.0 to ^2.3.1
|
||||||
|
|
||||||
## 2.4.0 (2017-11-23)
|
## 2.4.0 (2017-11-23)
|
||||||
|
|
||||||
* Add the ability to export the results graph as a PNG, see #197 for more information
|
* Add the ability to export the results graph as a PNG, see #197 for more information
|
||||||
|
|
||||||
## 2.3.0 (2017-10-31)
|
## 2.3.0 (2017-10-31)
|
||||||
|
|
||||||
* Large overhaul of the results page, see #196 for more information
|
* Large overhaul of the results page, see #196 for more information
|
||||||
|
|
||||||
## 2.2.2 (2017-03-23)
|
## 2.2.2 (2017-03-23)
|
||||||
|
|
||||||
* Upgrades `body-parser` and `express`. Fixes a vulnerability in `qs`: https://snyk.io/vuln/npm:qs:20170213
|
* Upgrades `body-parser` and `express`. Fixes a vulnerability in `qs`: https://snyk.io/vuln/npm:qs:20170213
|
||||||
|
|
||||||
## 2.2.1 (2017-02-07)
|
## 2.2.1 (2017-02-07)
|
||||||
|
|
||||||
* Fix task editing when no actions are specified
|
* Fix task editing when no actions are specified
|
||||||
|
|
||||||
## 2.2.0 (2017-01-27)
|
## 2.2.0 (2017-01-27)
|
||||||
|
|
||||||
* Add support for Pa11y actions
|
* Add support for Pa11y actions
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ~2.1.2 to ^2.3.0
|
* pa11y-webservice: ~2.1.2 to ^2.3.0
|
||||||
|
|
||||||
## 2.1.2 (2016-12-12)
|
## 2.1.2 (2016-12-12)
|
||||||
|
|
||||||
* Hide the "add" button in readonly mode
|
* Hide the "add" button in readonly mode
|
||||||
* Add a contributing guide
|
* Add a contributing guide
|
||||||
|
|
||||||
## 2.1.1 (2016-11-20)
|
## 2.1.1 (2016-11-20)
|
||||||
|
|
||||||
* Use arrows instead of plus and minus for collapsibles/expanders
|
* Use arrows instead of plus and minus for collapsibles/expanders
|
||||||
* Supply more detailed 500 messages
|
* Supply more detailed 500 messages
|
||||||
|
|
||||||
## 2.1.0 (2016-11-07)
|
## 2.1.0 (2016-11-07)
|
||||||
|
|
||||||
* Allow for configuration files to be JavaScript rather than JSON
|
* Allow for configuration files to be JavaScript rather than JSON
|
||||||
* Allow setting of HTTP headers for task runs
|
* Allow setting of HTTP headers for task runs
|
||||||
* Allow hiding/ignoring elements for task runs
|
* Allow hiding/ignoring elements for task runs
|
||||||
* Update dependencies and devDependencies
|
* Update dependencies and devDependencies
|
||||||
* pa11y-webservice: ~2.0.1 to ^2.1.2
|
* pa11y-webservice: ~2.0.1 to ^2.1.2
|
||||||
* mocha: ^3 to ^2 (temporary – tests weren't running)
|
* mocha: ^3 to ^2 (temporary – tests weren't running)
|
||||||
|
|
||||||
## 2.0.1 (2016-09-12)
|
## 2.0.1 (2016-09-12)
|
||||||
|
|
||||||
* Update dependencies and devDependencies
|
* Update dependencies and devDependencies
|
||||||
* express: ~4.13 to ~4.14
|
* express: ~4.13 to ~4.14
|
||||||
* pa11y-webservice: ~2.0 to ^2.0.1
|
* pa11y-webservice: ~2.0 to ^2.0.1
|
||||||
* request: ^2 to ^2.74
|
* request: ^2 to ^2.74
|
||||||
* mocha: ^2 to ^3
|
* mocha: ^2 to ^3
|
||||||
* pa11y-webservice-client-node: ~1.2 to ^1.2.1
|
* pa11y-webservice-client-node: ~1.2 to ^1.2.1
|
||||||
This fixes the following vulnerabilities:
|
This fixes the following vulnerabilities:
|
||||||
* https://nodesecurity.io/advisories/45
|
* https://nodesecurity.io/advisories/45
|
||||||
* https://nodesecurity.io/advisories/63
|
* https://nodesecurity.io/advisories/63
|
||||||
* https://nodesecurity.io/advisories/65
|
* https://nodesecurity.io/advisories/65
|
||||||
* https://nodesecurity.io/advisories/106
|
* https://nodesecurity.io/advisories/106
|
||||||
* https://nodesecurity.io/advisories/121
|
* https://nodesecurity.io/advisories/121
|
||||||
* https://nodesecurity.io/advisories/130
|
* https://nodesecurity.io/advisories/130
|
||||||
|
|
||||||
## 2.0.0 (2016-06-05)
|
## 2.0.0 (2016-06-05)
|
||||||
|
|
||||||
* Drop Node.js 0.10–0.12 support
|
* Drop Node.js 0.10–0.12 support
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ~1.11 to ~2.0
|
* pa11y-webservice: ~1.11 to ~2.0
|
||||||
* See the [migration guide](https://github.com/pa11y/dashboard/blob/master/MIGRATION.md#migrating-from-10-to-20) for details
|
* See the [migration guide](https://github.com/pa11y/dashboard/blob/master/MIGRATION.md#migrating-from-10-to-20) for details
|
||||||
|
|
||||||
## 1.12.1 (2016-06-05)
|
## 1.12.1 (2016-06-05)
|
||||||
|
|
||||||
* Update references/links after a repo rename
|
* Update references/links after a repo rename
|
||||||
|
|
||||||
## 1.12.0 (2016-05-26)
|
## 1.12.0 (2016-05-26)
|
||||||
|
|
||||||
* Update Node.js version support to 0.10–6.0
|
* Update Node.js version support to 0.10–6.0
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* body-parser: added at ~1.15
|
* body-parser: added at ~1.15
|
||||||
* chalk: ~0.2 to ~1.1
|
* chalk: ~0.2 to ~1.1
|
||||||
* compression: added at ~1.6
|
* compression: added at ~1.6
|
||||||
* express: ~3.4 to ~4.13
|
* express: ~3.4 to ~4.13
|
||||||
* express-hbs: ~0.2 to ~1.0
|
* express-hbs: ~0.2 to ~1.0
|
||||||
* moment: ~2.2 to ~2.13
|
* moment: ~2.2 to ~2.13
|
||||||
* pa11y-webservice: ~1.10 to ~1.11
|
* pa11y-webservice: ~1.10 to ~1.11
|
||||||
* pa11y-webservice-client-node: ~1.1 to ~1.2
|
* pa11y-webservice-client-node: ~1.1 to ~1.2
|
||||||
* bower: ~1.2 to ~1.7
|
* bower: ~1.2 to ~1.7
|
||||||
* cheerio: added at ~0.20
|
* cheerio: added at ~0.20
|
||||||
* jsdom: removed
|
* jsdom: removed
|
||||||
* request: ~2.27 to ^2
|
* request: ~2.27 to ^2
|
||||||
* uglify-js: ~2.4 to ~2.6
|
* uglify-js: ~2.4 to ~2.6
|
||||||
|
|
||||||
## 1.11.0 (2016-05-23)
|
## 1.11.0 (2016-05-23)
|
||||||
|
|
||||||
* Add the ability to configure task wait times
|
* Add the ability to configure task wait times
|
||||||
* Allow configuration by environment variables
|
* Allow configuration by environment variables
|
||||||
* Update repository references to the new Pa11y organisation
|
* Update repository references to the new Pa11y organisation
|
||||||
* Add a changelog
|
* Add a changelog
|
||||||
|
|
||||||
## 1.10.0 (2016-05-18)
|
## 1.10.0 (2016-05-18)
|
||||||
|
|
||||||
* Automatically focus on the filter input box when you select the filter
|
* Automatically focus on the filter input box when you select the filter
|
||||||
* Make a task URL clickable
|
* Make a task URL clickable
|
||||||
* Tweak the documentation to make it more usable
|
* Tweak the documentation to make it more usable
|
||||||
* Add a resources section to the README
|
* Add a resources section to the README
|
||||||
|
|
||||||
## 1.9.0 (2016-04-25)
|
## 1.9.0 (2016-04-25)
|
||||||
|
|
||||||
* Show errors' context and selector on the results page
|
* Show errors' context and selector on the results page
|
||||||
* Add context and selector to CSV output
|
* Add context and selector to CSV output
|
||||||
* Fix lint errors
|
* Fix lint errors
|
||||||
* Switch from Grunt to Make
|
* Switch from Grunt to Make
|
||||||
* Add a `SIGINT` handler
|
* Add a `SIGINT` handler
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ~1.6 to ~1.8
|
* pa11y-webservice: ~1.6 to ~1.8
|
||||||
|
|
||||||
## 1.8.2 (2016-02-10)
|
## 1.8.2 (2016-02-10)
|
||||||
|
|
||||||
* Update the license in the footer
|
* Update the license in the footer
|
||||||
|
|
||||||
## 1.8.1 (2016-02-10)
|
## 1.8.1 (2016-02-10)
|
||||||
|
|
||||||
* Update repository references to springernature
|
* Update repository references to springernature
|
||||||
|
|
||||||
## 1.8.0 (2016-02-04)
|
## 1.8.0 (2016-02-04)
|
||||||
|
|
||||||
* Make the graph more accessible to color-blind users
|
* Make the graph more accessible to color-blind users
|
||||||
* Fix lint errors
|
* Fix lint errors
|
||||||
|
|
||||||
## 1.7.0 (2016-01-29)
|
## 1.7.0 (2016-01-29)
|
||||||
|
|
||||||
* Hide the date list from individual result pages
|
* Hide the date list from individual result pages
|
||||||
* Make the date selector properly keyboard accessible
|
* Make the date selector properly keyboard accessible
|
||||||
* Change the options button into a more accessible list
|
* Change the options button into a more accessible list
|
||||||
* Make the errors/warnings/notices lists keyboard accessible
|
* Make the errors/warnings/notices lists keyboard accessible
|
||||||
|
|
||||||
## 1.6.1 (2016-01-26)
|
## 1.6.1 (2016-01-26)
|
||||||
|
|
||||||
* Add keyboard access for filters
|
* Add keyboard access for filters
|
||||||
* Fix lint errors
|
* Fix lint errors
|
||||||
|
|
||||||
## 1.6.0 (2015-08-20)
|
## 1.6.0 (2015-08-20)
|
||||||
|
|
||||||
* Hide all graph data except for errors by default
|
* Hide all graph data except for errors by default
|
||||||
|
|
||||||
## 1.5.0 (2015-07-06)
|
## 1.5.0 (2015-07-06)
|
||||||
|
|
||||||
* Add the ability to use HTTP basic auth with task URLs
|
* Add the ability to use HTTP basic auth with task URLs
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ~1.5 to ~1.6
|
* pa11y-webservice: ~1.5 to ~1.6
|
||||||
|
|
||||||
## 1.4.0 (2015-07-02)
|
## 1.4.0 (2015-07-02)
|
||||||
|
|
||||||
* Add the ability to set a per-task timeout
|
* Add the ability to set a per-task timeout
|
||||||
|
|
||||||
## 1.3.2 (2015-01-17)
|
## 1.3.2 (2015-01-17)
|
||||||
|
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ~1.3 to ~1.4
|
* pa11y-webservice: ~1.3 to ~1.4
|
||||||
|
|
||||||
## 1.3.1 (2014-03-05)
|
## 1.3.1 (2014-03-05)
|
||||||
|
|
||||||
* Fix the URL filter position when in demo mode
|
* Fix the URL filter position when in demo mode
|
||||||
|
|
||||||
## 1.3.0 (2014-03-04)
|
## 1.3.0 (2014-03-04)
|
||||||
|
|
||||||
* Add filtering of tasks on the home page
|
* Add filtering of tasks on the home page
|
||||||
* Add the ability to ignore certain rules
|
* Add the ability to ignore certain rules
|
||||||
* Add the ability to ignore a rule from the result page
|
* Add the ability to ignore a rule from the result page
|
||||||
* Tweak the display of task cards
|
* Tweak the display of task cards
|
||||||
|
|
||||||
## 1.2.3 (2014-01-13)
|
## 1.2.3 (2014-01-13)
|
||||||
|
|
||||||
* Fix CSV export for the OS X version of Excel
|
* Fix CSV export for the OS X version of Excel
|
||||||
|
|
||||||
## 1.2.2 (2014-01-09)
|
## 1.2.2 (2014-01-09)
|
||||||
|
|
||||||
* Fix spacing issues when the graph is not visible
|
* Fix spacing issues when the graph is not visible
|
||||||
* Add notes on publishing a release
|
* Add notes on publishing a release
|
||||||
|
|
||||||
## 1.2.1 (2014-01-08)
|
## 1.2.1 (2014-01-08)
|
||||||
|
|
||||||
* Fix dropdown positioning in Internet Explorer 7 and 8
|
* Fix dropdown positioning in Internet Explorer 7 and 8
|
||||||
|
|
||||||
## 1.2.0 (2013-12-12)
|
## 1.2.0 (2013-12-12)
|
||||||
|
|
||||||
* Add HTML Codesniffer links on the results page
|
* Add HTML Codesniffer links on the results page
|
||||||
* Display the ignore rules for results on the results page
|
* Display the ignore rules for results on the results page
|
||||||
* Link the breadcrumbs on task sub-pages
|
* Link the breadcrumbs on task sub-pages
|
||||||
* Fix an issue with saving empty ignore rules
|
* Fix an issue with saving empty ignore rules
|
||||||
* Cache-bust the CSS and JavaScript
|
* Cache-bust the CSS and JavaScript
|
||||||
* Add the ability to edit tasks
|
* Add the ability to edit tasks
|
||||||
* Fix lint errors
|
* Fix lint errors
|
||||||
* Tweaks to the display of the graphs
|
* Tweaks to the display of the graphs
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice: ~1.1 to ~1.2
|
* pa11y-webservice: ~1.1 to ~1.2
|
||||||
* pa11y-webservice-client-node: ~1.0 to ~1.1
|
* pa11y-webservice-client-node: ~1.0 to ~1.1
|
||||||
|
|
||||||
## 1.1.0 (2013-11-22)
|
## 1.1.0 (2013-11-22)
|
||||||
|
|
||||||
* Add a functional test suite
|
* Add a functional test suite
|
||||||
* Allow the webservice to run automatically
|
* Allow the webservice to run automatically
|
||||||
* Documentation improvements
|
* Documentation improvements
|
||||||
* Add a Travis config
|
* Add a Travis config
|
||||||
* Fix lint errors
|
* Fix lint errors
|
||||||
|
|
||||||
## 1.0.0 (2013-11-19)
|
## 1.0.0 (2013-11-19)
|
||||||
|
|
||||||
* Initial stable release
|
* Initial stable release
|
||||||
* Add the ability to set a site-wide message
|
* Add the ability to set a site-wide message
|
||||||
* Add a demo mode for demo/public-facing sites
|
* Add a demo mode for demo/public-facing sites
|
||||||
* Disable search engine indexing by default
|
* Disable search engine indexing by default
|
||||||
* Tweak the task header at smaller screen sizes
|
* Tweak the task header at smaller screen sizes
|
||||||
* Make checkboxes on the graph WCAG2AA compliant
|
* Make checkboxes on the graph WCAG2AA compliant
|
||||||
* Make checkbox inputs and labels WCAG2AA compliant on new URL page
|
* Make checkbox inputs and labels WCAG2AA compliant on new URL page
|
||||||
* Colour changes to ensure there are no contrast issues
|
* Colour changes to ensure there are no contrast issues
|
||||||
* Make the copy more consistent
|
* Make the copy more consistent
|
||||||
* Update screenshots
|
* Update screenshots
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice-client-node: 1.0.0-beta.7 to ~1.0
|
* pa11y-webservice-client-node: 1.0.0-beta.7 to ~1.0
|
||||||
|
|
||||||
## 1.0.0-beta.3 pre-release (2013-11-12)
|
## 1.0.0-beta.3 pre-release (2013-11-12)
|
||||||
|
|
||||||
* Fix lint errors
|
* Fix lint errors
|
||||||
* Add descriptive labels to tasks
|
* Add descriptive labels to tasks
|
||||||
* Add a name field to "New URL" form
|
* Add a name field to "New URL" form
|
||||||
* Add a WCAG 2.0 link to the footer
|
* Add a WCAG 2.0 link to the footer
|
||||||
* Tweak the layout at smaller screen sizes
|
* Tweak the layout at smaller screen sizes
|
||||||
* Notify users when there are no ignored rules
|
* Notify users when there are no ignored rules
|
||||||
* Fix the expires headers for front end assets
|
* Fix the expires headers for front end assets
|
||||||
* Move from Make to Grunt
|
* Move from Make to Grunt
|
||||||
* Compress static files
|
* Compress static files
|
||||||
* Minify the site JavaScript
|
* Minify the site JavaScript
|
||||||
* Compile LESS files with grunt
|
* Compile LESS files with grunt
|
||||||
* Add a watch task to recompile assets on change
|
* Add a watch task to recompile assets on change
|
||||||
* Commit compiled front-end code to the repo
|
* Commit compiled front-end code to the repo
|
||||||
* Add development instructions
|
* Add development instructions
|
||||||
* Update screenshots
|
* Update screenshots
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice-client-node: 1.0.0-beta.4 to 1.0.0-beta.7
|
* 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)
|
## 1.0.0-beta.2 pre-release (2013-10-04)
|
||||||
|
|
||||||
* Add screenshots to the README
|
* Add screenshots to the README
|
||||||
* Fix margins
|
* Fix margins
|
||||||
* Add bower package management
|
* Add bower package management
|
||||||
* Stop the graph from appearing if there's only one result
|
* Stop the graph from appearing if there's only one result
|
||||||
* Add the ability to run tasks ad-hoc
|
* Add the ability to run tasks ad-hoc
|
||||||
* Add more useful information to the footer
|
* Add more useful information to the footer
|
||||||
* General copy edits
|
* General copy edits
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* pa11y-webservice-client-node: 1.0.0-beta.3 to 1.0.0-beta.4
|
* 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)
|
## 1.0.0-beta.1 pre-release (2013-09-27)
|
||||||
|
|
||||||
* Initial release
|
* Initial release
|
||||||
|
27
MIGRATION.md
27
MIGRATION.md
@@ -1,18 +1,29 @@
|
|||||||
|
# Migration Guide
|
||||||
Migration Guide
|
|
||||||
===============
|
|
||||||
|
|
||||||
Pa11y Dashboard's API changes between major versions. This is a guide to help you make the switch when this happens.
|
Pa11y Dashboard's API changes between major versions. This is a guide to help you make the switch when this happens.
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
Table Of Contents
|
- [Migrating from 2.0 to 3.0](#migrating-from-20-to-30)
|
||||||
-----------------
|
|
||||||
|
|
||||||
- [Migrating from 1.0 to 2.0](#migrating-from-10-to-20)
|
- [Migrating from 1.0 to 2.0](#migrating-from-10-to-20)
|
||||||
|
|
||||||
|
## Migrating from 2.0 to 3.0
|
||||||
|
|
||||||
Migrating from 1.0 to 2.0
|
### PhantomJS to Headless Chrome
|
||||||
-------------------------
|
|
||||||
|
Pa11y Dashboard 3 uses version 5 of Pa11y, which replaces PhantomJS with [Headless Chrome](https://developers.google.com/web/updates/2017/04/headless-chrome). This allows us to use more modern JavaScript APIs and make Pa11y testing more stable.
|
||||||
|
|
||||||
|
As a result of this change, [Pa11y Dashboard's requirements](../README.md#requirements) have changed, and you may need to install additional dependencies required by Chrome before being able to use this version.
|
||||||
|
|
||||||
|
### Node.js Support
|
||||||
|
|
||||||
|
Pa11y Webservice 3 requires Node.js version 8 or greater. Versions 4 and 6 are not supported any more.
|
||||||
|
|
||||||
|
### Miscellaneous
|
||||||
|
|
||||||
|
The default viewport dimensions for Pa11y have been changed from `1024x768` to `1280x1024`. This could make pa11y report a different number of errors if different content appears on the page based on its width, so results obtained with v2 and v3 may not be comparable.
|
||||||
|
|
||||||
|
## Migrating from 1.0 to 2.0
|
||||||
|
|
||||||
### Node.js Support
|
### Node.js Support
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
NPM_BIN = ./node_modules/.bin
|
NPM_BIN = ./node_modules/.bin
|
||||||
export PATH := $(NPM_BIN):$(PATH)
|
export PATH := $(NPM_BIN):$(PATH)
|
||||||
export EXPECTED_COVERAGE := 90
|
export EXPECTED_COVERAGE := 90
|
||||||
export INTEGRATION_TIMEOUT := 5000
|
export INTEGRATION_TIMEOUT := 10000
|
||||||
export INTEGRATION_SLOW := 4000
|
export INTEGRATION_SLOW := 4000
|
||||||
|
|
||||||
|
|
||||||
|
137
README.md
137
README.md
@@ -1,5 +1,4 @@
|
|||||||
Pa11y Dashboard
|
# 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.
|
Pa11y Dashboard is a web interface to the [Pa11y][pa11y] accessibility reporter; allowing you to focus on *fixing* issues rather than hunting them down.
|
||||||
|
|
||||||
@@ -8,29 +7,71 @@ Pa11y Dashboard is a web interface to the [Pa11y][pa11y] accessibility reporter;
|
|||||||
[![Build status][shield-build]][info-build]
|
[![Build status][shield-build]][info-build]
|
||||||
[![GPL-3.0 licensed][shield-license]][info-license]
|
[![GPL-3.0 licensed][shield-license]][info-license]
|
||||||
|
|
||||||
---
|

|
||||||
|

|
||||||
## Latest news from Pa11y
|
|
||||||
|
|
||||||
✨ 🔜 ✨ 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]. ✨
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||

|
Pa11y Dashboard is a [Node.js][node] application and requires a stable or LTS version of Node, currently version 8 or greater.
|
||||||

|
|
||||||
|
|
||||||
|
Pa11y Dashboard uses a [MongoDB][mongo] database to store the results of the tests. The database doesn't have to be in the same server or computer where Pa11y Dashboard is running from.
|
||||||
|
|
||||||
Setup
|
Pa11y Dashboard uses [puppeteer](https://www.npmjs.com/package/puppeteer) to create a headless instance of the Chromium browser in order to run the tests. On certain environments this may require additional dependencies to be installed. For example, in Debian/Ubuntu systems you may need to install the `libnss3` and `libgconf-2-4` libraries in order to be able to run tests on Pa11y Dashboard. Please refer to the documentation from your provider for details on how to do this.
|
||||||
-----
|
|
||||||
|
|
||||||
Pa11y Dashboard requires [Node.js][node] 4+. See the [Pa11y][pa11y] documentation for detailed instructions on how to install this on your operating system.
|
## Setting up Pa11y Dashboard
|
||||||
|
|
||||||
You'll also need to have [MongoDB][mongo] installed and running. See the [MongoDB install guide][mongo-install] for more information on this.
|
In order to run Pa11y Dashboard, we recommend cloning this repository locally:
|
||||||
|
|
||||||
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:
|
```sh
|
||||||
|
git clone https://github.com/pa11y/pa11y-dashboard.git
|
||||||
|
```
|
||||||
|
|
||||||
### Option 1: Using Environment Variables
|
Then installing the dependencies:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd pa11y-dashboard
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installing MongoDB
|
||||||
|
|
||||||
|
Instructions for installing and running MongoDB are outside the scope of this document. When in doubt, please refer to the [MongoDB installation instructions](https://docs.mongodb.com/manual/installation/) for details of how to install and run MongoDB on your specific operating system. An example of the installation and configuration process for macOS follows.
|
||||||
|
|
||||||
|
Pa11y Dashboard currently uses version `2.2` of the Node.js MongoDB driver, which means that [only MongoDB servers of versions 3.4 or older are supported](https://docs.mongodb.com/drivers/node/compatibility/). Please ensure that your MongoDB server fills the requirements before trying to run Pa11y Dashboard.
|
||||||
|
|
||||||
|
#### Example MongoDB installation for macOS
|
||||||
|
|
||||||
|
On recent versions of macOS (10.13 or later), you can use [Homebrew](https://brew.sh/) to install MongoDB 3.4 Community Edition. More recent versions of MongoDB are untested and unsupported.
|
||||||
|
|
||||||
|
Tap the MongoDB Homebrew Tap:
|
||||||
|
```sh
|
||||||
|
brew tap mongodb/brew
|
||||||
|
```
|
||||||
|
|
||||||
|
Install the Community version of MongoDB:
|
||||||
|
```sh
|
||||||
|
brew install mongodb-community@3.4
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the MongoDB server:
|
||||||
|
```sh
|
||||||
|
brew services start mongodb/brew/mongodb-community@3.4
|
||||||
|
```
|
||||||
|
|
||||||
|
Check that the service has started properly:
|
||||||
|
```sh
|
||||||
|
$ brew services list
|
||||||
|
Name Status User Plist
|
||||||
|
mongodb-community started pa11y /Users/pa11y/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuring Pa11y Dashboard
|
||||||
|
|
||||||
|
The last step before being able to run Pa11y Dashboard is to define a configuration for it. This can be done in two ways:
|
||||||
|
|
||||||
|
#### 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:
|
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:
|
||||||
|
|
||||||
@@ -38,11 +79,17 @@ Each configuration can be set with an environment variable rather than a config
|
|||||||
PORT=8080 node index.js
|
PORT=8080 node index.js
|
||||||
```
|
```
|
||||||
|
|
||||||
The [available configurations are documented here](#configurations).
|
The [available configurations](#configurations) are documented in the next section.
|
||||||
|
|
||||||
### Option 2: Using Config Files
|
#### Option 2: Using config files
|
||||||
|
|
||||||
You'll need to copy and modify different config files depending on your environment (set with `NODE_ENV`):
|
You can store the configuration for Pa11y Dashboard on a JSON file. You can use a different configuration file for each environment you're planning to run Pa11y Dashboard on. You can choose a specific environment to run the application from by setting the `NODE_ENV` environment variable:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
NODE_ENV=development node index.js
|
||||||
|
```
|
||||||
|
|
||||||
|
Three example files are provided in this repository, you can copy and customise them to your liking:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cp config/development.sample.json config/development.json
|
cp config/development.sample.json config/development.json
|
||||||
@@ -50,42 +97,35 @@ cp config/production.sample.json config/production.json
|
|||||||
cp config/test.sample.json config/test.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 and test configurations. The [available configurations are documented here](#configurations).
|
The [available configurations](#configurations) are documented in the next section.
|
||||||
|
|
||||||
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:
|
If you run into problems, check the [troubleshooting guide][TROUBLESHOOTING.md].
|
||||||
|
|
||||||
```sh
|
## Configurations
|
||||||
NODE_ENV=development node index.js
|
|
||||||
```
|
|
||||||
|
|
||||||
See [Contributing](#contributing) for more information about running locally (and restarting automatically when files change).
|
|
||||||
|
|
||||||
If you run into problems, check the [troubleshooting guide][troubleshooting].
|
|
||||||
|
|
||||||
|
|
||||||
Configurations
|
|
||||||
--------------
|
|
||||||
|
|
||||||
The boot configurations for Pa11y Dashboard are as follows. Look at the sample JSON files in the repo for example usage.
|
The boot configurations for Pa11y Dashboard are as follows. Look at the sample JSON files in the repo for example usage.
|
||||||
|
|
||||||
### port
|
### port
|
||||||
|
|
||||||
*(number)* The port to run the application on. Set via a config file or the `PORT` environment variable.
|
*(number)* The port to run the application on. Set via a config file or the `PORT` environment variable.
|
||||||
|
|
||||||
### noindex
|
### noindex
|
||||||
|
|
||||||
*(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.
|
*(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
|
### readonly
|
||||||
|
|
||||||
*(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.
|
*(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
|
### siteMessage
|
||||||
|
|
||||||
*(string)* A message to display prominently on the site home page. Defaults to `null`.
|
*(string)* A message to display prominently on the site home page. Defaults to `null`.
|
||||||
|
|
||||||
### webservice
|
### 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. If using environment variables, prefix the webservice vars with `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. If using environment variables, prefix the webservice vars with `WEBSERVICE_`.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
Contributing
|
|
||||||
------------
|
|
||||||
|
|
||||||
There are many ways to contribute to Pa11y Dashboard, we cover these in the [contributing guide](CONTRIBUTING.md) for this repo.
|
There are many ways to contribute to Pa11y Dashboard, we cover these in the [contributing guide](CONTRIBUTING.md) for this repo.
|
||||||
|
|
||||||
@@ -110,14 +150,12 @@ make less # Compile the site CSS from LESS files
|
|||||||
make uglify # Compile and uglify the client-side JavaScript
|
make uglify # Compile and uglify the client-side JavaScript
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Useful Resources
|
||||||
|
|
||||||
Useful Resources
|
|
||||||
-------
|
|
||||||
* [Setting up An Accessibility Dashboard from Scratch with Pa11y on DigitalOcean](https://una.im/pa11y-dash/)
|
* [Setting up An Accessibility Dashboard from Scratch with Pa11y on DigitalOcean](https://una.im/pa11y-dash/)
|
||||||
* [Monitoring Web Accessibility Compliance With Pa11y Dashboard](https://www.lullabot.com/articles/monitoring-web-accessibility-compliance-with-pa11y-dashboard)
|
* [Monitoring Web Accessibility Compliance With Pa11y Dashboard](https://www.lullabot.com/articles/monitoring-web-accessibility-compliance-with-pa11y-dashboard)
|
||||||
|
|
||||||
Support and Migration
|
## Support and Migration
|
||||||
---------------------
|
|
||||||
|
|
||||||
Pa11y Dashboard major versions are normally supported for 6 months after their last minor release. This means that patch-level changes will be added and bugs will be fixed. The table below outlines the end-of-support dates for major versions, and the last minor release for that version.
|
Pa11y Dashboard major versions are normally supported for 6 months after their last minor release. This means that patch-level changes will be added and bugs will be fixed. The table below outlines the end-of-support dates for major versions, and the last minor release for that version.
|
||||||
|
|
||||||
@@ -125,36 +163,29 @@ We also maintain a [migration guide](MIGRATION.md) to help you migrate.
|
|||||||
|
|
||||||
| :grey_question: | Major Version | Last Minor Release | Node.js Versions | Support End Date |
|
| :grey_question: | Major Version | Last Minor Release | Node.js Versions | Support End Date |
|
||||||
| :-------------- | :------------ | :----------------- | :--------------- | :--------------- |
|
| :-------------- | :------------ | :----------------- | :--------------- | :--------------- |
|
||||||
| :heart: | 2 | N/A | 4+ | N/A |
|
| :heart: | 3 | N/A | 8+ | N/A |
|
||||||
|
| :hourglass: | 2 | 2.4.2 | 4+ | 2020-01-16 |
|
||||||
| :skull: | 1 | 1.12 | 0.10–6 | 2016-12-05 |
|
| :skull: | 1 | 1.12 | 0.10–6 | 2016-12-05 |
|
||||||
|
|
||||||
If you're opening issues related to these, please mention the version that the issue relates to.
|
If you're opening issues related to these, please mention the version that the issue relates to.
|
||||||
|
|
||||||
|
## License
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Pa11y Dashboard is licensed under the [GNU General Public License 3.0][info-license].<br/>
|
Pa11y Dashboard is licensed under the [GNU General Public License 3.0][info-license].<br/>
|
||||||
Copyright © 2013–2017, Team Pa11y
|
Copyright © 2013–2020, Team Pa11y and contributors
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[gpl]: http://www.gnu.org/licenses/gpl-3.0.html
|
[gpl]: http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
[mongo]: http://www.mongodb.org/
|
[mongo]: http://www.mongodb.org/
|
||||||
[mongo-install]: https://docs.mongodb.org/manual/installation/
|
|
||||||
[node]: http://nodejs.org/
|
[node]: http://nodejs.org/
|
||||||
[pa11y]: https://github.com/pa11y/pa11y
|
[pa11y]: https://github.com/pa11y/pa11y
|
||||||
[pa11y-webservice-config]: https://github.com/pa11y/webservice#configurations
|
[pa11y-webservice-config]: https://github.com/pa11y/webservice#configurations
|
||||||
[phantom]: http://phantomjs.org/
|
|
||||||
[sidekick-proposal]: https://github.com/pa11y/sidekick/blob/master/PROPOSAL.md
|
|
||||||
[travis]: https://travis-ci.org/pa11y/dashboard
|
[travis]: https://travis-ci.org/pa11y/dashboard
|
||||||
[travis-img]: https://travis-ci.org/pa11y/dashboard.png?branch=master
|
[travis-img]: https://travis-ci.org/pa11y/dashboard.png?branch=master
|
||||||
[troubleshooting]: https://github.com/pa11y/dashboard/blob/master/TROUBLESHOOTING.md
|
|
||||||
|
|
||||||
[info-license]: LICENSE
|
|
||||||
[info-node]: package.json
|
[info-node]: package.json
|
||||||
[info-build]: https://travis-ci.org/pa11y/pa11y-dashboard
|
[info-build]: https://travis-ci.org/pa11y/pa11y-dashboard
|
||||||
[shield-license]: https://img.shields.io/badge/license-GPL%203.0-blue.svg
|
[info-license]: LICENSE
|
||||||
[shield-node]: https://img.shields.io/badge/node.js%20support-4–6-brightgreen.svg
|
[shield-version]: https://img.shields.io/github/package-json/v/pa11y/pa11y-dashboard.svg
|
||||||
[shield-version]: https://img.shields.io/badge/version-2.4.2-blue.svg
|
[shield-node]: https://img.shields.io/node/v/pa11y/pa11y-dashboard.svg
|
||||||
[shield-build]: https://img.shields.io/travis/pa11y/pa11y-dashboard/master.svg
|
[shield-build]: https://img.shields.io/travis/pa11y/pa11y-dashboard/master.svg
|
||||||
|
[shield-license]: https://img.shields.io/badge/license-GPL%203.0-blue.svg
|
||||||
|
6
app.js
6
app.js
@@ -92,8 +92,6 @@ function initApp(config, callback) {
|
|||||||
|
|
||||||
// Load routes
|
// Load routes
|
||||||
require('./route/index')(app);
|
require('./route/index')(app);
|
||||||
require('./route/task/index')(app);
|
|
||||||
require('./route/result/index')(app);
|
|
||||||
require('./route/result/download')(app);
|
require('./route/result/download')(app);
|
||||||
if (!config.readonly) {
|
if (!config.readonly) {
|
||||||
require('./route/new')(app);
|
require('./route/new')(app);
|
||||||
@@ -103,6 +101,10 @@ function initApp(config, callback) {
|
|||||||
require('./route/task/ignore')(app);
|
require('./route/task/ignore')(app);
|
||||||
require('./route/task/unignore')(app);
|
require('./route/task/unignore')(app);
|
||||||
}
|
}
|
||||||
|
// Needs to be loaded after `/route/new`
|
||||||
|
require('./route/task/index')(app);
|
||||||
|
// Needs to be loaded after `/route/task/edit`
|
||||||
|
require('./route/result/index')(app);
|
||||||
|
|
||||||
// Error handling
|
// Error handling
|
||||||
app.express.get('*', (request, response) => {
|
app.express.get('*', (request, response) => {
|
||||||
|
@@ -112,7 +112,7 @@ function getStandards() {
|
|||||||
description: 'The heading structure is not logically nested. This [Node name, eg. h2] element appears to be the primary document heading, so should be an h1 element.'
|
description: 'The heading structure is not logically nested. This [Node name, eg. h2] element appears to be the primary document heading, so should be an h1 element.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Section508.D.HeadingOrder',
|
name: 'Section508.D.HeadingOrder ',
|
||||||
description: 'The heading structure is not logically nested. This [Node name, eg. h4] element should be an [Expected heading node name, eg. h2] to be properly nested.'
|
description: 'The heading structure is not logically nested. This [Node name, eg. h4] element should be an [Expected heading node name, eg. h2] to be properly nested.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -922,7 +922,7 @@ function getStandards() {
|
|||||||
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 4.5:1.'
|
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 4.5:1.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'WCAG2AA.Principle1.Guideline1_4.1_4_3.G145',
|
name: 'WCAG2AA.Principle1.Guideline1_4.1_4_3.G145 ',
|
||||||
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 3:1.'
|
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 3:1.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1427,11 +1427,11 @@ function getStandards() {
|
|||||||
description: 'This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of /{value/}. Recommendation: /{colour recommendations/}.'
|
description: 'This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of /{value/}. Recommendation: /{colour recommendations/}.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17',
|
name: 'WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17 ',
|
||||||
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.'
|
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'WCAG2AAA.Principle1.Guideline1_4.1_4_6.G18',
|
name: 'WCAG2AAA.Principle1.Guideline1_4.1_4_6.G18 ',
|
||||||
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 4.5:1.'
|
description: 'This element\'s text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 4.5:1.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
20
index.js
20
index.js
@@ -14,7 +14,7 @@
|
|||||||
// along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
// along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const chalk = require('chalk');
|
const kleur = require('kleur');
|
||||||
const config = require('./config');
|
const config = require('./config');
|
||||||
|
|
||||||
process.on('SIGINT', () => {
|
process.on('SIGINT', () => {
|
||||||
@@ -29,16 +29,16 @@ require('./app')(config, (error, app) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log(chalk.underline.magenta('Pa11y Dashboard started'));
|
console.log(kleur.underline().magenta('Pa11y Dashboard started'));
|
||||||
console.log(chalk.grey('mode: %s'), process.env.NODE_ENV);
|
console.log(kleur.grey('mode: %s'), process.env.NODE_ENV);
|
||||||
console.log(chalk.grey('uri: %s'), app.address);
|
console.log(kleur.grey('uri: %s'), app.address);
|
||||||
|
|
||||||
app.on('route-error', error => {
|
app.on('route-error', error => {
|
||||||
const stack = (error.stack ? error.stack.split('\n') : [error.message]);
|
const stack = (error.stack ? error.stack.split('\n') : [error.message]);
|
||||||
const msg = chalk.red(stack.shift());
|
const msg = kleur.red(stack.shift());
|
||||||
console.error('');
|
console.error('');
|
||||||
console.error(msg);
|
console.error(msg);
|
||||||
console.error(chalk.grey(stack.join('\n')));
|
console.error(kleur.grey(stack.join('\n')));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Start the webservice if required
|
// Start the webservice if required
|
||||||
@@ -50,9 +50,11 @@ require('./app')(config, (error, app) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log(chalk.underline.cyan('Pa11y Webservice started'));
|
console.log(kleur.underline().cyan('Pa11y Webservice started'));
|
||||||
console.log(chalk.grey('mode: %s'), process.env.NODE_ENV);
|
console.log(kleur.grey('mode: %s'), process.env.NODE_ENV);
|
||||||
console.log(chalk.grey('uri: %s'), webservice.server.info.uri);
|
console.log(kleur.grey('uri: %s'), webservice.server.info.uri);
|
||||||
|
console.log(kleur.grey('database: %s'), config.webservice.database);
|
||||||
|
console.log(kleur.grey('cron: %s'), config.webservice.cron);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
44
package.json
44
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pa11y-dashboard",
|
"name": "pa11y-dashboard",
|
||||||
"version": "2.4.2",
|
"version": "3.3.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Pa11y Dashboard is a visual web interface to the Pa11y accessibility reporter",
|
"description": "Pa11y Dashboard is a visual web interface to the Pa11y accessibility reporter",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@@ -21,31 +21,31 @@
|
|||||||
"bugs": "https://github.com/pa11y/dashboard/issues",
|
"bugs": "https://github.com/pa11y/dashboard/issues",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=8",
|
||||||
|
"npm": ">=6"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "^1.18.3",
|
"body-parser": "~1.19.0",
|
||||||
"chalk": "~1.1",
|
"compression": "~1.7.4",
|
||||||
"compression": "^1.7.2",
|
"express": "~4.17.1",
|
||||||
"express": "^4.16.3",
|
"express-hbs": "~2.4.0",
|
||||||
"express-hbs": "~1.0",
|
"http-headers": "~3.0.2",
|
||||||
"http-headers": "^3.0.1",
|
"kleur": "~4.1.2",
|
||||||
"moment": "^2.22.2",
|
"moment": "~2.29.0",
|
||||||
"npm": "^6.1.0",
|
"pa11y-webservice": "~3.2.1",
|
||||||
"pa11y-webservice": "^2.3.1",
|
"pa11y-webservice-client-node": "~2.0.0",
|
||||||
"pa11y-webservice-client-node": "^1.2.1",
|
"underscore": "~1.11.0"
|
||||||
"underscore": "~1.8"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bower": "~1.7",
|
"bower": "^1.8.8",
|
||||||
"cheerio": "~0.20",
|
"cheerio": "^1.0.0-rc.3",
|
||||||
"eslint": "^3.18.0",
|
"eslint": "^6.8.0",
|
||||||
"less": "~2.7",
|
"less": "^3.11.1",
|
||||||
"mocha": "^2",
|
"mocha": "^7.2.0",
|
||||||
"pa11y-lint-config": "^1.0.0",
|
"pa11y-lint-config": "^1.2.1",
|
||||||
"proclaim": "^3",
|
"proclaim": "^3.6.0",
|
||||||
"request": "^2.74",
|
"request": "^2.88.2",
|
||||||
"uglify-js": "~2.6"
|
"uglify-js": "^3.11.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node index.js",
|
"start": "node index.js",
|
||||||
|
2
public/css/site.min.css
vendored
2
public/css/site.min.css
vendored
File diff suppressed because one or more lines are too long
@@ -26,7 +26,9 @@ $(document).ready(function(){
|
|||||||
var zoomResetButton = $('[data-role="zoom-reset"]');
|
var zoomResetButton = $('[data-role="zoom-reset"]');
|
||||||
var graphContainer = $('[data-role="graph"]');
|
var graphContainer = $('[data-role="graph"]');
|
||||||
var dateSelectDropdownMenu = $('[data-role="date-select-dropdown-menu"]');
|
var dateSelectDropdownMenu = $('[data-role="date-select-dropdown-menu"]');
|
||||||
var legend = graphContainer.parent('.graph-container').find('.dashedLegend');
|
var legend = graphContainer.parents('.graph-container').find('.dashedLegend');
|
||||||
|
var list = localStorage.getItem("listview") || ""; // get choice or nothing
|
||||||
|
|
||||||
|
|
||||||
var graphOptions = {
|
var graphOptions = {
|
||||||
series: {
|
series: {
|
||||||
@@ -397,4 +399,38 @@ $(document).ready(function(){
|
|||||||
$.fn.collapse.Constructor.prototype.keydown
|
$.fn.collapse.Constructor.prototype.keydown
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// List View
|
||||||
|
$('.btn-list').click(function () {
|
||||||
|
var elements = $("#grid-container .task-card");
|
||||||
|
for (i = 0; i < elements.length; i++) {
|
||||||
|
$(elements[i]).removeClass('col-md-4 col-sm-6');
|
||||||
|
$(elements[i]).addClass('col-md-12');
|
||||||
|
$(elements[i]).find('.gridview:nth-child(1)').addClass('listview col-md-9 col-sm-8');
|
||||||
|
$(elements[i]).find('.gridview:nth-child(2)').addClass('listview col-md-3 col-sm-4 task-actions clearfix');
|
||||||
|
$(elements[i]).find('.gridview').removeClass('gridview');
|
||||||
|
};
|
||||||
|
$('.view-btn').removeClass('btn-default')
|
||||||
|
$(this).addClass('btn-default');
|
||||||
|
localStorage.setItem("listview", "yes") //save the choice
|
||||||
|
});
|
||||||
|
|
||||||
|
// Grid View
|
||||||
|
$('.btn-grid').click(function () {
|
||||||
|
var elements = $("#grid-container .task-card");
|
||||||
|
for (i = 0; i < elements.length; i++) {
|
||||||
|
$(elements[i]).removeClass('col-md-12');
|
||||||
|
$(elements[i]).addClass('col-md-4 col-sm-6');
|
||||||
|
$(elements[i]).find('.listview').addClass('gridview')
|
||||||
|
$(elements[i]).find('.listview:nth-child(1)').removeClass('listview col-md-9 col-sm-8');
|
||||||
|
$(elements[i]).find('.listview:nth-child(2)').removeClass('listview col-md-3 col-sm-4 task-actions clearfix');
|
||||||
|
};
|
||||||
|
$('.view-btn').removeClass('btn-default')
|
||||||
|
$(this).addClass('btn-default')
|
||||||
|
localStorage.setItem("listview", "") //clears the choice
|
||||||
|
});
|
||||||
|
|
||||||
|
//load the view as per user's choice
|
||||||
|
if (list === 'yes') {
|
||||||
|
$('.btn-list').trigger('click');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
2
public/js/site.min.js
vendored
2
public/js/site.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -3,7 +3,7 @@
|
|||||||
// Amend the width of container if you want to here
|
// Amend the width of container if you want to here
|
||||||
@container-md-ie8: @container-md;
|
@container-md-ie8: @container-md;
|
||||||
|
|
||||||
@grid-adjustment: percentage(@grid-gutter-width / @container-md-ie8);
|
@grid-adjustment: percentage((@grid-gutter-width / @container-md-ie8));
|
||||||
|
|
||||||
.ie7, .ie8 {
|
.ie7, .ie8 {
|
||||||
* {
|
* {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -18,9 +18,9 @@
|
|||||||
// -------------------------
|
// -------------------------
|
||||||
|
|
||||||
@brand-primary: #2C3E50;
|
@brand-primary: #2C3E50;
|
||||||
@brand-success: #00806F;
|
@brand-success: #006053;
|
||||||
@brand-warning: #A86700;
|
@brand-warning: #b24d04;
|
||||||
@brand-danger: #D83D2D;
|
@brand-danger: #c92a2a;
|
||||||
@brand-info: #177BBE;
|
@brand-info: #177BBE;
|
||||||
|
|
||||||
// Scaffolding
|
// Scaffolding
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
@navbar-default-bg: @brand-primary;
|
@navbar-default-bg: @brand-primary;
|
||||||
@navbar-default-border: darken(@navbar-default-bg, 6.5%);
|
@navbar-default-border: darken(@navbar-default-bg, 6.5%);
|
||||||
@navbar-border-radius: @border-radius-base;
|
@navbar-border-radius: @border-radius-base;
|
||||||
@navbar-padding-horizontal: floor(@grid-gutter-width / 2); // ~15px
|
@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); // ~15px
|
||||||
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
|
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
|
||||||
|
|
||||||
// Navbar links
|
// Navbar links
|
||||||
|
@@ -247,7 +247,7 @@
|
|||||||
@navbar-height: 50px;
|
@navbar-height: 50px;
|
||||||
@navbar-margin-bottom: @line-height-computed;
|
@navbar-margin-bottom: @line-height-computed;
|
||||||
@navbar-border-radius: @border-radius-base;
|
@navbar-border-radius: @border-radius-base;
|
||||||
@navbar-padding-horizontal: floor(@grid-gutter-width / 2);
|
@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
|
||||||
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
|
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
|
||||||
|
|
||||||
@navbar-default-color: #777;
|
@navbar-default-color: #777;
|
||||||
|
@@ -40,10 +40,19 @@ describe.only('GET /', function() {
|
|||||||
|
|
||||||
it('should display all of the expected tasks', function() {
|
it('should display all of the expected tasks', function() {
|
||||||
const tasks = this.last.dom('[data-test=task]');
|
const tasks = this.last.dom('[data-test=task]');
|
||||||
assert.strictEqual(tasks.length, 3);
|
assert.strictEqual(tasks.length, 4);
|
||||||
assert.match(tasks.eq(0).text(), /npg home\s+\(wcag2aa\)/i);
|
assert.equal(tasks.eq(0).find('.h3').text(), 'NPG Home');
|
||||||
assert.match(tasks.eq(1).text(), /npg home\s+\(wcag2aaa\)/i);
|
assert.equal(tasks.eq(0).find('.h4').text(), 'nature.com');
|
||||||
assert.match(tasks.eq(2).text(), /nature news\s+\(section508\)/i);
|
assert.equal(tasks.eq(0).find('.h5').text(), '(WCAG2AA)');
|
||||||
|
assert.equal(tasks.eq(1).find('.h3').text(), 'NPG Home');
|
||||||
|
assert.equal(tasks.eq(1).find('.h4').text(), 'nature.com');
|
||||||
|
assert.equal(tasks.eq(1).find('.h5').text(), '(WCAG2AAA)');
|
||||||
|
assert.equal(tasks.eq(2).find('.h3').text(), 'Nature News');
|
||||||
|
assert.equal(tasks.eq(2).find('.h4').text(), 'nature.com/news');
|
||||||
|
assert.equal(tasks.eq(2).find('.h5').text(), '(Section508)');
|
||||||
|
assert.equal(tasks.eq(3).find('.h3').text(), 'Z Integration Test');
|
||||||
|
assert.equal(tasks.eq(3).find('.h4').text(), 'localhost:8132');
|
||||||
|
assert.equal(tasks.eq(3).find('.h5').text(), '(WCAG2AA)');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should have links to each task', function() {
|
it('should have links to each task', function() {
|
||||||
@@ -51,6 +60,7 @@ describe.only('GET /', function() {
|
|||||||
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001"]').length, 1);
|
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002"]').length, 1);
|
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003"]').length, 1);
|
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003"]').length, 1);
|
||||||
|
assert.strictEqual(tasks.eq(3).find('[href="/abc000000000000000000004"]').length, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should display an "Edit" button for each task', function() {
|
it('should display an "Edit" button for each task', function() {
|
||||||
@@ -58,6 +68,7 @@ describe.only('GET /', function() {
|
|||||||
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001/edit"]').length, 1);
|
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001/edit"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002/edit"]').length, 1);
|
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002/edit"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003/edit"]').length, 1);
|
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003/edit"]').length, 1);
|
||||||
|
assert.strictEqual(tasks.eq(3).find('[href="/abc000000000000000000004/edit"]').length, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should display a "Delete" button for each task', function() {
|
it('should display a "Delete" button for each task', function() {
|
||||||
@@ -65,6 +76,7 @@ describe.only('GET /', function() {
|
|||||||
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001/delete"]').length, 1);
|
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001/delete"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002/delete"]').length, 1);
|
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002/delete"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003/delete"]').length, 1);
|
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003/delete"]').length, 1);
|
||||||
|
assert.strictEqual(tasks.eq(3).find('[href="/abc000000000000000000004/delete"]').length, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should display a "Run" button for each task', function() {
|
it('should display a "Run" button for each task', function() {
|
||||||
@@ -72,6 +84,7 @@ describe.only('GET /', function() {
|
|||||||
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001/run"]').length, 1);
|
assert.strictEqual(tasks.eq(0).find('[href="/abc000000000000000000001/run"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002/run"]').length, 1);
|
assert.strictEqual(tasks.eq(1).find('[href="/abc000000000000000000002/run"]').length, 1);
|
||||||
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003/run"]').length, 1);
|
assert.strictEqual(tasks.eq(2).find('[href="/abc000000000000000000003/run"]').length, 1);
|
||||||
|
assert.strictEqual(tasks.eq(3).find('[href="/abc000000000000000000004/run"]').length, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should display the task result counts if the task has been run', function() {
|
it('should display the task result counts if the task has been run', function() {
|
||||||
|
@@ -40,7 +40,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#deleted}}
|
{{#deleted}}
|
||||||
<div class="col-md-12 clearfix" data-test="alert">
|
<div class="col-md-12 clearfix" data-test="alert">
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
<button data-dismiss="alert" class="close" type="button" aria-label="Close">×</button>
|
||||||
<strong>Bye Bye URL</strong>
|
<strong>Bye Bye URL</strong>
|
||||||
<p>The URL you selected and its associated results have been deleted.</p>
|
<p>The URL you selected and its associated results have been deleted.</p>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -27,7 +27,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
{{#if noindex}}<meta name="robots" content="noindex"/>{{/if}}
|
{{#if noindex}}<meta name="robots" content="noindex"/>{{/if}}
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="favicon.png" />
|
<link rel="icon" type="image/png" href="/favicon.png" />
|
||||||
|
|
||||||
<!-- For mobile devices. -->
|
<!-- For mobile devices. -->
|
||||||
<meta name="viewport" content="width=device-width"/>
|
<meta name="viewport" content="width=device-width"/>
|
||||||
|
@@ -19,7 +19,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
Add a new URL
|
Add a new URL
|
||||||
{{/content}}
|
{{/content}}
|
||||||
|
|
||||||
<form role="form" class="col-md-12" action="/new" method="post" data-test="new-url-form">
|
<form class="col-md-12" action="/new" method="post" data-test="new-url-form">
|
||||||
|
|
||||||
<div class="legend">
|
<div class="legend">
|
||||||
<h1 class="h2 crunch-top">Add a new URL</h1>
|
<h1 class="h2 crunch-top">Add a new URL</h1>
|
||||||
|
@@ -14,58 +14,61 @@ GNU General Public License for more details.
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
}}
|
}}
|
||||||
<div class="col-md-12 clearfix">
|
<section class="col-md-12 clearfix">
|
||||||
<div class="graph-container graph-spacer ruled clearfix">
|
<h2>Results Overview</h2>
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-3 col-sm-4 col-xs-3">
|
|
||||||
<span class="btn btn-sm btn-default btn-full-width btn_action_export">Export graph</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-5 col-sm-6 col-xs-9 pull-right">
|
<div class="col-md-12 graph-container graph-spacer ruled clearfix">
|
||||||
<ul class="list-unstyled floated-list series-checkboxes clearfix" data-role="series-checkboxes"></ul>
|
<div class="col-md-10">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3 col-sm-4 col-xs-3">
|
||||||
|
<button class="btn btn-sm btn-default btn-full-width btn_action_export">Export graph</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-5 col-sm-6 col-xs-9 pull-right">
|
||||||
|
<ul class="list-unstyled floated-list series-checkboxes clearfix" data-role="series-checkboxes"></ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div data-role="graph" class="graph"></div>
|
||||||
</div>
|
</div>
|
||||||
<div data-role="graph" class="graph"></div>
|
<div class="col-md-2 dashedLegend">
|
||||||
<div class="dashedLegend">
|
|
||||||
<div class="dashedContainer">
|
<div class="dashedContainer">
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="legendColorBox">
|
<td class="legendColorBox">
|
||||||
<div class="clearfix legendIcon legendErrors">
|
<div class="clearfix legendIcon legendErrors">
|
||||||
<div></div>
|
<div></div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="legendLabel">Errors</td>
|
<td class="legendLabel">Errors</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="legendColorBox">
|
<td class="legendColorBox">
|
||||||
<div class="clearfix legendIcon legendWarnings">
|
<div class="clearfix legendIcon legendWarnings">
|
||||||
<div></div><div></div>
|
<div></div><div></div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="legendLabel">Warnings</td>
|
<td class="legendLabel">Warnings</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="legendColorBox">
|
<td class="legendColorBox">
|
||||||
<div class="clearfix legendIcon legendNotices">
|
<div class="clearfix legendIcon legendNotices">
|
||||||
<div></div><div></div><div></div>
|
<div></div><div></div><div></div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="legendLabel">Notices</td>
|
<td class="legendLabel">Notices</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button data-role='zoom-reset' class="btn btn-xs btn-primary pull-right btn-reset hidden">Reset Zoom <i class="glyphicon glyphicon-zoom-out"></i></button>
|
<button data-role='zoom-reset' class="btn btn-xs btn-primary pull-right btn-reset hidden">Reset Zoom <i class="glyphicon glyphicon-zoom-out"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-12 hidden">
|
|
||||||
<div class="graph-spacer ruled">
|
<div class="ruled col-md-12 graph-spacer">
|
||||||
<table id="graph-data" class="table graph-table" summary="Accessibility results from Pa11y for this page">
|
<table id="graph-data" class="table graph-table" summary="Accessibility results from Pa11y for this page">
|
||||||
<caption>Pa11y results for this URL</caption>
|
<caption>Results for {{simplify-url task.url}}</caption>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Date</th>
|
<th>Date</th>
|
||||||
@@ -77,7 +80,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
<tbody>
|
<tbody>
|
||||||
{{#results}}
|
{{#results}}
|
||||||
<tr data-role="url-stats">
|
<tr data-role="url-stats">
|
||||||
<td data-value="{{date-timestamp date}}" data-role="date">{{date-format date format="DD MMM YYYY"}}</td>
|
<td data-value="{{date-timestamp date}}" data-role="date"><a href="{{href}}">{{date-format date format="DD MMM YYYY"}}</a></td>
|
||||||
<td class="text-center" data-label="error">{{count.error}}</td>
|
<td class="text-center" data-label="error">{{count.error}}</td>
|
||||||
<td class="text-center" data-label="warning">{{count.warning}}</td>
|
<td class="text-center" data-label="warning">{{count.warning}}</td>
|
||||||
<td class="text-center" data-label="notice">{{count.notice}}</td>
|
<td class="text-center" data-label="notice">{{count.notice}}</td>
|
||||||
@@ -86,4 +89,4 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
|
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
}}
|
}}
|
||||||
<footer>
|
<footer>
|
||||||
<div class="footer" role="contentinfo">
|
<div class="footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="col-md-5">
|
<div class="col-md-5">
|
||||||
<small>© 2013–{{year}} Team Pa11y.<br/>Pa11y Dashboard is licensed under the GNU General Public License 3.0.<br/>Version {{version}}</small>
|
<small>© 2013–{{year}} Team Pa11y.<br/>Pa11y Dashboard is licensed under the GNU General Public License 3.0.<br/>Version {{version}}</small>
|
||||||
|
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
}}
|
}}
|
||||||
<header>
|
<header>
|
||||||
<div role="banner" class="header">
|
<div class="header">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{{#if isHomePage}}<h1>{{else}}<div class="h1">{{/if}}
|
{{#if isHomePage}}<h1>{{else}}<div class="h1">{{/if}}
|
||||||
<a href="/">Pa11y Dashboard</a> -
|
<a href="/">Pa11y Dashboard</a> -
|
||||||
|
@@ -15,54 +15,18 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
}}
|
}}
|
||||||
|
|
||||||
<div class="col-md-3 aside">
|
<section class="col-md-12">
|
||||||
<div class="row">
|
<h2 id="tabSectionHeading">Results for {{date-format task.lastResult.date format="DD MMM YYYY"}}</h2>
|
||||||
<div class="action-buttons col-md-12 col-sm-6">
|
<div class="results-download">
|
||||||
<div class="row">
|
<a href="{{mainResult.hrefCsv}}" class="btn btn-default" data-test="download-csv">
|
||||||
<div class="col-md-12 col-sm-6 col-xs-12">
|
Download CSV <span class="glyphicon glyphicon-download" aria-hidden="true"></span>
|
||||||
<a href="{{mainResult.hrefCsv}}" class="btn-full-width btn btn-default" data-test="download-csv">
|
</a>
|
||||||
Download CSV <span class="glyphicon glyphicon-download" aria-hidden="true"></span>
|
<a href="{{mainResult.hrefJson}}" class="btn btn-default" data-test="download-json">
|
||||||
</a>
|
Download JSON <span class="glyphicon glyphicon-download" aria-hidden="true"></span>
|
||||||
</div>
|
</a>
|
||||||
<div class="col-md-12 col-sm-6 col-xs-12">
|
|
||||||
<a href="{{mainResult.hrefJson}}" class="btn-full-width btn btn-default" data-test="download-json">
|
|
||||||
Download JSON <span class="glyphicon glyphicon-download" aria-hidden="true"></span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row date-selector-row">
|
|
||||||
<div id="top" class="col-md-12 col-sm-12 clearfix">
|
<ul id="top" class="nav nav-tabs category-list">
|
||||||
<div class="well dark-well">
|
|
||||||
<div class="date-selector">
|
|
||||||
<div class="btn-group block-level clearfix">
|
|
||||||
<h2 class="h4">
|
|
||||||
<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span> {{date-format task.lastResult.date format="DD MMM YYYY"}}
|
|
||||||
</h2>
|
|
||||||
<h3 class="h5 show-stats">Select a date to show stats for:</h3>
|
|
||||||
<ul role="navigation" class="dates-list">
|
|
||||||
{{#results}}
|
|
||||||
<li><a class="" href="{{href}}">{{date-format date format="DD MMM YYYY"}}</a></li>
|
|
||||||
{{/results}}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12 col-sm-12 clearfix">
|
|
||||||
<div class="well">
|
|
||||||
<h4 class="crunch-top">View results in browser</h4>
|
|
||||||
<p class="crunch-bottom">Pa11y uses HTML_CodeSniffer to find accessibility issues. <a href="http://squizlabs.github.io/HTML_CodeSniffer/">Use their bookmarklet</a> to view results on the page you are testing.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-9" role="main">
|
|
||||||
<ul class="nav nav-tabs category-list" role="tablist">
|
|
||||||
<li class="category-list__item category-list__item_type_error active" role="presentation">
|
<li class="category-list__item category-list__item_type_error active" role="presentation">
|
||||||
<a class="category-list__link" id="errors" href="#errors-list" aria-controls="errors-list" role="tab" data-toggle="tab" data-test="task-errors">
|
<a class="category-list__link" id="errors" href="#errors-list" aria-controls="errors-list" role="tab" data-toggle="tab" data-test="task-errors">
|
||||||
Errors ( {{mainResult.count.error}} )
|
Errors ( {{mainResult.count.error}} )
|
||||||
@@ -116,10 +80,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
<div class="task-details collapse" id="error-index-{{@index}}">
|
<div class="task-details collapse" id="error-index-{{@index}}">
|
||||||
{{#if solutions.length}}
|
{{#if solutions.length}}
|
||||||
<div class="subtitle" id="error-solutions">Solutions:</div>
|
<div class="subtitle">Solutions:</div>
|
||||||
<ul class="list-unstyled solutions-list" role="list" aria-labelledby="error-solutions">
|
<ul class="list-unstyled solutions-list">
|
||||||
{{#each solutions}}
|
{{#each solutions}}
|
||||||
<li class="list-unstyled__item" role="listitem">
|
<li class="list-unstyled__item">
|
||||||
<a class="link" href="{{url}}" target="_blank">
|
<a class="link" href="{{url}}" target="_blank">
|
||||||
<span class="glyphicon glyphicon-share" aria-hidden="true"></span> {{title}}
|
<span class="glyphicon glyphicon-share" aria-hidden="true"></span> {{title}}
|
||||||
</a>
|
</a>
|
||||||
@@ -129,10 +93,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if items.length}}
|
{{#if items.length}}
|
||||||
<div class="subtitle" id="error-selectors">Selectors:</div>
|
<div class="subtitle">Selectors:</div>
|
||||||
<ul class="list-unstyled selectors-list" role="list" aria-labelledby="error-selectors">
|
<ul class="list-unstyled selectors-list">
|
||||||
{{#each items}}
|
{{#each items}}
|
||||||
<li class="list-unstyled__item" role="listitem">
|
<li class="list-unstyled__item">
|
||||||
<span title="Context" data-role="context-popover" data-toggle="popover" data-content="{{context}}">
|
<span title="Context" data-role="context-popover" data-toggle="popover" data-content="{{context}}">
|
||||||
<code class="code">{{selector}}</code>
|
<code class="code">{{selector}}</code>
|
||||||
</span>
|
</span>
|
||||||
@@ -182,10 +146,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
<div class="task-details collapse" id="warning-index-{{@index}}">
|
<div class="task-details collapse" id="warning-index-{{@index}}">
|
||||||
{{#if solutions.length}}
|
{{#if solutions.length}}
|
||||||
<div class="subtitle" id="warning-solutions">Solutions:</div>
|
<div class="subtitle">Solutions:</div>
|
||||||
<ul class="list-unstyled solutions-list" role="list" aria-labelledby="warning-solutions">
|
<ul class="list-unstyled solutions-list">
|
||||||
{{#each solutions}}
|
{{#each solutions}}
|
||||||
<li class="list-unstyled__item" role="listitem">
|
<li class="list-unstyled__item">
|
||||||
<a class="link" href="{{url}}" target="_blank">
|
<a class="link" href="{{url}}" target="_blank">
|
||||||
<span class="glyphicon glyphicon-share" aria-hidden="true"></span> {{title}}
|
<span class="glyphicon glyphicon-share" aria-hidden="true"></span> {{title}}
|
||||||
</a>
|
</a>
|
||||||
@@ -195,10 +159,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if items.length}}
|
{{#if items.length}}
|
||||||
<div class="subtitle" id="warning-selectors">Selectors:</div>
|
<div class="subtitle">Selectors:</div>
|
||||||
<ul class="list-unstyled selectors-list" role="list" aria-labelledby="warning-selectors">
|
<ul class="list-unstyled selectors-list">
|
||||||
{{#each items}}
|
{{#each items}}
|
||||||
<li class="list-unstyled__item" role="listitem">
|
<li class="list-unstyled__item">
|
||||||
<span title="Context" data-role="context-popover" data-toggle="popover" data-content="{{context}}">
|
<span title="Context" data-role="context-popover" data-toggle="popover" data-content="{{context}}">
|
||||||
<code class="code">{{selector}}</code>
|
<code class="code">{{selector}}</code>
|
||||||
</span>
|
</span>
|
||||||
@@ -248,10 +212,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
<div class="task-details collapse" id="notice-index-{{@index}}">
|
<div class="task-details collapse" id="notice-index-{{@index}}">
|
||||||
{{#if solutions.length}}
|
{{#if solutions.length}}
|
||||||
<div class="subtitle" id="notice-solutions">Solutions:</div>
|
<div class="subtitle">Solutions:</div>
|
||||||
<ul class="list-unstyled solutions-list" role="list" aria-labelledby="notice-solutions">
|
<ul class="list-unstyled solutions-list">
|
||||||
{{#each solutions}}
|
{{#each solutions}}
|
||||||
<li class="list-unstyled__item" role="listitem">
|
<li class="list-unstyled__item">
|
||||||
<a class="link" href="{{url}}" target="_blank">
|
<a class="link" href="{{url}}" target="_blank">
|
||||||
<span class="glyphicon glyphicon-share" aria-hidden="true"></span> {{title}}
|
<span class="glyphicon glyphicon-share" aria-hidden="true"></span> {{title}}
|
||||||
</a>
|
</a>
|
||||||
@@ -261,10 +225,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if items.length}}
|
{{#if items.length}}
|
||||||
<div class="subtitle" id="notice-selectors">Selectors:</div>
|
<div class="subtitle">Selectors:</div>
|
||||||
<ul class="list-unstyled selectors-list" role="list" aria-labelledby="notice-selectors">
|
<ul class="list-unstyled selectors-list">
|
||||||
{{#each items}}
|
{{#each items}}
|
||||||
<li class="list-unstyled__item" role="listitem">
|
<li class="list-unstyled__item">
|
||||||
<span title="Context" data-role="context-popover" data-toggle="popover" data-content="{{context}}">
|
<span title="Context" data-role="context-popover" data-toggle="popover" data-content="{{context}}">
|
||||||
<code class="code">{{selector}}</code>
|
<code class="code">{{selector}}</code>
|
||||||
</span>
|
</span>
|
||||||
@@ -320,5 +284,9 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
<div class="text">You have no ignored rules.</div>
|
<div class="text">You have no ignored rules.</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="well">
|
||||||
|
<h3 class="crunch-top h3">View results in browser</h3>
|
||||||
|
<p class="crunch-bottom">Pa11y uses HTML_CodeSniffer to find accessibility issues. <a href="http://squizlabs.github.io/HTML_CodeSniffer/">Use their bookmarklet</a> to view results on the page you are testing.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
|
@@ -24,11 +24,13 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
<div class="run-details task-header clearfix">
|
<div class="run-details task-header clearfix">
|
||||||
<div class="col-md-12 clearfix">
|
<div class="col-md-12 clearfix">
|
||||||
{{#unless readonly}}
|
{{#unless readonly}}
|
||||||
<ul class="inline-list" role="menu">
|
<nav aria-label="task tools">
|
||||||
<li><a href="/{{task.id}}/edit">Edit this task</a></li>
|
<ul class="inline-list">
|
||||||
<li><a href="/{{task.id}}/delete">Delete this task</a></li>
|
<li><a href="/{{task.id}}/edit">Edit this task</a></li>
|
||||||
<li><a href="{{task.hrefRun}}" data-test="run-task">Run Pa11y</a></li>
|
<li><a href="/{{task.id}}/delete">Delete this task</a></li>
|
||||||
</ul>
|
<li><a href="{{task.hrefRun}}" data-test="run-task">Run Pa11y</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{#if mainResult}}
|
{{#if mainResult}}
|
||||||
<div class="date">Last run: <strong>{{date-format mainResult.date format="DD MMM YYYY"}}</strong></div>
|
<div class="date">Last run: <strong>{{date-format mainResult.date format="DD MMM YYYY"}}</strong></div>
|
||||||
|
@@ -14,11 +14,15 @@ GNU General Public License for more details.
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
}}
|
}}
|
||||||
|
<div class="col-md-12 task-card clearfix">
|
||||||
|
<button class="btn view-btn btn-grid btn-default"><i class="glyphicon glyphicon-th"></i> Grid</button>
|
||||||
|
<button class="btn view-btn btn-list"><i class="glyphicon glyphicon-align-justify "></i> List</button>
|
||||||
|
|
||||||
<ul class="list-unstyled clearfix crunch-bottom">
|
</div>
|
||||||
|
<ul class="list-unstyled clearfix crunch-bottom" id="grid-container">
|
||||||
|
|
||||||
{{#unless readonly}}
|
{{#unless readonly}}
|
||||||
<li class="col-md-4 col-sm-6 task-card add-task">
|
<li class="col-md-4 col-sm-6 task-card add-task">
|
||||||
<a class="well task-card-link crunch-bottom" data-role="add-task" href="/new" data-test="add-task">
|
<a class="well task-card-link crunch-bottom" data-role="add-task" href="/new" data-test="add-task">
|
||||||
<p class="h3 crunch">Add new URL</p>
|
<p class="h3 crunch">Add new URL</p>
|
||||||
<p class="supersize-me crunch">+</p>
|
<p class="supersize-me crunch">+</p>
|
||||||
@@ -28,17 +32,23 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#each tasks}}
|
{{#each tasks}}
|
||||||
<li class="col-md-4 col-sm-6 task-card" data-test="task" data-role="task" data-keywords="{{lowercase name}} {{lowercase standard}} {{simplify-url url}}">
|
<li class="col-md-4 col-sm-6 task-card" data-test="task" data-role="task" data-keywords="{{lowercase name}} {{lowercase standard}} {{simplify-url url}}">
|
||||||
<a class="well task-card-link crunch-bottom" title="Details for URL {{simplify-url url}}" href="{{href}}">
|
<a class="well task-card-link crunch-bottom" title="Details for URL {{simplify-url url}}" href="{{href}}">
|
||||||
<p class="h3">{{name}}</p>
|
<div class="gridview">
|
||||||
<p class="h5">({{standard}})</p>
|
<p class="h3">{{name}}</p>
|
||||||
|
<p class="h4">{{simplify-url url}}</p>
|
||||||
|
<p class="h5">({{standard}})</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
{{#if lastResult}}
|
{{#if lastResult}}
|
||||||
<ul class="clearfix list-unstyled floated-list task-stats">
|
<div class="gridview">
|
||||||
{{#lastResult}}
|
<ul class="clearfix list-unstyled floated-list task-stats">
|
||||||
<li class="danger" title="Number of errors ({{count.error}})">{{count.error}}<span class="stat-type">Errors</span></li>
|
{{#lastResult}}
|
||||||
<li class="warning" title="Number of warnings ({{count.warning}})">{{count.warning}}<span class="stat-type">Warnings</span></li>
|
<li class="danger" title="Number of errors ({{count.error}})">{{count.error}}<span class="stat-type">Errors</span></li>
|
||||||
<li class="info last" title="Number of notices ({{count.notice}})">{{count.notice}}<span class="stat-type">Notices</span></li>
|
<li class="warning" title="Number of warnings ({{count.warning}})">{{count.warning}}<span class="stat-type">Warnings</span></li>
|
||||||
{{/lastResult}}
|
<li class="info last" title="Number of notices ({{count.notice}})">{{count.notice}}<span class="stat-type">Notices</span></li>
|
||||||
</ul>
|
{{/lastResult}}
|
||||||
Last run {{date-format lastResult.date format="DD MMM YYYY"}}
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="last-run">Last run {{date-format lastResult.date format="DD MMM YYYY"}}</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<p class="no-results">No results</p>
|
<p class="no-results">No results</p>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -46,12 +56,14 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#unless ../readonly}}
|
{{#unless ../readonly}}
|
||||||
<div class="btn-group options-button text-right">
|
<div class="btn-group options-button text-right">
|
||||||
<button type="button" class="btn btn-info btn-xs dropdown-toggle" data-toggle="dropdown"><span class="sr-only">Options</span><span class="glyphicon glyphicon-cog"></span></button>
|
<button type="button" class="btn btn-info btn-xs dropdown-toggle" data-toggle="dropdown"><span class="sr-only">Options</span><span class="glyphicon glyphicon-cog"></span></button>
|
||||||
<ul class="dropdown-menu pull-right" role="menu">
|
<nav aria-label="task tools">
|
||||||
<li><a href="{{href}}/edit">Edit this task</a></li>
|
<ul class="dropdown-menu pull-right">
|
||||||
<li><a href="{{href}}/delete">Delete this task</a></li>
|
<li><a href="{{href}}/edit">Edit this task</a></li>
|
||||||
<li class="divider"></li>
|
<li><a href="{{href}}/delete">Delete this task</a></li>
|
||||||
<li><a href="{{href}}/run" data-test="run-task">Run Pa11y</a></li>
|
<li class="divider"></li>
|
||||||
</ul>
|
<li><a href="{{href}}/run" data-test="run-task">Run Pa11y</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</li>
|
</li>
|
||||||
|
@@ -29,7 +29,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
</div>
|
</div>
|
||||||
{{/edited}}
|
{{/edited}}
|
||||||
|
|
||||||
<form role="form" class="col-md-12" action="/{{task.id}}/edit" method="post" data-test="edit-url-form">
|
<form class="col-md-12" action="/{{task.id}}/edit" method="post" data-test="edit-url-form">
|
||||||
|
|
||||||
<div class="legend">
|
<div class="legend">
|
||||||
<h1 class="h2 crunch-top">Edit URL</h1>
|
<h1 class="h2 crunch-top">Edit URL</h1>
|
||||||
|
@@ -22,7 +22,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#added}}
|
{{#added}}
|
||||||
<div class="col-md-12 clearfix" data-test="alert">
|
<div class="col-md-12 clearfix" data-test="alert">
|
||||||
<div class="alert alert-success">
|
<div class="alert alert-success">
|
||||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
<button data-dismiss="alert" class="close" type="button">×</button>
|
||||||
<strong>Whoop whoop!</strong>
|
<strong>Whoop whoop!</strong>
|
||||||
<p>Your new URL has been added.</p>
|
<p>Your new URL has been added.</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -32,7 +32,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#running}}
|
{{#running}}
|
||||||
<div class="col-md-12 clearfix" data-test="alert">
|
<div class="col-md-12 clearfix" data-test="alert">
|
||||||
<div class="alert alert-success">
|
<div class="alert alert-success">
|
||||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
<button data-dismiss="alert" class="close" type="button">×</button>
|
||||||
<strong>New results incoming!</strong>
|
<strong>New results incoming!</strong>
|
||||||
<p>
|
<p>
|
||||||
New results are being generated for this URL in the background.
|
New results are being generated for this URL in the background.
|
||||||
@@ -45,7 +45,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#ruleIgnored}}
|
{{#ruleIgnored}}
|
||||||
<div class="col-md-12 clearfix" data-test="alert">
|
<div class="col-md-12 clearfix" data-test="alert">
|
||||||
<div class="alert alert-success">
|
<div class="alert alert-success">
|
||||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
<button data-dismiss="alert" class="close" type="button">×</button>
|
||||||
<strong>Rule ignored!</strong>
|
<strong>Rule ignored!</strong>
|
||||||
<p>
|
<p>
|
||||||
You've ignored an accessibility rule for this URL.
|
You've ignored an accessibility rule for this URL.
|
||||||
@@ -58,7 +58,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{{#ruleUnignored}}
|
{{#ruleUnignored}}
|
||||||
<div class="col-md-12 clearfix" data-test="alert">
|
<div class="col-md-12 clearfix" data-test="alert">
|
||||||
<div class="alert alert-success">
|
<div class="alert alert-success">
|
||||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
<button data-dismiss="alert" class="close" type="button">×</button>
|
||||||
<strong>Rule unignored!</strong>
|
<strong>Rule unignored!</strong>
|
||||||
<p>
|
<p>
|
||||||
You've removed an ignored accessibility rule for this URL.
|
You've removed an ignored accessibility rule for this URL.
|
||||||
|
Reference in New Issue
Block a user