@qualweb/cli
v0.6.40
Published
QualWeb evaluator command line interface
Downloads
76
Readme
QualWeb CLI
QualWeb command line interface. It allows you to perform accessibility evaluations from the terminal. It uses the @qualweb/core that contains 3 evaluation modules:
You can also perform evaluations at http://qualweb.di.fc.ul.pt/evaluator/, or by installing the chrome extension.
How to install
$ npm i -g @qualweb/cli
How to run
Url input
Simple evaluation
$ qw -u https://act-rules.github.io/pages/about/
Evaluation with EARL report
$ qw -u https://act-rules.github.io/pages/about/ -r earl
File input
If you want to evaluate multiple url's at once, you can input a file with each url separated by a newline \n.
Example
$ qw -f urls.txt
Evaluation with EARL report
This method will create an EARL report for each url.
$ qw -f urls.txt -r earl
This method will create an aggregated EARL report from all urls.
$ qw -f urls.txt -r earl-a # add `-s <save-name>` to rename the report file
Options
Usage options
| Alias | Command | Value | Information |
| ----- | ------------------------ | ------------------------------------------------- | --------------------------------------------------------------------- |
| -u | --url | <url>
| Url to evaluate |
| -f | --file | <path-to-file>
| File with urls to evaluate |
| -c | --crawl | <domain>
| Domain to crawl |
| -m | --module | act wcag bp
| Choose which modules to execute |
| -r | --report-type | "earl" or "earl-a"
| Convert the evaluation to earl
or earl-a
(earl-aggregated) |
| -s | --save-name | <name>
| The name to save the aggregated earl reports (earl-a) |
| -t | --timeout | <number>
| Timeout for page to load |
| -w | --waitUntil | load doncontentloaded networkidle0 networkidle2
| Events to wait before starting evaluation |
| -p | --maxParallelEvaluations | <number>
| Evaluates multiples urls ate the same time (experimental) |
| -j | --json | <file>
| Loads a json file with the configs to execute. Check an example below |
| -h | --help | | Print the help menu |
-j, --json config file example
This command replaces all other commands.
{
"url": "https://act-rules.github.io/pages/about/",
"file": "test_url.txt",
"crawl": "https://act-rules.github.io",
"viewport": {
"mobile": false,
"orientation": "landscape",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0', default value for mobile = 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; DROID2 GLOBAL Build/S273) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"width": 1920,
"height": 1080
},
"maxParallelEvaluations": "5",
"modules": {
"act": true,
"wcag": true,
"bp": true,
"counter": false,
},
"act-rules": {
"rules": ["QW-ACT-R1"],
"exclude": ["QW-ACT-R2"],
"levels": ["A", "AA", "AAA"],
"principles": ["Perceivable", "Operable", "Understandable", "Robust"]
},
"wcag-techniques": {
"rules": ["QW-WCAG-T1"],
"exclude": ["QW-WCAG-T2"],
"levels": ["A", "AA", "AAA"],
"principles": ["Perceivable", "Operable", "Understandable", "Robust"]
},
"best-practices": {
"bestPractices": ["QW-BP1"],
"exclude": ["QW-BP2"]
}
}
Viewport Options
| Alias | Command | Value | Information |
| ----- | ------------- | --------------------------- | ------------------------------------------------------------------------------- |
| -v | --viewport | | Use custom viewport |
| | --mobile | | Use a mobile context (default: desktop) |
| | --orientation | "portrait" or "landscape"
| Set window orientation (default desktop: landscape, default mobile: portrait) |
| | --user-agent | <custom-user-agent>
| Set custom user agent |
| | --width | <number in px>
| Set custom viewport width (default desktop: 1366, default mobile: 1080) |
| | --height | <number in px>
| Set custom viewport height (default desktop: 768, default mobile: 1920) |
Modules options
| Command | Value | Information |
| ----------------- | --------------------------------------------------------------- | --------------------------------------------------------------------- |
| --act-rules | "ruleId1 ruleId2 ... ruleIdx" or <config file>
| Choose which act rules to execute. For config file check below |
| --exclude-act | "ruleId1 ruleId2 ... ruleIdx" or <config file>
| Choose which act rules to exclude. For config file check below |
| --act-levels | A AA AAA
| Choose which conform levels to evaluate regarding the act rules |
| --act-principles | Perceivable Operable Understandable Robust
| Choose which principles to evaluate regarding the act rules |
| --wcag-techniques | "techniqueId1 techniqueId2 ... techniqueIdx" or <config file>
| Choose which wcag techniques to execute. For config file check below |
| --exclude-wcag | "techniqueId1 techniqueId2 ... techniqueIdx" or <config file>
| Choose which wcag techniques to exclude. For config file check below |
| --wcag-levels | A AA AAA
| Choose which conform levels to evaluate regarding the wcag techniques |
| --wcag-principles | Perceivable Operable Understandable Robust
| Choose which principles to evaluate regarding the wcag techniques |
| --best-practices | bestpracticeId1 bestpracticeId2 ... bestpracticeIdx
| Choose which best practices to execute. For config file check below |
| --exclude-bp | bestpracticeId1 bestpracticeId2 ... bestpracticeIdx
| Choose which best practices to exclude. For config file check below |
Note: The module options above are only used if the correspondent module was set to be executed (command -m).
--act-rules config file example
This config file can replace commands --act-rules, --act-levels and --act-principles.
{
"act-rules": {
"rules": ["QW-ACT-R1"],
"exclude": ["QW-ACT-R2"],
"levels": ["A", "AA", "AAA"],
"principles": ["Perceivable", "Operable", "Understandable", "Robust"]
}
}
--wcag-techniques config file example
This config file can replace commands --wcag-techniques, --wcag-levels and --wcag-principles.
{
"wcag-techniques": {
"techniques": ["QW-WCAG-T1"],
"exclude": ["QW-WCAG-T2"],
"levels": ["A", "AA", "AAA"],
"principles": ["Perceivable", "Operable", "Understandable", "Robust"]
}
}
--best-practices config file example
{
"best-practices": {
"bestPractices": ["QW-BP1"],
"exclude": ["QW-BP2"]
}
}
Implemented ACT Rules
| QualWeb Rule ID | ACT Rule ID | ACT Rule Name |
| --------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------- |
| QW-ACT-R1 | 2779a5 | HTML Page has a title |
| QW-ACT-R2 | b5c3f8 | HTML has lang attribute |
| QW-ACT-R3 | 5b7ae0 | HTML lang and xml:lang match |
| QW-ACT-R4 | bc659a | Meta-refresh no delay |
| QW-ACT-R5 | bf051a | Validity of HTML Lang attribute |
| QW-ACT-R6 | 59796f | Image button has accessible name |
| QW-ACT-R7 | b33eff | Orientation of the page is not restricted using CSS transform property |
| QW-ACT-R9 | b20e66 | Links with identical accessible names have equivalent purpose |
| QW-ACT-R10 | 4b1c6c | iframe
elements with identical accessible names have equivalent purpose |
| QW-ACT-R11 | 97a4e1 | Button has accessible name |
| QW-ACT-R12 | c487ae | Link has accessible name |
| QW-ACT-R13 | 6cfa84 | Element with aria-hidden
has no focusable content |
| QW-ACT-R14 | b4f0c3 | meta viewport does not prevent zoom |
| QW-ACT-R15 | 80f0bf | audio or video has no audio that plays automatically |
| QW-ACT-R16 | e086e5 | Form control has accessible name |
| QW-ACT-R17 | 23a2a8 | Image has accessible name |
| QW-ACT-R18 | 3ea0c8 | id
attribute value is unique |
| QW-ACT-R19 | cae760 | iframe element has accessible name |
| QW-ACT-R20 | 674b10 | role attribute has valid value |
| QW-ACT-R21 | 7d6734 | svg element with explicit role has accessible name |
| QW-ACT-R22 | de46e4 | Element within body has valid lang attribute |
| QW-ACT-R23 | c5a4ea | video element visual content has accessible alternative |
| QW-ACT-R24 | 73f2c2 | autocomplete attribute has valid value |
| QW-ACT-R25 | 5c01ea | ARIA state or property is permitted |
| QW-ACT-R26 | eac66b | video element auditory content has accessible alternative |
| QW-ACT-R27 | 5f99a7 | This rule checks that each aria- attribute specified is defined in ARIA 1.1. |
| QW-ACT-R28 | 4e8ab6 | Element with role attribute has required states and properties |
| QW-ACT-R29 | e7aa44 | Audio element content has text alternative |
| QW-ACT-R30 | 2ee8b8 | Visible label is part of accessible name |
| QW-ACT-R31 | c3232f | Video element visual-only content has accessible alternative |
| QW-ACT-R32 | 1ec09b | video element visual content has strict accessible alternative |
| QW-ACT-R33 | ff89c9 | ARIA required context role |
| QW-ACT-R34 | 6a7281 | ARIA state or property has valid value |
| QW-ACT-R35 | ffd0e9 | Heading has accessible name |
| QW-ACT-R36 | a25f45 | Headers attribute specified on a cell refers to cells in the same table element |
| QW-ACT-R37 | afw4f7 | Text has minimum contrast |
| QW-ACT-R38 | bc4a75 | ARIA required owned elements |
| QW-ACT-R39 | d0f69e | All table header cells have assigned data cells |
| QW-ACT-R40 | 59br37 | Zoomed text node is not clipped with CSS overflow |
| QW-ACT-R41 | 36b590 | Error message describes invalid form field value |
| QW-ACT-R42 | 8fc3b6 | Object element has non-empty accessible name |
| QW-ACT-R43 | 0ssw9k | Scrollable element is keyboard accessible |
| QW-ACT-R44 | fd3a94 | Links with identical accessible names and context serve equivalent purpose |
| QW-ACT-R48 | 46ca7f | Element marked as decorative is not exposed |
| QW-ACT-R49 | aaa1bf | Audio or video that plays automatically has no audio that lasts more than 3 seconds |
| QW-ACT-R50 | 4c31df | Audio or video that plays automatically has a control mechanism |
| QW-ACT-R51 | fd26cf | video element visual-only content is media alternative for text |
| QW-ACT-R52 | ac7dc6 | video element visual-only content has description track |
| QW-ACT-R53 | ee13b5 | video element visual-only content has transcript |
| QW-ACT-R54 | d7ba54 | video element visual-only content has audio track alternative |
| QW-ACT-R55 | 1ea59c | video element visual content has audio description |
| QW-ACT-R56 | ab4d13 | video element content is media alternative for text |
| QW-ACT-R57 | f196ce | video element visual content has description track |
| QW-ACT-R58 | 2eb176 | audio element content has transcript |
| QW-ACT-R59 | afb423 | audio element content is media alternative for text |
| QW-ACT-R60 | f51b46 | video element auditory content has captions |
| QW-ACT-R61 | 1a02b0 | video element visual content has transcript |
| QW-ACT-R62 | oj04fd | Element in sequential focus order has visible focus |
| QW-ACT-R63 | b40fd1 | Document has a landmark with non-repeated content |
| QW-ACT-R64 | 047fe0 | Document has heading for non-repeated content |
| QW-ACT-R65 | 307n5z | Element with presentational children has no focusable content |
| QW-ACT-R66 | m6b1q3 | Menuitem has non-empty accessible name |
| QW-ACT-R67 | 24afc2 | Letter spacing in style attributes is not !important |
| QW-ACT-R68 | 78fd32 | Line height in style attributes is not !important |
| QW-ACT-R69 | 9e45ec | Word spacing in style attributes is not !important |
| QW-ACT-R70 | akn7bn | frame with negative tabindex has no interactive elements |
| QW-ACT-R71 | bisz58 | meta
element has no refresh delay (no exception) |
| QW-ACT-R72 | 8a213c | First focusable element is link to non-repeated content |
| QW-ACT-R73 | 3e12e1 | Block of repeated content is collapsible |
| QW-ACT-R74 | ye5d6e | Document has an instrument to move focus to non-repeated content |
| QW-ACT-R75 | cf77f2 | Bypass Blocks of Repeated Content |
| QW-ACT-R76 | 09o5cg | Text has enhanced contrast |
| QW-ACT-R77 | in6db8 | ARIA required ID references exist |
Implemented WCAG 2.1 Techniques
| QualWeb Technique ID | WCAG Technique ID | WCAG Technique Name |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| QW-WCAG-T1 | H24 | Providing text alternatives for the area elements of image maps |
| QW-WCAG-T2 | H39 | Using caption elements to associate data table captions with data tables |
| QW-WCAG-T3 | H71 | Providing a description for groups of form controls using fieldset and legend elements |
| QW-WCAG-T4 | H73 | Using the summary attribute of the table element to give an overview of data tables |
| QW-WCAG-T5 | H36 | Using alt attributes on images used as submit buttons |
| QW-WCAG-T6 | SCR20 | Using both keyboard and other device-specific functions |
| QW-WCAG-T7 | H28 | Providing definitions for abbreviations by using the abbr element |
| QW-WCAG-T8 | F30 | Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives |
| QW-WCAG-T9 | G141 | Organizing a page using headings |
| QW-WCAG-T10 | H2 | Combining adjacent image and text links for the same resource |
| QW-WCAG-T11 | H35 | Providing text alternatives on applet elements |
| QW-WCAG-T12 | F46 | Failure of Success Criterion 1.3.1 due to using th elements, caption elements, or non-empty summary attributes in layout tables |
| QW-WCAG-T13 | F47 | Failure of Success Criterion 2.2.2 due to using the blink element |
| QW-WCAG-T14 | H43 | Using id and headers attributes to associate data cells with header cells in data tables |
| QW-WCAG-T15 | H59 | Using the link element and navigation tools |
| QW-WCAG-T16 | H88 | Using HTML according to spec |
| QW-WCAG-T17 | G162 | Positioning labels to maximize predictability of relationships |
| QW-WCAG-T18 | H51 | Using table markup to present tabular information |
| QW-WCAG-T19 | H32 | Providing submit buttons |
| QW-WCAG-T20 | H33 | Supplementing link text with the title attribute |
| QW-WCAG-T21 | F89 | Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link |
| QW-WCAG-T22 | F52 | Failure of Success Criterion 3.2.1 and 3.2.5 due to opening a new window as soon as a new page is loaded |
| QW-WCAG-T23 | G1 | Adding a link at the top of each page that goes directly to the main content area |
| QW-WCAG-T24 | F55 | Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received |
| QW-WCAG-T25 | H63 | Using the scope attribute to associate header cells and data cells in data tables |
| QW-WCAG-T26 | F59 | Failure of Success Criterion 4.1.2 due to using script to make div or span a user interface control in HTML without providing a role for the control |
| QW-WCAG-T27 | F88 | Failure of Success Criterion 1.4.8 due to using text that is justified (aligned to both the left and the right margins) |
| QW-WCAG-T28 | C12 C13 C14 | Using percent, em, names
for font sizes |
| QW-WCAG-T29 | C19 | Specifying alignment either to the left or right in CSS |
| QW-WCAG-T30 | F4 | Failure of Success Criterion 2.2.2 due to using text-decoration:blink without a mechanism to stop it in less than five seconds |
| QW-WCAG-T31 | F24 | Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa |
| QW-WCAG-T32 | H48 | Using ol, ul and dl for lists or groups of links |
License
ISC