Skip to content

Commit 7f1d782

Browse files
committed
adds a lookup map to make accessibility reports clickable
1 parent 3b07f0a commit 7f1d782

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

lib/accessibility-element-view.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class AccessibilityElementView extends SelectableView {
66
constructor (element, parent) {
77
super('element-row')
88

9-
this.path = element
9+
this.path = element.selector
10+
this.pathId = element.id
1011
parent.appendChild(this.element)
1112
this.render()
1213
this.handleEvents(parent)
@@ -20,11 +21,12 @@ class AccessibilityElementView extends SelectableView {
2021
render () {
2122
this.selectorPath.textContent = this.path
2223

23-
// Add a click-handler that will select the element
24+
// Add a click-handler that will select the element.
25+
// Uses the `accessibilityAuditMap` defined in accessibility.js
2426
this.selectorPath.onclick = (evt) => {
2527
evt.preventDefault()
2628
chrome.devtools.inspectedWindow.eval(
27-
"inspect($$(\"" + this.path.replace('"', '\\"') + "\")[0])",
29+
"inspect(window.__devtron.accessibilityAuditMap.get(" + this.pathId + "))",
2830
function(result, isException) { }
2931
);
3032
}

lib/accessibility.js

+19-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,21 @@ exports.audit = () => {
44
return Eval.execute(function () {
55
const {axs} = window.__devtron
66
const config = new axs.AuditConfiguration({showUnsupportedRulesWarning: false})
7-
return axs.Audit.run(config).map(function (result) {
7+
const results = axs.Audit.run(config)
8+
9+
// Create a lookup map so users can click on an element to inspect it
10+
let idCounter = 0
11+
window.__devtron.accessibilityAuditMap = new Map()
12+
results.forEach(function (result) {
13+
const elements = result.elements || []
14+
elements.forEach(function (element) {
15+
const id = idCounter++
16+
element.__accessibilityAuditId = id
17+
window.__devtron.accessibilityAuditMap.set(id, element)
18+
})
19+
})
20+
21+
return results.map(function (result) {
822
const elements = result.elements || []
923
let status = 'N/A'
1024
if (result.result === 'PASS') {
@@ -19,7 +33,10 @@ exports.audit = () => {
1933
title: result.rule.heading,
2034
url: result.rule.url,
2135
elements: elements.map(function (element) {
22-
return window.__devtron.axs.utils.getQuerySelectorText(element)
36+
return {
37+
selector: window.__devtron.axs.utils.getQuerySelectorText(element),
38+
id: element.__accessibilityAuditId
39+
}
2340
})
2441
}
2542
}).sort(function (resultA, resultB) {

0 commit comments

Comments
 (0)