@qualweb/cli
TypeScript icon, indicating that this package has built-in type declarations

0.7.2 • Public • Published

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

Package Sidebar

Install

npm i @qualweb/cli

Weekly Downloads

618

Version

0.7.2

License

ISC

Unpacked Size

88.7 kB

Total Files

54

Last publish

Collaborators

  • joao-vicente
  • antonioestriga
  • carlosapaduarte
  • tellus