Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new_audit: td-has-header #15051

Merged
merged 27 commits into from
May 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
c6dfef5
first pass
jazyan May 2, 2023
16ba9d7
fixed typo and updated sample json
jazyan May 4, 2023
fdbc865
Merge branch 'main' of github.com:GoogleChrome/lighthouse into a11y
jazyan May 4, 2023
40469a4
Merge branch 'main' of github.com:GoogleChrome/lighthouse into a11y
jazyan May 5, 2023
b33e935
string updates and revert some stuff
jazyan May 5, 2023
e0c20b8
update strings
jazyan May 5, 2023
da1bab0
update strings
jazyan May 5, 2023
ed0ec61
sample json
jazyan May 5, 2023
97502d1
does this update snapshot?
jazyan May 5, 2023
d311482
update snapshot
jazyan May 5, 2023
b4a0d3a
add td-has-header expected audit result
jazyan May 8, 2023
7fa1322
first pass
jazyan May 2, 2023
de8b388
fixed typo and updated sample json
jazyan May 4, 2023
fdbe838
string updates and revert some stuff
jazyan May 5, 2023
806222a
update strings
jazyan May 5, 2023
c3d25e1
update strings
jazyan May 5, 2023
850b0d8
sample json
jazyan May 5, 2023
e92ea49
does this update snapshot?
jazyan May 5, 2023
0017f61
update snapshot
jazyan May 5, 2023
e71bfe1
add td-has-header expected audit result
jazyan May 8, 2023
d3f9168
Merge branch 'a11y' of github.com:GoogleChrome/lighthouse into a11y
jazyan May 9, 2023
c4c675b
update category renderer assertion
jazyan May 9, 2023
7ed9388
update audit result counts in navigation and snapshot tests
jazyan May 9, 2023
0f4f43b
Merge branch 'main' into a11y
jazyan May 12, 2023
c880d34
apply UI string review suggestions
jazyan May 12, 2023
751b1f1
update strings
jazyan May 12, 2023
519034b
lint and update sample json
jazyan May 12, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions cli/test/smokehouse/test-definitions/a11y.js
Original file line number Diff line number Diff line change
Expand Up @@ -698,6 +698,22 @@ const expectations = {
],
},
},
'td-has-header': {
score: 0,
details: {
items: [
{
node: {
'type': 'node',
'selector': 'body > section > table#td-has-header',
'snippet': '<table id="td-has-header">',
'explanation': 'Fix all of the following:\n Some non-empty data cells do not have table headers',
'nodeLabel': 'FOO\tFOO\tFOO\tFOO\nfoo\tfoo\tfoo\tfoo\nfoo\tfoo\tfoo\tfoo\nfoo\tfoo\tfoo\tfoo',
},
},
],
},
},
'td-headers-attr': {
score: 0,
details: {
Expand Down
45 changes: 45 additions & 0 deletions core/audits/accessibility/td-has-header.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* @license Copyright 2023 The Lighthouse Authors. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
*/

/**
* @fileoverview Ensure that large tables have `[header]` attributes.
* See base class in axe-audit.js for audit() implementation.
*/

import AxeAudit from './axe-audit.js';
import * as i18n from '../../lib/i18n/i18n.js';

const UIStrings = {
/** Title of an accesibility audit that evaluates if all large table elements use the headers HTML attribute. This title is descriptive of the successful state and is shown to users when no user action is required. */
title: '`<td>` elements in a large `<table>` have one or more table headers.',
/** Title of an accesibility audit that evaluates if all large table elements use the headers HTML attribute. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
failureTitle: '`<td>` elements in a large `<table>` do not have table headers.',
/** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
description: 'Screen readers have features to make navigating tables easier. Ensuring ' +
'that `<td>` elements in a large table (3 or more cells in width and height) have an ' +
'associated table header may improve the experience for screen reader users. ' +
'[Learn more about table headers](https://dequeuniversity.com/rules/axe/4.7/td-has-header).',
};

const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);

class TDHasHeader extends AxeAudit {
/**
* @return {LH.Audit.Meta}
*/
static get meta() {
return {
id: 'td-has-header',
title: str_(UIStrings.title),
failureTitle: str_(UIStrings.failureTitle),
description: str_(UIStrings.description),
requiredArtifacts: ['Accessibility'],
};
}
}

export default TDHasHeader;
export {UIStrings};
2 changes: 2 additions & 0 deletions core/config/default-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ const defaultConfig = {
'accessibility/meta-viewport',
'accessibility/object-alt',
'accessibility/tabindex',
'accessibility/td-has-header',
'accessibility/td-headers-attr',
'accessibility/th-has-data-cells',
'accessibility/valid-lang',
Expand Down Expand Up @@ -537,6 +538,7 @@ const defaultConfig = {
{id: 'meta-viewport', weight: 10, group: 'a11y-best-practices'},
{id: 'object-alt', weight: 3, group: 'a11y-names-labels'},
{id: 'tabindex', weight: 3, group: 'a11y-navigation'},
{id: 'td-has-header', weight: 10, group: 'a11y-tables-lists'},
{id: 'td-headers-attr', weight: 3, group: 'a11y-tables-lists'},
{id: 'th-has-data-cells', weight: 3, group: 'a11y-tables-lists'},
{id: 'valid-lang', weight: 3, group: 'a11y-language'},
Expand Down
2 changes: 1 addition & 1 deletion core/gather/gatherers/accessibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ async function runA11yChecks() {
'meta-viewport': {enabled: true},
'duplicate-id': {enabled: false},
'table-fake-caption': {enabled: false},
'td-has-header': {enabled: false},
'td-has-header': {enabled: true},
'marquee': {enabled: false},
'area-alt': {enabled: false},
'html-xml-lang-mismatch': {enabled: false},
Expand Down
Loading