diff --git a/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.mjs b/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.mjs index 03829361ff..3db297fa93 100644 --- a/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.mjs +++ b/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.mjs @@ -90,7 +90,11 @@ export class ExitThisPage extends GOVUKFrontendComponent { const $button = $module.querySelector('.govuk-exit-this-page__button') if (!($button instanceof HTMLElement)) { - return this + throw new ElementError($button, { + componentName: 'Exit this page', + identifier: 'Button', + expectedType: HTMLElement + }) } this.config = mergeConfigs( diff --git a/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.puppeteer.test.js b/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.puppeteer.test.js index 2dd039d5c9..e578d813ce 100644 --- a/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.puppeteer.test.js +++ b/packages/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.puppeteer.test.js @@ -237,6 +237,20 @@ describe('/components/exit-this-page', () => { message: 'Exit this page: $module is not an instance of "HTMLElement"' }) }) + + it('throws when the button is missing', async () => { + await expect( + renderAndInitialise(page, 'exit-this-page', { + params: examples.default, + beforeInitialisation($module) { + $module.querySelector('.govuk-exit-this-page__button').remove() + } + }) + ).rejects.toEqual({ + name: 'ElementError', + message: 'Exit this page: Button not found' + }) + }) }) }) })