diff --git a/src/components/form/Form.test.tsx b/src/components/form/Form.test.tsx index 5b71a27..1a413fe 100644 --- a/src/components/form/Form.test.tsx +++ b/src/components/form/Form.test.tsx @@ -44,7 +44,7 @@ describe(Form.name, () => { ({ container } = render()); form = screen.getByRole("form"); - liveRegion = screen.getByTestId("live-region"); + liveRegion = screen.getByTestId("form-live-region"); }); test("has no AxE violations", async () => { @@ -83,7 +83,7 @@ describe(Form.name, () => { render( nameErrorMessage}/>); form = screen.getByRole("form"); - liveRegion = screen.getByTestId("live-region"); + liveRegion = screen.getByTestId("form-live-region"); nameInput = within(form).getByRole("textbox", { name: "Name" }); ageInput = within(form).getByRole("textbox", { name: "Age" }); @@ -132,7 +132,7 @@ describe(Form.name, () => { render(); form = screen.getByRole("form"); - liveRegion = screen.getByTestId("live-region"); + liveRegion = screen.getByTestId("form-live-region"); nameInput = within(form).getByRole("textbox", { name: "Name" }); ageInput = within(form).getByRole("textbox", { name: "Age" }); @@ -265,4 +265,4 @@ const FormWithInputs = (props: { validator?: Validator }) => { ); -}; \ No newline at end of file +}; diff --git a/src/components/form/Form.tsx b/src/components/form/Form.tsx index abc2d1c..7aa628c 100644 --- a/src/components/form/Form.tsx +++ b/src/components/form/Form.tsx @@ -68,12 +68,13 @@ export const Form = ({ children, ariaLabelledBy, submitEndpoint, successMessage }, [postFormData, onSubmitObservable]); return (
- {showSuccessMessage && + {showSuccessMessage && + } {errorMessage && + ref={responseMessage} className={"error"}/> }
@@ -81,7 +82,7 @@ export const Form = ({ children, ariaLabelledBy, submitEndpoint, successMessage {children} -
+
{submitting && Submitting...}
@@ -99,4 +100,4 @@ function extractFormData(form: HTMLFormElement) { } return output; -} \ No newline at end of file +} diff --git a/src/pages/Page.test.tsx b/src/pages/Page.test.tsx index 0dc1a80..de606f2 100644 --- a/src/pages/Page.test.tsx +++ b/src/pages/Page.test.tsx @@ -18,6 +18,7 @@ describe(Page.name, () => { }); describe("under normal conditions", () => { + let liveRegion: HTMLDivElement; beforeEach(() => { render( @@ -27,6 +28,7 @@ describe(Page.name, () => { ); + }); test("sets the document title", () => { @@ -42,6 +44,12 @@ describe(Page.name, () => { expect(documentStateUpdated).toBe(true); }); }); + + test("displays an empty live region on mount", () => { + liveRegion = screen.getByTestId("page-live-region"); + expect(liveRegion).toHaveAttribute("aria-live", "polite"); + expect(liveRegion.textContent).toBe(""); + }); }); describe("under error conditions", () => { @@ -104,4 +112,4 @@ const ContextProvider = ({ children, freshDocument }: { freshDocument: boolean } {children} ); -}; \ No newline at end of file +}; diff --git a/src/pages/Page.tsx b/src/pages/Page.tsx index fc1b4cd..94f7bf9 100644 --- a/src/pages/Page.tsx +++ b/src/pages/Page.tsx @@ -28,6 +28,7 @@ export const Page = ({ title, children }: PageProps) => {
{children} +
); }; @@ -57,4 +58,4 @@ const HeadingCheck = () => { return (<> {error && process.env.NODE_ENV !== "production" && } ); -}; \ No newline at end of file +};