Exporting Data
After running a scan you will be brought to the "Overview" tab with your scan results. There, you will find an "Export" button. When clicked, a dialog will appear allowing you to configure which type of export you would like along with the export format.
Did you know that you can share an entire saved test record and all of its issues? Read more about sharing saved test records
Export types
Issue export
The issue export is supported in CSV, JSON and JUnit XML formats. This export will contain information pertaining to each accessibility violation found from both automatic testing as well as Intelligent Guided Testing.
Supported CSV Schemas
axe DevTools Pro CSV (default)
column name | description |
---|---|
Rule ID | The identifier for the accessibility rule |
Description | A description of the accessibility rule |
Help | Helpful information regarding the rule violated leading to issue |
Help URL | A URL with help for the given rule |
Impact | The impact or severity of the issue |
Manual | Whether the issue was found manually (IGT) or not |
Needs Review | Whether or not the potential issue needs manual review |
IGT | Which specific IGT was run to find issue (blank if not found by IGT) |
Selector | The CSS selector for the issue element |
Summary | Summary of issue |
Source Code | The HTML source code snippet of the issue element |
Tags | Metadata for the issue (categories, wcag checkpoint identifiers, etc.) |
Found By | User who peformed test in which issue was raised |
Test Title | The name of the saved test |
Test URL | The url of the page tested |
Share URL | The shared issue URL (only populated when issue or saved test explicitly shared) |
Created At | When the issue was first created |
axe Reporter CSV
This schema is compatible with the "axe Reporter" CSV generated from axe DevTools API integrations. This schema is especially useful if you are aggregating data from both the axe DevTools browser extension and APIs/CLI.
column name | description |
---|---|
Page URL | The url of the page tested |
Page Title | The document title of the page tested |
Outcome | The outcome of the issue (will be blank for axe DevTools Extension) |
Impact | The impact or severity of the issue |
Code Snippet | The HTML source snippet of the issue element |
Selector | The CSS selector for the issue element |
Remediation | Issue remediation info |
Manual | Whether the issue was found manually (IGT) or not |
Rule ID | The identifier for the accessibility rule associated with the issue |
Help | Helpful information regarding the rule violated leading to issue |
Description | A description of the accessibility rule |
Help URL | A URL with help for the given rule |
Standard | Which WCAG standard/checkpoint the issue falls within |
WCAG 2 Success Criteria | The WCAG success criteria for the issue |
Section 508 Paragraph | Applicable Section 508 information for the issue |
Tags | Metadata for the issue (categories, wcag checkpoint identifiers, etc.) |
Date | Date the issue was found |
axe-core | Version of axe-core used in test which raised issue |
Needs Review | Whether or not the potential issue needs manual review |
IGT | Which specific IGT was run to find issue (blank if not found by IGT) |
Found By | User who peformed test in which issue was raised |
Test Title | The title name of the test |
Share URL | The shared issue URL (only populated when issue or saved test explicitly shared) |
Supported JSON Schema
The JSON issue export is an array of issue data with the following properties for each issue:
Property name | Type | Description |
---|---|---|
axeVersion |
string | The version of axe-core used for the test in which the issue was raised. |
createdAt |
string | The date/time in which the issue was raised. |
description |
string | A description of the issue. |
foundBy |
string | User who performed the test in which the issue was raised. |
help |
string | Helpful information regarding the rule violated leading to issue. |
helpUrl |
string | A URL with help for the given rule. |
igt |
string | The name of the IGT in which the issue was rased (null if not found in IGT). |
impact |
string | The impact or severity of the issue. |
isManual |
boolean | Whether the issue was found manually (IGT) or not. |
needsReview |
boolean | Whether or not the potential issue needs manual review. |
ruleId |
string | The identifier for the accessibility rule associated with the issue. |
selector |
array | An array of CSS-Selectors to target the node associated with the violation. Read axe-core's documentation on selectors. |
shareURL |
string | The shared issue URL (only populated when issue or saved test explicitly shared). |
source |
string | The HTML source snippet of the issue element. |
summary |
string | Summary of issue. |
tags |
array | Array of string tags of metadata for the issue (categories, wcag checkpoint identifiers, etc.). |
testName |
string | The name of the saved test in which the issue was found. |
testPageTitle |
string | The title of the document in which the issue was found. |
testUrl |
string | The url of the page tested. |
JUnit XML Schema
All the issue data is wrapped in a <testsuites />
element. This element will contain the following attributes:
Attribute | Description | Example |
---|---|---|
id |
The WCAG level selected at the time of export. | "wcag21AA" |
name |
The name of the saved test or, for exports done before saving the results, the title of the document being tested | "Recipe Dashboard" |
package |
The name of the software in which the testing was performed. | "axe DevTools Browser Extension" |
timestamp |
The date/time of export. | "2023-04-04T00:08:10.772Z" (result of new Date().toISOString() ) |
Within the <testsuites />
there are <testcase />
elements. Each <testcase />
represents a "rule" failure. This element will contain the following attributes:
Attribute | Description | Example |
---|---|---|
name |
The rule ID. | "aria-role-missing" |
id |
Which IGT the issue was found in (will be omitted for auto issues). | "igt:keyboard" |
Within each <testcase />
element is a <failure />
element. This element represents a failure of the rule defined in the <testcase />
. The <failure />
contains the following attributes:
Attribute | Description | Example |
---|---|---|
message |
The description of the issue (failure) followed by the rule help URL | "The element's role is missing or is not appropriate for the element's function. https://docs.deque.com/issue-help/1.0.0/en/aria-role-missing" |
impact |
The impact of the issue. | "critical" |
Within each <failure />
element each instance of the failure's selector ("CSS Path") and source code ("HTML") will be printed out. Each instance will be separated by --------
. An example of this text is as follows:
CSS Path: body.Page--no-sidebar > #btn-1
HTML: <div id="btn-1" tabindex="0"><img src="https://workshop2.dequelabs.com/46c642c98aecd147b905d063efb8a97d.png" class="edit" alt="Edit"></div>
--------
CSS Path: body.Page--no-sidebar > #btn-2
HTML: <div id="btn-2" tabindex="0"><img src="https://workshop2.dequelabs.com/46c642c98aecd147b905d063efb8a97d.png" class="edit" alt="Edit"></div>
Example JUnit XML file
The following is an example JUnit XML export. In this example we have:
- WCAG 2.1 AA level selected
- Saved test name of "Recipe Dashboard"
- 2
semantic-data-table-headers
issues raised in the Table IGT - 3
keyboard-inaccessible
issues raised in the Keyboard IGT - 2
aria-role-missing
issues raised in the Keyboard IGT
<?xml version="1.0" encoding="utf-8"?>
<testsuites
id="wcag21aa"
name="Recipe Dashboard"
package="axe DevTools Browser Extension"
timestamp="2023-04-04T00:08:10.772Z"
>
<properties>
<property name="platform.userAgent" value="" />
<property name="platform.testMachine" value="" />
<property name="testSubject.fileName" value="" />
<property name="testSubject.lineNum" value="-1" />
</properties>
<testcase
name="semantic-data-table-headers"
id="igt:table"
>
<failure
message="The data table has missing or incomplete header cell markup. https://docs.deque.com/issue-help/1.0.0/en/semantic-data-table-headers"
impact="critical"
>
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.RecipesTable:nth-of-type(3) > table.Table:nth-of-type(1) > thead.TableHead:nth-of-type(1) > tr.TableRow:nth-of-type(1) > td.TableCell.THead:nth-of-type(4)
HTML: <td class="TableCell THead">Cook Time</td>
--------
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.RecipesTable:nth-of-type(3) > table.Table:nth-of-type(1) > thead.TableHead:nth-of-type(1) > tr.TableRow:nth-of-type(1) > td.TableCell.THead:nth-of-type(7)
HTML: <td class="TableCell THead">Yumminess</td>
</failure>
</testcase>
<testcase
name="keyboard-inaccessible"
id="igt:keyboard"
>
<failure
message="There is no way to perform the function using only the keyboard on the same screen or on a qualifying conforming alternate version. https://docs.deque.com/issue-help/1.0.0/en/keyboard-inaccessible"
impact="critical"
>
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.Recipes:nth-of-type(2) > div.Recipes__card:nth-of-type(16) > div.Recipes__card-foot:nth-of-type(3) > div.Button--primary:nth-of-type(1)
HTML: <div class="Button--primary"><span class="BracketLeft" aria-hidden="true">[</span><span>Cook Lemon Squares</span><span class="BracketRight" aria-hidden="true">]</span></div>
--------
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.Recipes:nth-of-type(2) > div.Recipes__card:nth-of-type(1) > div.Recipes__card-foot:nth-of-type(3) > div.Button--primary:nth-of-type(1)
HTML: <div class="Button--primary"><span class="BracketLeft" aria-hidden="true">[</span><span>Cook Chocolate Cake</span><span class="BracketRight" aria-hidden="true">]</span></div>
--------
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.Recipes:nth-of-type(2) > div.Recipes__card:nth-of-type(19) > div.Recipes__card-foot:nth-of-type(3) > div.Button--primary:nth-of-type(1)
HTML: <div class="Button--primary"><span class="BracketLeft" aria-hidden="true">[</span><span>Cook Kale Salad</span><span class="BracketRight" aria-hidden="true">]</span></div>
</failure>
</testcase>
<testcase
name="aria-role-missing"
id="igt:keyboard"
>
<failure
message="The element's role is missing or is not appropriate for the element's function. https://docs.deque.com/issue-help/1.0.0/en/aria-role-missing"
impact="critical"
>
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.Recipes:nth-of-type(2) > div.Recipes__card:nth-of-type(16) > div.Recipes__card-head:nth-of-type(1) > div.Recipes__card-edit:nth-of-type(1)
HTML: <div class="Recipes__card-edit" tabindex="0"><img src="https://workshop2.dequelabs.com/46c642c98aecd147b905d063efb8a97d.png" class="edit" alt="Edit"></div>
--------
CSS Path: body.Page--no-sidebar > div#root:nth-of-type(1) > div.App:nth-of-type(1) > div.Layout:nth-of-type(1) > main#main-content.Main:nth-of-type(1) > div.Recipes:nth-of-type(2) > div.Recipes__card:nth-of-type(7) > div.Recipes__card-head:nth-of-type(1) > div.Recipes__card-edit:nth-of-type(1)
HTML: <div class="Recipes__card-edit" tabindex="0"><img src="https://workshop2.dequelabs.com/46c642c98aecd147b905d063efb8a97d.png" class="edit" alt="Edit"></div>
</failure>
</testcase>
</testsuites>
Saved test export
Newlines are escaped so all strings will be on a single line.
The "Saved Test and Issues" export follows the axe Export format schema.