Skip to content

Commit

Permalink
tests: add test for svg-img-alt for serial nodes (#2401)
Browse files Browse the repository at this point in the history
* tests: add test for svg-img-alt for serial nodes

* typo
  • Loading branch information
straker authored Jul 20, 2020
1 parent d7ba70f commit bda2cd5
Show file tree
Hide file tree
Showing 3 changed files with 179 additions and 6 deletions.
12 changes: 6 additions & 6 deletions lib/checks/shared/svg-non-empty-title-evaluate.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import visibleVirtual from '../../commons/text/visible-virtual';

function svgNonEmptyTitleEvaluate(node, options, virtualNode) {
if (!virtualNode.children) {
try {
const titleNode = virtualNode.children.find(({ props }) => {
return props.nodeName === 'title';
});
return !!titleNode && visibleVirtual(titleNode) !== '';
} catch (e) {
return undefined;
}

const titleNode = virtualNode.children.find(({ props }) => {
return props.nodeName === 'title';
});
return !!titleNode && visibleVirtual(titleNode) !== '';
}

export default svgNonEmptyTitleEvaluate;
1 change: 1 addition & 0 deletions test/integration/virtual-rules/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
<script src="aria-toggle-field-name.js"></script>
<script src="aria-input-field-name.js"></script>
<script src="area-alt.js"></script>
<script src="svg-img-alt.js"></script>
<script src="role-img-alt.js"></script>
<script src="/test/integration/adapter.js"></script>
</body>
Expand Down
172 changes: 172 additions & 0 deletions test/integration/virtual-rules/svg-img-alt.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
describe('svg-img-alt', function() {
it('should pass for aria-label', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img',
'aria-label': 'foobar'
}
});

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});

it('should incomplete for aria-labelledby', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'graphics-document',
'aria-labelledby': 'foobar'
}
});

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 1);
});

it('should pass for title', function() {
var parent = new axe.SerialVirtualNode({
nodeName: 'svg'
});
var node = new axe.SerialVirtualNode({
nodeName: 'circle',
attributes: {
role: 'graphics-symbol',
title: 'foobar'
}
});

// children are required since titleText comes after subtree text
// in accessible name calculation
node.children = [];
node.parent = parent;
parent.children = [node];

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});

it('should pass for title element', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img'
}
});
var title = new axe.SerialVirtualNode({
nodeName: 'title'
});
var text = new axe.SerialVirtualNode({
nodeName: '#text',
nodeType: 3,
nodeValue: 'foobar'
});

title.children = [text];
title.parent = node;
node.children = [title];

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});

it('should incomplete when aria-label and children are missing', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img'
}
});

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 1);
});

it('should fail when aria-label contains only whitespace', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img',
'aria-label': ' \t \n '
}
});
node.children = [];

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 1);
assert.lengthOf(results.incomplete, 0);
});

it('should fail when aria-label is empty', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img',
'aria-label': ''
}
});
node.children = [];

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 1);
assert.lengthOf(results.incomplete, 0);
});

it('should fail when title is empty', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img',
title: ''
}
});
node.children = [];

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 1);
assert.lengthOf(results.incomplete, 0);
});

it('should incomplete when title element has missing children', function() {
var node = new axe.SerialVirtualNode({
nodeName: 'svg',
attributes: {
role: 'img'
}
});
var title = new axe.SerialVirtualNode({
nodeName: 'title'
});

title.parent = node;
node.children = [title];

var results = axe.runVirtualRule('svg-img-alt', node);

assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 1);
});
});

0 comments on commit bda2cd5

Please sign in to comment.