UNPKG

accessibility-developer-tools

Version:

This is a library of accessibility-related testing and utility code.

237 lines (210 loc) 7.99 kB
module('LowContrast'); test('No text = no relevant elements', function(assert) { var fixture = document.getElementById('qunit-fixture'); var div = document.createElement('div'); div.style.backgroundColor = 'white'; div.style.color = 'white'; fixture.appendChild(div); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('Black on white = no problem', function(assert) { var fixture = document.getElementById('qunit-fixture'); var div = document.createElement('div'); div.style.backgroundColor = 'white'; div.style.color = 'black'; div.textContent = 'Some text'; fixture.appendChild(div); var config = { ruleName: 'lowContrastElements', elements: [], expected: axs.constants.AuditResult.PASS }; assert.runRule(config); }); test('Low contrast = fail', function(assert) { var fixture = document.getElementById('qunit-fixture'); var div = document.createElement('div'); div.style.backgroundColor = 'white'; div.style.color = '#aaa'; // Contrast ratio = 2.32 div.textContent = 'Some text'; fixture.appendChild(div); var config = { ruleName: 'lowContrastElements', elements: [div], expected: axs.constants.AuditResult.FAIL }; assert.runRule(config); }); test('Opacity is handled', function(assert) { // Setup fixture var fixture = document.getElementById('qunit-fixture'); var elementWithOpacity = document.createElement('div'); elementWithOpacity.style.opacity = '0.4'; elementWithOpacity.textContent = 'Some text'; fixture.appendChild(elementWithOpacity); var config = { ruleName: 'lowContrastElements', elements: [elementWithOpacity], expected: axs.constants.AuditResult.FAIL }; assert.runRule(config); }); test('Uses tolerance value', function(assert) { var fixture = document.getElementById('qunit-fixture'); var div = document.createElement('div'); div.style.backgroundColor = 'white'; div.style.color = '#777'; // Contrast ratio = 4.48 div.textContent = 'Some text'; fixture.appendChild(div); var config = { ruleName: 'lowContrastElements', elements: [], expected: axs.constants.AuditResult.PASS }; assert.runRule(config); }); test('Disabled button = no relevant elements', function(assert) { var fixture = document.getElementById('qunit-fixture'); var button = document.createElement('button'); button.textContent = 'I Can Has Cheezburger?'; button.setAttribute('disabled', 'disabled'); fixture.appendChild(button); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('aria-disabled button = no relevant elements', function(assert) { var fixture = document.getElementById('qunit-fixture'); var button = document.createElement('button'); button.textContent = 'I Can Has Cheezburger?'; button.setAttribute('aria-disabled', 'true'); fixture.appendChild(button); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('aria-disabled=false button = pass', function(assert) { var fixture = document.getElementById('qunit-fixture'); var button = document.createElement('button'); button.textContent = 'I Can Has Cheezburger?'; button.setAttribute('aria-disabled', 'false'); fixture.appendChild(button); var config = { ruleName: 'lowContrastElements', elements: [], expected: axs.constants.AuditResult.PASS }; assert.runRule(config); }); test('Button in disabled fieldset = no relevant elements', function(assert) { var fixture = document.getElementById('qunit-fixture'); var container = document.createElement('fieldset'); container.setAttribute('disabled', 'disabled'); var button = container.appendChild(document.createElement('button')); button.textContent = 'I Can Has Cheezburger?'; fixture.appendChild(container); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('Button in disabled=false fieldset = no relevant elements', function(assert) { var fixture = document.getElementById('qunit-fixture'); var container = document.createElement('fieldset'); container.setAttribute('disabled', 'false'); // check that the value of disabled is irrelevant var button = container.appendChild(document.createElement('button')); button.textContent = 'I Can Has Cheezburger?'; fixture.appendChild(container); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('Button in aria-disabled container = no relevant elements', function(assert) { var fixture = document.getElementById('qunit-fixture'); var container = document.createElement('div'); container.setAttribute('role', 'group'); container.setAttribute('aria-disabled', 'true'); var legend = container.appendChild(document.createElement('legend')); legend.textContent = 'I am Legend'; var button = container.appendChild(document.createElement('button')); button.textContent = 'I Can Has Cheezburger?'; fixture.appendChild(container); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('Crazy button in disabled fieldset legend test = relevant elements', function(assert) { /* * Test this bit of the spec: * The disabled attribute, when specified, causes all the form control descendants of the fieldset element, * excluding those that are descendants of the fieldset element's first legend element child, if any, * to be disabled. * @see http://www.w3.org/TR/html5/forms.html#attr-fieldset-disabled */ var fixture = document.getElementById('qunit-fixture'); var container = document.createElement('fieldset'); container.setAttribute('disabled', 'disabled'); var legend = container.appendChild(document.createElement('legend')); var button = legend.appendChild(document.createElement('button')); button.textContent = 'I Can Has Cheezburger?'; fixture.appendChild(container); var config = { ruleName: 'lowContrastElements', elements: [], expected: axs.constants.AuditResult.PASS }; assert.runRule(config); }); test('Even crazier button in disabled fieldset second legend test = no relevant elements', function(assert) { /* * Test this bit of the spec: * The disabled attribute, when specified, causes all the form control descendants of the fieldset element, * excluding those that are descendants of the fieldset element's first legend element child, if any, * to be disabled. * @see http://www.w3.org/TR/html5/forms.html#attr-fieldset-disabled */ var fixture = document.getElementById('qunit-fixture'); var container = document.createElement('fieldset'); container.setAttribute('disabled', 'disabled'); var legend = container.appendChild(document.createElement('legend')); legend = container.appendChild(document.createElement('legend')); var button = legend.appendChild(document.createElement('button')); button.textContent = 'I Can Has Cheezburger?'; fixture.appendChild(container); var config = { ruleName: 'lowContrastElements', expected: axs.constants.AuditResult.NA }; assert.runRule(config); }); test('Low contrast, disabled on undisableable = fail', function(assert) { var fixture = document.getElementById('qunit-fixture'); var div = document.createElement('div'); div.setAttribute('disabled', 'disabled'); div.setAttribute('role', 'checkbox'); div.tabIndex = 0; div.disabled = true; div.style.backgroundColor = 'white'; div.style.color = 'white'; div.textContent = 'Some text'; fixture.appendChild(div); var config = { ruleName: 'lowContrastElements', elements: [div], expected: axs.constants.AuditResult.FAIL }; assert.runRule(config); });