From 82e51bc38f6eca33944b4b8006a9140067b44c5a Mon Sep 17 00:00:00 2001 From: Marcy Sutton Date: Fri, 30 Jun 2017 12:22:11 -0700 Subject: [PATCH] fix: use virtualNode in duplicate-img-label Closes https://github.com/dequelabs/axe-core/issues/386 --- lib/checks/label/duplicate-img-label.js | 2 +- test/checks/label/duplicate-img-label.js | 26 ++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/checks/label/duplicate-img-label.js b/lib/checks/label/duplicate-img-label.js index 7e1062553e..d184c572c2 100644 --- a/lib/checks/label/duplicate-img-label.js +++ b/lib/checks/label/duplicate-img-label.js @@ -1,5 +1,5 @@ var imgs = node.querySelectorAll('img'); -var text = axe.commons.text.visible(node, true).toLowerCase(); +var text = axe.commons.text.visible(virtualNode, true).toLowerCase(); if (text === '') { return false; diff --git a/test/checks/label/duplicate-img-label.js b/test/checks/label/duplicate-img-label.js index 9ef3b50d4d..737bdc0122 100644 --- a/test/checks/label/duplicate-img-label.js +++ b/test/checks/label/duplicate-img-label.js @@ -5,53 +5,63 @@ describe('duplicate-img-label', function () { afterEach(function () { fixture.innerHTML = ''; + axe._tree = undefined; }); it('should return false if no img is present', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isFalse(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isFalse(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); it('should return false if no text is present', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isFalse(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + var result = checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node)); + assert.isFalse(result); }); it('should return false if aria-label duplicates img alt', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isFalse(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isFalse(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); it('should return false if img and text have different text', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isFalse(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isFalse(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); it('should return true if img and text have the same text', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isTrue(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isTrue(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); it('should return true if img has ARIA label with the same text', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isTrue(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isTrue(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); it('should return false if img and text are both blank', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isFalse(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isFalse(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); it('should return false if img and text have superset/subset text', function () { fixture.innerHTML = ''; var node = fixture.querySelector('#target'); - assert.isFalse(checks['duplicate-img-label'].evaluate(node)); + var tree = axe._tree = axe.utils.getFlattenedTree(fixture); + assert.isFalse(checks['duplicate-img-label'].evaluate(node, undefined, axe.utils.getNodeFromTree(tree[0], node))); }); });