mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-06 03:13:42 -05:00
Doing this was helpful to Voiceover users as its announcement of the label meant the page title (normally announced onload) wasn't skipped. This isn't the case with JAWS so, prefixing the title makes it announce it twice. JAWS has a lot more users and the title being announced twice is more confusing than not at all so this removes it.
81 lines
1.8 KiB
JavaScript
81 lines
1.8 KiB
JavaScript
const helpers = require('./support/helpers.js');
|
|
|
|
beforeAll(() => {
|
|
require('../../app/assets/javascripts/autofocus.js');
|
|
});
|
|
|
|
afterAll(() => {
|
|
require('./support/teardown.js');
|
|
});
|
|
|
|
describe('Autofocus', () => {
|
|
|
|
const labelText = 'Search by name';
|
|
let focusHandler;
|
|
let search;
|
|
|
|
beforeEach(() => {
|
|
|
|
document.title = 'Find services by name - GOV.UK Notify';
|
|
|
|
// set up DOM
|
|
document.body.innerHTML =
|
|
`<div>
|
|
<label class="form-label" for="search">
|
|
${labelText}
|
|
</label>
|
|
<input autocomplete="off" class="form-control form-control-1-1" id="search" name="search" type="search" value="" data-module="autofocus">
|
|
</div>`;
|
|
|
|
focusHandler = jest.fn();
|
|
search = document.getElementById('search');
|
|
search.addEventListener('focus', focusHandler, false);
|
|
|
|
});
|
|
|
|
afterEach(() => {
|
|
|
|
document.body.innerHTML = '';
|
|
search.removeEventListener('focus', focusHandler);
|
|
focusHandler = null;
|
|
|
|
});
|
|
|
|
test('is focused when modules start', () => {
|
|
|
|
// start module
|
|
window.GOVUK.modules.start();
|
|
|
|
expect(focusHandler).toHaveBeenCalled();
|
|
|
|
});
|
|
|
|
test('is not focused if the window has scrolled', () => {
|
|
|
|
// mock the window being scrolled 25px
|
|
$.prototype.scrollTop = jest.fn(() => 25);
|
|
|
|
// start module
|
|
window.GOVUK.modules.start();
|
|
|
|
expect(focusHandler).not.toHaveBeenCalled();
|
|
|
|
});
|
|
|
|
test('is focused if the window has scrolled but the force-focus flag is set', () => {
|
|
|
|
// mock the window being scrolled 25px
|
|
$.prototype.scrollTop = jest.fn(() => 25);
|
|
|
|
// set the force-focus flag
|
|
document.querySelector('#search').setAttribute('data-force-focus', true);
|
|
|
|
// start module
|
|
window.GOVUK.modules.start();
|
|
|
|
expect(focusHandler).toHaveBeenCalled();
|
|
|
|
});
|
|
|
|
});
|