From 2018c983470ceb528700ec8e6e069a4d6103bb52 Mon Sep 17 00:00:00 2001 From: Steven Lambert Date: Wed, 6 May 2020 16:51:29 -0600 Subject: [PATCH 1/3] feat(duplicate-img-label): add option for parentSelector --- lib/checks/label/duplicate-img-label-evaluate.js | 16 +++++++--------- test/checks/label/duplicate-img-label.js | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/checks/label/duplicate-img-label-evaluate.js b/lib/checks/label/duplicate-img-label-evaluate.js index 8e04752b25..4f6e74ab96 100644 --- a/lib/checks/label/duplicate-img-label-evaluate.js +++ b/lib/checks/label/duplicate-img-label-evaluate.js @@ -1,23 +1,21 @@ import { getRole } from '../../commons/aria'; import { visibleVirtual, accessibleTextVirtual } from '../../commons/text'; -import { findUpVirtual } from '../../commons/dom'; -import { getNodeFromTree } from '../../core/utils'; +import { closest } from '../../core/utils'; -function duplicateImgLabelEvaluate(node, options, virtualNode) { +function duplicateImgLabelEvaluate(node, options = {}, virtualNode) { if (['none', 'presentation'].includes(getRole(node))) { return false; } - const parent = findUpVirtual( - virtualNode, - 'button, [role="button"], a[href], p, li, td, th' - ); + const { + parentSelector = 'button, [role="button"], a[href], p, li, td, th' + } = options; + const parentVNode = closest(virtualNode, parentSelector); - if (!parent) { + if (!parentVNode) { return false; } - const parentVNode = getNodeFromTree(parent); const visibleText = visibleVirtual(parentVNode, true).toLowerCase(); if (visibleText === '') { return false; diff --git a/test/checks/label/duplicate-img-label.js b/test/checks/label/duplicate-img-label.js index fb2fc34ed7..feb6aa1a4d 100644 --- a/test/checks/label/duplicate-img-label.js +++ b/test/checks/label/duplicate-img-label.js @@ -119,6 +119,20 @@ describe('duplicate-img-label', function() { ); }); + it('should support a options.parentSelector', function() { + fixture.innerHTML = + '
Plain text
'; + var node = fixture.querySelector('#target'); + axe.testUtils.flatTreeSetup(fixture); + assert.isFalse( + checks['duplicate-img-label'].evaluate( + node, + { parentSelector: 'div' }, + axe.utils.getNodeFromTree(node) + ) + ); + }); + (shadowSupport.v1 ? it : xit)( 'should return true if the img is part of a shadow tree', function() { From 91ab7b36d60b78f5627d5db10eaa0b6535145877 Mon Sep 17 00:00:00 2001 From: Steven Lambert Date: Tue, 12 May 2020 10:17:01 -0600 Subject: [PATCH 2/3] move options to metadata file --- lib/checks/label/duplicate-img-label-evaluate.js | 8 ++------ lib/checks/label/duplicate-img-label.json | 3 +++ test/checks/label/duplicate-img-label.js | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/checks/label/duplicate-img-label-evaluate.js b/lib/checks/label/duplicate-img-label-evaluate.js index 4f6e74ab96..f8b786c186 100644 --- a/lib/checks/label/duplicate-img-label-evaluate.js +++ b/lib/checks/label/duplicate-img-label-evaluate.js @@ -2,15 +2,11 @@ import { getRole } from '../../commons/aria'; import { visibleVirtual, accessibleTextVirtual } from '../../commons/text'; import { closest } from '../../core/utils'; -function duplicateImgLabelEvaluate(node, options = {}, virtualNode) { +function duplicateImgLabelEvaluate(node, options, virtualNode) { if (['none', 'presentation'].includes(getRole(node))) { return false; } - - const { - parentSelector = 'button, [role="button"], a[href], p, li, td, th' - } = options; - const parentVNode = closest(virtualNode, parentSelector); + const parentVNode = closest(virtualNode, options.parentSelector); if (!parentVNode) { return false; diff --git a/lib/checks/label/duplicate-img-label.json b/lib/checks/label/duplicate-img-label.json index 28bc29ef60..938996544e 100644 --- a/lib/checks/label/duplicate-img-label.json +++ b/lib/checks/label/duplicate-img-label.json @@ -1,6 +1,9 @@ { "id": "duplicate-img-label", "evaluate": "duplicate-img-label-evaluate", + "options": { + "parentSelector": "button, [role=button], a[href], p, li, td, th" + }, "metadata": { "impact": "minor", "messages": { diff --git a/test/checks/label/duplicate-img-label.js b/test/checks/label/duplicate-img-label.js index 262069ea72..69f6bed086 100644 --- a/test/checks/label/duplicate-img-label.js +++ b/test/checks/label/duplicate-img-label.js @@ -125,7 +125,7 @@ describe('duplicate-img-label', function() { var node = fixture.querySelector('#target'); axe.testUtils.flatTreeSetup(fixture); assert.isFalse( - checks['duplicate-img-label'].evaluate( + axe.testUtils.getCheckEvaluate('duplicate-img-label')( node, { parentSelector: 'div' }, axe.utils.getNodeFromTree(node) From 973b3475bd3e7ed102c61732aaaea7e34b345c64 Mon Sep 17 00:00:00 2001 From: Steven Lambert Date: Tue, 12 May 2020 10:17:47 -0600 Subject: [PATCH 3/3] typo --- test/checks/label/duplicate-img-label.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/checks/label/duplicate-img-label.js b/test/checks/label/duplicate-img-label.js index 69f6bed086..20fe667ef5 100644 --- a/test/checks/label/duplicate-img-label.js +++ b/test/checks/label/duplicate-img-label.js @@ -119,7 +119,7 @@ describe('duplicate-img-label', function() { ); }); - it('should support a options.parentSelector', function() { + it('should support options.parentSelector', function() { fixture.innerHTML = '
Plain text
'; var node = fixture.querySelector('#target');