forked from external-repos/pa11y-dashboard
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1d931671ff | ||
![]() |
9d95c79625 | ||
![]() |
b8029c56f7 | ||
![]() |
9a23b79d89 | ||
![]() |
b7d45c0913 | ||
![]() |
9ae73dc446 | ||
![]() |
ff8142b4e4 | ||
![]() |
2f7e8ae451 | ||
![]() |
a2cc2c7942 | ||
![]() |
59f657b422 |
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: '8'
|
|
||||||
- node_js: '10'
|
|
||||||
- node_js: '12'
|
|
||||||
|
|
||||||
# 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'
|
|
335
CHANGELOG.md
335
CHANGELOG.md
@@ -1,279 +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)
|
## 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.
|
* 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.
|
* 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.
|
* Fix incorrect routes passing an invalid value to Mongo's ObjectID.
|
||||||
|
|
||||||
## 3.0.0 (2019-07-16)
|
## 3.0.0 (2019-07-16)
|
||||||
|
|
||||||
* Update pa11y to v5, which replaces Phantomjs with Headless Chrome
|
* Update pa11y to v5, which replaces Phantomjs with Headless Chrome
|
||||||
* Update dependencies
|
* Update dependencies
|
||||||
* Several bug fixes and documentation updates
|
* 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
|
* 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
|
||||||
|
@@ -139,7 +139,7 @@ If you're opening issues related to these, please mention the version that the i
|
|||||||
## 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–2019, Team Pa11y and contributors
|
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/
|
||||||
|
3
app.js
3
app.js
@@ -92,7 +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/download')(app);
|
require('./route/result/download')(app);
|
||||||
if (!config.readonly) {
|
if (!config.readonly) {
|
||||||
require('./route/new')(app);
|
require('./route/new')(app);
|
||||||
@@ -102,6 +101,8 @@ 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`
|
// Needs to be loaded after `/route/task/edit`
|
||||||
require('./route/result/index')(app);
|
require('./route/result/index')(app);
|
||||||
|
|
||||||
|
22
index.js
22
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,11 +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(chalk.grey('database: %s'), config.webservice.database);
|
console.log(kleur.grey('database: %s'), config.webservice.database);
|
||||||
console.log(chalk.grey('cron: %s'), config.webservice.cron);
|
console.log(kleur.grey('cron: %s'), config.webservice.cron);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
package.json
22
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pa11y-dashboard",
|
"name": "pa11y-dashboard",
|
||||||
"version": "3.1.0",
|
"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": [
|
||||||
@@ -26,26 +26,26 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "~1.19.0",
|
"body-parser": "~1.19.0",
|
||||||
"chalk": "~2.4.2",
|
|
||||||
"compression": "~1.7.4",
|
"compression": "~1.7.4",
|
||||||
"express-hbs": "~2.1.2",
|
|
||||||
"express": "~4.17.1",
|
"express": "~4.17.1",
|
||||||
|
"express-hbs": "~2.4.0",
|
||||||
"http-headers": "~3.0.2",
|
"http-headers": "~3.0.2",
|
||||||
"moment": "~2.24.0",
|
"kleur": "~4.1.2",
|
||||||
|
"moment": "~2.29.0",
|
||||||
|
"pa11y-webservice": "~3.2.1",
|
||||||
"pa11y-webservice-client-node": "~2.0.0",
|
"pa11y-webservice-client-node": "~2.0.0",
|
||||||
"pa11y-webservice": "~3.1.2",
|
"underscore": "~1.11.0"
|
||||||
"underscore": "~1.9.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bower": "^1.8.8",
|
"bower": "^1.8.8",
|
||||||
"cheerio": "^1.0.0-rc.3",
|
"cheerio": "^1.0.0-rc.3",
|
||||||
"eslint": "^6.4.0",
|
"eslint": "^6.8.0",
|
||||||
"less": "^3.10.3",
|
"less": "^3.11.1",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^7.2.0",
|
||||||
"pa11y-lint-config": "^1.2.1",
|
"pa11y-lint-config": "^1.2.1",
|
||||||
"proclaim": "^3.6.0",
|
"proclaim": "^3.6.0",
|
||||||
"request": "^2.88.0",
|
"request": "^2.88.2",
|
||||||
"uglify-js": "^3.6.0"
|
"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
@@ -27,6 +27,8 @@ $(document).ready(function(){
|
|||||||
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.parent('.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
@@ -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;
|
||||||
|
@@ -41,10 +41,18 @@ 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, 4);
|
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.match(tasks.eq(3).text(), /z integration test\s+\(wcag2aa\)/i);
|
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() {
|
||||||
|
@@ -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}}
|
||||||
|
Reference in New Issue
Block a user