import { fireEvent, type RenderResult, render, screen, waitFor, } from "../../test/testRenderer"; import Wizard from "."; const renderWizardThreeSteps = (): RenderResult => render(
Step 1
, skipFormChangeCheck: true, stepName: "step label 1", }, { Component: (): JSX.Element =>
Step 2
, skipFormChangeCheck: true, stepName: "step label 2", }, { Component: (): JSX.Element =>
Step 3
, skipFormChangeCheck: true, stepName: "step label 3", }, ]} />, ); const renderWizardOneStep = (): RenderResult => render(
Step 1
, skipFormChangeCheck: true, stepName: "step label 1", }, ]} />, ); describe(Wizard, () => { it("displays the step labels", () => { renderWizardThreeSteps(); expect(screen.getByText("step label 1")).toBeInTheDocument(); expect(screen.getByText("step label 2")).toBeInTheDocument(); expect(screen.getByText("step label 3")).toBeInTheDocument(); }); it("does not display the step labels when there is only one step", () => { renderWizardOneStep(); expect(screen.queryByText("step label 1")).not.toBeInTheDocument(); }); it("navigates between steps", async () => { renderWizardThreeSteps(); fireEvent.click(screen.getByText("Next")); await waitFor(() => { expect(screen.getByText("Step 2")).toBeInTheDocument(); }); fireEvent.click(screen.getByText("Previous")); await waitFor(() => { expect(screen.getByText("Step 1")).toBeInTheDocument(); }); }); });