Compare commits

...

7 Commits
3.3.0 ... 4.0.0

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
Sangita Mane
4c0bd924ab Fixed the a11y errors on Pa11y dashboard results and add new url page (#285)
* Fixed the a11y errors on Pa11y dashboard results page and add new url page.

* Removed few more unnecessary roles along with Holli's suggestions implemented.

* Added close button ARIA label

Co-authored-by: Hollie Kay <1948361+hollsk@users.noreply.github.com>

Co-authored-by: Hollie Kay <1948361+hollsk@users.noreply.github.com>
2021-05-26 16:38:38 +02:00
Jose Bolos
6d4b8c9676 Add mongo version to brew start command 2021-05-18 14:32:35 +01:00
Jose Bolos
0654790289 Improve installation instructions
* Clarify the requirements for running Pa11y Dashboard, and specifically the versions of MongoDB supported
* Split the installation process in sections so it's easy to follow
* Instead of trying to cover the MongoDB installation on the Readme, refer to the MongoDB docs, but still including a macOS example for easy reference
* Clarify the use of the config files and how they relate to the NODE_ENV variable
* Use a slightly less informal language in a few places
2021-05-18 14:32:35 +01:00
20 changed files with 168 additions and 105 deletions

View File

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

View File

@@ -1,5 +1,11 @@
# 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)
* 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.
## 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)
* [Table of contents](#table-of-contents)
* [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
@@ -17,13 +27,13 @@ As a result of this change, [Pa11y Dashboard's requirements](../README.md#requir
### 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
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

View File

@@ -14,15 +14,15 @@ Pa11y Dashboard is a web interface to the [Pa11y][pa11y] accessibility reporter;
## 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.
Pa11y Dashboard also requires a [MongoDB][mongo] database to be available so it can 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.
⚠️ At the moment, Pa11y Dashboard won't work with Node.js v16. Please use Node.js 12 or 14. ⚠️
Since version 3, Pa11y Dashboard uses Headless Chrome in order to run the tests. This means that additional dependencies maybe be required.
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.
In [Unix-like](https://en.wikipedia.org/wiki/Unix-like) systems you may need to install the `libnss3` and `libgconf-2-4` libraries in order to be able to run Chrome. If you're trying to run the app in a headless environment (e.g. the cloud, or a headless server), you may also need to configure Xvfb before. Please refer to the documentation from your provider for details on how to do this.
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.
## Setup
## Setting up Pa11y Dashboard
In order to run Pa11y Dashboard, we recommend cloning this repository locally:
@@ -37,11 +37,47 @@ cd pa11y-dashboard
npm install
```
You'll also need to have [MongoDB][mongo] installed and running. For quick access, you can install via a package manager such as on Mac OS `brew install mongodb` or on Linux (Debian) it would be `apt-get install mongodb`. To run MongoDB, you can run `mongod` in the command line. See the [MongoDB install guide][mongo-install] for more detailed information.
### Installing MongoDB
The last step before being able to run the application is to define a configuration for it. This can be done in two ways:
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.
### Option 1: Using Environment Variables
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
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:
```sh
brew tap mongodb/brew
```
Install a supported Community version of MongoDB:
```sh
brew install mongodb-community@4.4
```
Start the MongoDB server:
```sh
brew services start mongodb/brew/mongodb-community@4.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:
@@ -49,11 +85,17 @@ Each configuration can be set with an environment variable rather than a config
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
cp config/development.sample.json config/development.json
@@ -61,35 +103,32 @@ cp config/production.sample.json config/production.json
cp config/test.sample.json config/test.json
```
Each of these files defines configurations for a different environment. If you're just running the application locally, then you should be OK with just development 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:
```sh
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].
If you run into problems, check the [troubleshooting guide][TROUBLESHOOTING.md].
## Configurations
The boot configurations for Pa11y Dashboard are as follows. Look at the sample JSON files in the repo for example usage.
### port
*(number)* The port to run the application on. Set via a config file or the `PORT` environment variable.
### noindex
*(boolean)* If set to `true` (default), the dashboard will not be indexed by search engines. Set to `false` to allow indexing. Set via a config file or the `NOINDEX` environment variable.
### readonly
*(boolean)* If set to `true`, users will not be able to add, delete or run URLs (defaults to `false`). Set via a config file or the `READONLY` environment variable.
### siteMessage
*(string)* A message to display prominently on the site home page. Defaults to `null`.
### webservice
This can either be an object containing [Pa11y Webservice configurations][pa11y-webservice-config], or a string which is the base URL of a [Pa11y Webservice][pa11y-webservice] instance you are running separately. If using environment variables, prefix the webservice vars with `WEBSERVICE_`.
## Contributing
@@ -117,7 +156,7 @@ make less # Compile the site CSS from LESS files
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/)
* [Monitoring Web Accessibility Compliance With Pa11y Dashboard](https://www.lullabot.com/articles/monitoring-web-accessibility-compliance-with-pa11y-dashboard)
@@ -130,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 |
| :-------------- | :------------ | :----------------- | :--------------- | :--------------- |
| :heart: | 3 | N/A | 8+ | N/A |
| :hourglass: | 2 | 2.4.2 | 4+ | 2020-01-16 |
| :heart: | 4 | N/A | 12+ | N/A |
| :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 |
If you're opening issues related to these, please mention the version that the issue relates to.
@@ -143,15 +183,11 @@ Copyright &copy; 20132020, Team Pa11y and contributors
[gpl]: http://www.gnu.org/licenses/gpl-3.0.html
[mongo]: http://www.mongodb.org/
[mongo-install]: https://docs.mongodb.org/manual/installation/
[node]: http://nodejs.org/
[pa11y]: https://github.com/pa11y/pa11y
[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-img]: https://travis-ci.org/pa11y/dashboard.png?branch=master
[troubleshooting]: https://github.com/pa11y/dashboard/blob/master/TROUBLESHOOTING.md
[info-node]: package.json
[info-build]: https://travis-ci.org/pa11y/pa11y-dashboard

View File

@@ -1,7 +1,7 @@
'use strict';
// 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
config.rules['max-len'] = 'off';

View File

@@ -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.'
},
{
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.'
},
{
@@ -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.'
},
{
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.'
},
{
@@ -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/}.'
},
{
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.'
},
{
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.'
},
{

View File

@@ -1,6 +1,6 @@
{
"name": "pa11y-dashboard",
"version": "3.3.0",
"version": "4.0.0",
"private": true,
"description": "Pa11y Dashboard is a visual web interface to the Pa11y accessibility reporter",
"keywords": [
@@ -21,8 +21,7 @@
"bugs": "https://github.com/pa11y/dashboard/issues",
"license": "GPL-3.0",
"engines": {
"node": ">=8",
"npm": ">=6"
"node": ">=12 <16"
},
"dependencies": {
"body-parser": "~1.19.0",
@@ -30,18 +29,18 @@
"express": "~4.17.1",
"express-hbs": "~2.4.0",
"http-headers": "~3.0.2",
"kleur": "~4.1.2",
"moment": "~2.29.0",
"pa11y-webservice": "~3.2.1",
"pa11y-webservice-client-node": "~2.0.0",
"underscore": "~1.11.0"
"kleur": "~4.1.4",
"moment": "~2.29.1",
"pa11y-webservice": "~4.0.0",
"pa11y-webservice-client-node": "~3.0.0",
"underscore": "~1.13.1"
},
"devDependencies": {
"bower": "^1.8.8",
"cheerio": "^1.0.0-rc.3",
"eslint": "^6.8.0",
"bower": "^1.8.13",
"cheerio": "^1.0.0-rc.10",
"eslint": "^7.27.0",
"less": "^3.11.1",
"mocha": "^7.2.0",
"mocha": "^8.4.0",
"pa11y-lint-config": "^1.2.1",
"proclaim": "^3.6.0",
"request": "^2.88.2",

File diff suppressed because one or more lines are too long

View File

@@ -175,7 +175,6 @@
text-transform: uppercase;
display: block;
line-height: 1.4;
.opacity(.8);
}
// Stats box colours
@@ -753,3 +752,11 @@ ul.date-links {
border-top-right-radius: 0;
}
}
/*close button on success alert*/
.alert-success {
.close {
color: #fff;
opacity: 1;
};
}

View File

@@ -18,9 +18,9 @@
// -------------------------
@brand-primary: #2C3E50;
@brand-success: #00806F;
@brand-warning: #A86700;
@brand-danger: #D83D2D;
@brand-success: #006053;
@brand-warning: #b24d04;
@brand-danger: #c92a2a;
@brand-info: #177BBE;
// Scaffolding

View File

@@ -1,7 +1,7 @@
'use strict';
// 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
config.rules['no-invalid-this'] = 'off';

View File

@@ -40,7 +40,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{#deleted}}
<div class="col-md-12 clearfix" data-test="alert">
<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>
<p>The URL you selected and its associated results have been deleted.</p>
</div>

View File

@@ -19,7 +19,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
Add a new URL
{{/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">
<h1 class="h2 crunch-top">Add a new URL</h1>

View File

@@ -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/>.
}}
<footer>
<div class="footer" role="contentinfo">
<div class="footer">
<div class="container">
<div class="col-md-5">
<small>&copy; 2013{{year}} Team Pa11y.<br/>Pa11y Dashboard is licensed under the GNU General Public License 3.0.<br/>Version {{version}}</small>

View File

@@ -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/>.
}}
<header>
<div role="banner" class="header">
<div class="header">
<div class="container">
{{#if isHomePage}}<h1>{{else}}<div class="h1">{{/if}}
<a href="/">Pa11y Dashboard</a> -

View File

@@ -40,12 +40,14 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
<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">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>
<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>
@@ -61,7 +63,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
</div>
</div>
<div class="col-md-9" role="main">
<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">
<a class="category-list__link" id="errors" href="#errors-list" aria-controls="errors-list" role="tab" data-toggle="tab" data-test="task-errors">
@@ -116,10 +118,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
<div class="task-details collapse" id="error-index-{{@index}}">
{{#if solutions.length}}
<div class="subtitle" id="error-solutions">Solutions:</div>
<ul class="list-unstyled solutions-list" role="list" aria-labelledby="error-solutions">
<div class="subtitle">Solutions:</div>
<ul class="list-unstyled solutions-list">
{{#each solutions}}
<li class="list-unstyled__item" role="listitem">
<li class="list-unstyled__item">
<a class="link" href="{{url}}" target="_blank">
<span class="glyphicon glyphicon-share" aria-hidden="true"></span>&nbsp;{{title}}
</a>
@@ -129,10 +131,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{/if}}
{{#if items.length}}
<div class="subtitle" id="error-selectors">Selectors:</div>
<ul class="list-unstyled selectors-list" role="list" aria-labelledby="error-selectors">
<div class="subtitle">Selectors:</div>
<ul class="list-unstyled selectors-list">
{{#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}}">
<code class="code">{{selector}}</code>
</span>
@@ -182,10 +184,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
<div class="task-details collapse" id="warning-index-{{@index}}">
{{#if solutions.length}}
<div class="subtitle" id="warning-solutions">Solutions:</div>
<ul class="list-unstyled solutions-list" role="list" aria-labelledby="warning-solutions">
<div class="subtitle">Solutions:</div>
<ul class="list-unstyled solutions-list">
{{#each solutions}}
<li class="list-unstyled__item" role="listitem">
<li class="list-unstyled__item">
<a class="link" href="{{url}}" target="_blank">
<span class="glyphicon glyphicon-share" aria-hidden="true"></span>&nbsp;{{title}}
</a>
@@ -195,10 +197,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{/if}}
{{#if items.length}}
<div class="subtitle" id="warning-selectors">Selectors:</div>
<ul class="list-unstyled selectors-list" role="list" aria-labelledby="warning-selectors">
<div class="subtitle">Selectors:</div>
<ul class="list-unstyled selectors-list">
{{#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}}">
<code class="code">{{selector}}</code>
</span>
@@ -248,10 +250,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
<div class="task-details collapse" id="notice-index-{{@index}}">
{{#if solutions.length}}
<div class="subtitle" id="notice-solutions">Solutions:</div>
<ul class="list-unstyled solutions-list" role="list" aria-labelledby="notice-solutions">
<div class="subtitle">Solutions:</div>
<ul class="list-unstyled solutions-list">
{{#each solutions}}
<li class="list-unstyled__item" role="listitem">
<li class="list-unstyled__item">
<a class="link" href="{{url}}" target="_blank">
<span class="glyphicon glyphicon-share" aria-hidden="true"></span>&nbsp;{{title}}
</a>
@@ -261,10 +263,10 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{/if}}
{{#if items.length}}
<div class="subtitle" id="notice-selectors">Selectors:</div>
<ul class="list-unstyled selectors-list" role="list" aria-labelledby="notice-selectors">
<div class="subtitle">Selectors:</div>
<ul class="list-unstyled selectors-list">
{{#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}}">
<code class="code">{{selector}}</code>
</span>

View File

@@ -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="col-md-12 clearfix">
{{#unless readonly}}
<ul class="inline-list" role="menu">
<li><a href="/{{task.id}}/edit">Edit this task</a></li>
<li><a href="/{{task.id}}/delete">Delete this task</a></li>
<li><a href="{{task.hrefRun}}" data-test="run-task">Run Pa11y</a></li>
</ul>
<nav aria-label="task tools">
<ul class="inline-list">
<li><a href="/{{task.id}}/edit">Edit this task</a></li>
<li><a href="/{{task.id}}/delete">Delete this task</a></li>
<li><a href="{{task.hrefRun}}" data-test="run-task">Run Pa11y</a></li>
</ul>
</nav>
{{/unless}}
{{#if mainResult}}
<div class="date">Last run: <strong>{{date-format mainResult.date format="DD MMM YYYY"}}</strong></div>

View File

@@ -56,12 +56,14 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{#unless ../readonly}}
<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>
<ul class="dropdown-menu pull-right" role="menu">
<li><a href="{{href}}/edit">Edit this task</a></li>
<li><a href="{{href}}/delete">Delete this task</a></li>
<li class="divider"></li>
<li><a href="{{href}}/run" data-test="run-task">Run Pa11y</a></li>
</ul>
<nav aria-label="task tools">
<ul class="dropdown-menu pull-right">
<li><a href="{{href}}/edit">Edit this task</a></li>
<li><a href="{{href}}/delete">Delete this task</a></li>
<li class="divider"></li>
<li><a href="{{href}}/run" data-test="run-task">Run Pa11y</a></li>
</ul>
</nav>
</div>
{{/unless}}
</li>

View File

@@ -29,7 +29,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
</div>
{{/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">
<h1 class="h2 crunch-top">Edit URL</h1>

View File

@@ -22,7 +22,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{#added}}
<div class="col-md-12 clearfix" data-test="alert">
<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>
<p>Your new URL has been added.</p>
</div>
@@ -32,7 +32,7 @@ along with Pa11y Dashboard. If not, see <http://www.gnu.org/licenses/>.
{{#running}}
<div class="col-md-12 clearfix" data-test="alert">
<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>
<p>
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}}
<div class="col-md-12 clearfix" data-test="alert">
<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>
<p>
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}}
<div class="col-md-12 clearfix" data-test="alert">
<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>
<p>
You've removed an ignored accessibility rule for this URL.