Compare commits

..

4 Commits

Author SHA1 Message Date
Jose Bolos
a424cfade7 Version 4.0.0 2021-11-26 15:34:37 +00:00
Jose Bolos
cbc9da2d93 update test matrix 2021-11-26 15:26:54 +00:00
Jose Bolos
19f4d32bf0 Fix linter errors 2021-11-26 15:22:28 +00:00
Jose Bolos
ff87055cc4 Update dependencies and devDependencies 2021-11-26 15:20:52 +00:00
13 changed files with 154 additions and 110 deletions

View File

@@ -17,10 +17,9 @@ jobs:
strategy: strategy:
matrix: matrix:
include: 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 - node-version: 12.x
lint: true # Linter is run only once to shorten the total build time
- node-version: 14.x
steps: steps:
- name: Checkout code from ${{ github.repository }} - name: Checkout code from ${{ github.repository }}

View File

@@ -1,5 +1,11 @@
# Changelog # Changelog
## 4.0.0 (2021-11-26)
* Update pa11y to version 6.
* Drop support for versions of Node.js older than 12.
* Update MongoDB Node driver from v2 to v3, which adds support for MongoDB v4 databases.
## 3.3.0 (2021-04-27) ## 3.3.0 (2021-04-27)
* Add new list view to the dashboard (thanks @sangitamane) * Add new list view to the dashboard (thanks @sangitamane)

View File

@@ -2,12 +2,22 @@
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) * [Table of contents](#table-of-contents)
- [Migrating from 1.0 to 2.0](#migrating-from-10-to-20) * [Migrating from 3.0 to 4.0](#migrating-from-30-to-40)
* [Migrating from 2.0 to 3.0](#migrating-from-20-to-30)
* [PhantomJS to Headless Chrome](#phantomjs-to-headless-chrome)
* [Node.js Support](#nodejs-support)
* [Miscellaneous](#miscellaneous)
* [Migrating from 1.0 to 2.0](#migrating-from-10-to-20)
* [Node.js Support](#nodejs-support-1)
## Migrating from 2.0 to 3.0 ## Migrating from 3.0 to 4.0
Pa11y Dashboard requires Node.js version 12 or greater. Versions 8 and 10 are not supported any more.
## Migrating from 2.0 to 3.0
### PhantomJS to Headless Chrome ### PhantomJS to Headless Chrome
@@ -17,13 +27,13 @@ As a result of this change, [Pa11y Dashboard's requirements](../README.md#requir
### Node.js Support ### Node.js Support
Pa11y Webservice 3 requires Node.js version 8 or greater. Versions 4 and 6 are not supported any more. Pa11y Dashboard 3 requires Node.js version 8 or greater. Versions 4 and 6 are not supported any more.
### Miscellaneous ### 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. 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 ## Migrating from 1.0 to 2.0
### Node.js Support ### Node.js Support

View File

@@ -14,7 +14,9 @@ Pa11y Dashboard is a web interface to the [Pa11y][pa11y] accessibility reporter;
## Requirements ## 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 is a [Node.js][node] application and requires a stable or LTS version of Node, currently version 12 or 14.
⚠️ At the moment, Pa11y Dashboard won't work with Node.js v16. Please use Node.js 12 or 14. ⚠️
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. 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.
@@ -39,28 +41,32 @@ npm install
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. 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. Pa11y Dashboard currently uses version 3 of the Node.js MongoDB driver, which means that [only MongoDB servers of versions 4.4 or older are supported](https://docs.mongodb.com/drivers/node/current/compatibility/#mongodb-compatibility). Please ensure that your MongoDB server fills the requirements before trying to run Pa11y Dashboard.
#### Example MongoDB installation for macOS #### 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. On recent versions of macOS (10.13 or later), you can use [Homebrew](https://brew.sh/) to install MongoDB Community Edition. More recent versions of MongoDB are untested and unsupported.
Tap the MongoDB Homebrew Tap: Tap the MongoDB Homebrew Tap:
```sh ```sh
brew tap mongodb/brew brew tap mongodb/brew
``` ```
Install the Community version of MongoDB: Install a supported Community version of MongoDB:
```sh ```sh
brew install mongodb-community@3.4 brew install mongodb-community@4.4
``` ```
Start the MongoDB server: Start the MongoDB server:
```sh ```sh
brew services start mongodb/brew/mongodb-community@3.4 brew services start mongodb/brew/mongodb-community@4.4
``` ```
Check that the service has started properly: Check that the service has started properly:
```sh ```sh
$ brew services list $ brew services list
Name Status User Plist Name Status User Plist
@@ -150,7 +156,7 @@ 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)
@@ -163,8 +169,9 @@ 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: | 3 | N/A | 8+ | N/A | | :heart: | 4 | N/A | 12+ | N/A |
| :hourglass: | 2 | 2.4.2 | 4+ | 2020-01-16 | | :hourglass: | 3 | 3.3.0 | 8+ | 2022-05-26 |
| :skull: | 2 | 2.4.2 | 4+ | 2020-01-16 |
| :skull: | 1 | 1.12 | 0.106 | 2016-12-05 | | :skull: | 1 | 1.12 | 0.106 | 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.

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
// Clone the main config // Clone the main config
var config = module.exports = JSON.parse(JSON.stringify(require('../.eslintrc'))); const config = module.exports = JSON.parse(JSON.stringify(require('../.eslintrc')));
// Disable max line length/statements // Disable max line length/statements
config.rules['max-len'] = 'off'; config.rules['max-len'] = 'off';

View File

@@ -1,6 +1,6 @@
{ {
"name": "pa11y-dashboard", "name": "pa11y-dashboard",
"version": "3.3.0", "version": "4.0.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,8 +21,7 @@
"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": ">=8", "node": ">=12 <16"
"npm": ">=6"
}, },
"dependencies": { "dependencies": {
"body-parser": "~1.19.0", "body-parser": "~1.19.0",
@@ -30,18 +29,18 @@
"express": "~4.17.1", "express": "~4.17.1",
"express-hbs": "~2.4.0", "express-hbs": "~2.4.0",
"http-headers": "~3.0.2", "http-headers": "~3.0.2",
"kleur": "~4.1.2", "kleur": "~4.1.4",
"moment": "~2.29.0", "moment": "~2.29.1",
"pa11y-webservice": "~3.2.1", "pa11y-webservice": "~4.0.0",
"pa11y-webservice-client-node": "~2.0.0", "pa11y-webservice-client-node": "~3.0.0",
"underscore": "~1.11.0" "underscore": "~1.13.1"
}, },
"devDependencies": { "devDependencies": {
"bower": "^1.8.8", "bower": "^1.8.13",
"cheerio": "^1.0.0-rc.3", "cheerio": "^1.0.0-rc.10",
"eslint": "^6.8.0", "eslint": "^7.27.0",
"less": "^3.11.1", "less": "^3.11.1",
"mocha": "^7.2.0", "mocha": "^8.4.0",
"pa11y-lint-config": "^1.2.1", "pa11y-lint-config": "^1.2.1",
"proclaim": "^3.6.0", "proclaim": "^3.6.0",
"request": "^2.88.2", "request": "^2.88.2",

File diff suppressed because one or more lines are too long

View File

@@ -26,7 +26,7 @@ $(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.parents('.graph-container').find('.dashedLegend'); var legend = graphContainer.parent('.graph-container').find('.dashedLegend');
var list = localStorage.getItem("listview") || ""; // get choice or nothing var list = localStorage.getItem("listview") || ""; // get choice or nothing

File diff suppressed because one or more lines are too long

View File

@@ -71,14 +71,6 @@
} }
} }
main section {
margin: 5em 0;
}
.results-download {
margin: 1.5em 0;
}
.supersize-me { .supersize-me {
text-align: center; text-align: center;
font-size: 112px; font-size: 112px;
@@ -593,9 +585,9 @@ ul.date-links {
} }
.dashedLegend { .dashedLegend {
position: relative; position: absolute;
top: 55px; top: 70px;
right: 20px; right: 40px;
font-size: smaller; font-size: smaller;
color: #545454; color: #545454;
background-color: #fff; background-color: #fff;

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
// Clone the main config // Clone the main config
var config = module.exports = JSON.parse(JSON.stringify(require('../.eslintrc'))); const config = module.exports = JSON.parse(JSON.stringify(require('../.eslintrc')));
// We use `this` all over the integration tests // We use `this` all over the integration tests
config.rules['no-invalid-this'] = 'off'; config.rules['no-invalid-this'] = 'off';

View File

@@ -14,61 +14,58 @@ 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/>.
}} }}
<section class="col-md-12 clearfix"> <div class="col-md-12 clearfix">
<h2>Results Overview</h2> <div class="graph-container graph-spacer ruled clearfix">
<div class="row">
<div class="col-md-12 graph-container graph-spacer ruled clearfix"> <div class="col-md-3 col-sm-4 col-xs-3">
<div class="col-md-10"> <span class="btn btn-sm btn-default btn-full-width btn_action_export">Export graph</span>
<div class="row"> </div>
<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 class="col-md-5 col-sm-6 col-xs-9 pull-right">
</div> <ul class="list-unstyled floated-list series-checkboxes clearfix" data-role="series-checkboxes"></ul>
<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 class="col-md-2 dashedLegend"> <div data-role="graph" class="graph"></div>
<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="ruled col-md-12 graph-spacer"> <div class="graph-spacer ruled">
<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>Results for {{simplify-url task.url}}</caption> <caption>Pa11y results for this URL</caption>
<thead> <thead>
<tr> <tr>
<th>Date</th> <th>Date</th>
@@ -80,7 +77,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"><a href="{{href}}">{{date-format date format="DD MMM YYYY"}}</a></td> <td data-value="{{date-timestamp date}}" data-role="date">{{date-format date format="DD MMM YYYY"}}</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>
@@ -89,4 +86,4 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
</tbody> </tbody>
</table> </table>
</div> </div>
</section> </div>

View File

@@ -15,18 +15,56 @@ 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/>.
}} }}
<section class="col-md-12"> <div class="col-md-3 aside">
<h2 id="tabSectionHeading">Results for {{date-format task.lastResult.date format="DD MMM YYYY"}}</h2> <div class="row">
<div class="results-download"> <div class="action-buttons col-md-12 col-sm-6">
<a href="{{mainResult.hrefCsv}}" class="btn btn-default" data-test="download-csv"> <div class="row">
Download CSV <span class="glyphicon glyphicon-download" aria-hidden="true"></span> <div class="col-md-12 col-sm-6 col-xs-12">
</a> <a href="{{mainResult.hrefCsv}}" class="btn-full-width btn btn-default" data-test="download-csv">
<a href="{{mainResult.hrefJson}}" class="btn btn-default" data-test="download-json"> Download CSV <span class="glyphicon glyphicon-download" aria-hidden="true"></span>
Download JSON <span class="glyphicon glyphicon-download" aria-hidden="true"></span> </a>
</a> </div>
<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">
<ul id="top" class="nav nav-tabs category-list"> <div id="top" class="col-md-12 col-sm-12 clearfix">
<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>&nbsp;&nbsp;{{date-format task.lastResult.date format="DD MMM YYYY"}}
</h2>
<h3 class="h5 show-stats" id="dates-navigation">Select a date to show stats for:</h3>
<nav aria-labelledby="dates-navigation">
<ul class="dates-list">
{{#results}}
<li><a class="" href="{{href}}">{{date-format date format="DD MMM YYYY"}}</a></li>
{{/results}}
</ul>
</nav>
</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">
<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}} )
@@ -284,9 +322,5 @@ 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>
</section> </div>