From 471cc13e3d94efb708787773dbff3a8c0594b574 Mon Sep 17 00:00:00 2001 From: Scott Gress Date: Fri, 14 Nov 2025 09:08:37 -0600 Subject: [PATCH] Fix RunScript tests and update mock server domain (#35746) **Related issue:** Resolves #35730 # Details * Unskipped and updated the RunScript (setup experience scripts UI) tests to check for loading spinner, wait for it to disappear, and then check for relevant items for test. * Updated the mock server URL so that if a handler is missing in a test, it won't accidentally be served by a local Fleet server (unless someone intentionally starts a server on `fleettest.test:9876`). # Checklist for submitter ## Testing - [X] Added/updated automated tests - [X] QA'd all new/changed functionality manually * Ran all tests locally without Fleet server running, verified they passed. * Removed one of the "get team" handlers from the RunScript tests, verified that it now fails even with Fleet server running. --- .../cards/RunScript/RunScript.tests.tsx | 41 ++++++++++++++++--- frontend/test/jest.config.ts | 2 +- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/frontend/pages/ManageControlsPage/SetupExperience/cards/RunScript/RunScript.tests.tsx b/frontend/pages/ManageControlsPage/SetupExperience/cards/RunScript/RunScript.tests.tsx index d6cb04f312..0bf7207aff 100644 --- a/frontend/pages/ManageControlsPage/SetupExperience/cards/RunScript/RunScript.tests.tsx +++ b/frontend/pages/ManageControlsPage/SetupExperience/cards/RunScript/RunScript.tests.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { screen } from "@testing-library/react"; +import { screen, waitFor } from "@testing-library/react"; import mockServer from "test/mock-server"; import { createCustomRenderer, createMockRouter } from "test/test-utils"; @@ -8,14 +8,13 @@ import { errorNoSetupExperienceScriptHandler, } from "test/handlers/setup-experience-handlers"; import { createGetConfigHandler } from "test/handlers/config-handlers"; +import { createGetTeamHandler } from "test/handlers/team-handlers"; import { createMockMdmConfig } from "__mocks__/configMock"; import RunScript from "./RunScript"; -// eslint-disable-next-line jest/no-disabled-tests -describe.skip("RunScript", () => { - // skipped until https://github.com/fleetdm/fleet/issues/35730 is fixed +describe("RunScript", () => { it("should render the 'turn on automatic enrollment' message when MDM isn't configured", async () => { mockServer.use(errorNoSetupExperienceScriptHandler); mockServer.use( @@ -23,16 +22,24 @@ describe.skip("RunScript", () => { mdm: createMockMdmConfig({ enabled_and_configured: false }), }) ); + mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); - + expect(screen.getByTestId("spinner")).toBeVisible(); + expect( + screen.queryByText(/turn on automatic enrollment/) + ).not.toBeInTheDocument(); + await waitFor(async () => { + expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); + }); expect( screen.getByText(/turn on automatic enrollment/) ).toBeInTheDocument(); }); + it("should render the 'turn on automatic enrollment' message when MDM is configured but not ABM", async () => { mockServer.use(errorNoSetupExperienceScriptHandler); mockServer.use( @@ -43,37 +50,59 @@ describe.skip("RunScript", () => { }), }) ); + mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); + expect(screen.getByTestId("spinner")).toBeVisible(); + expect( + screen.queryByText(/turn on automatic enrollment/) + ).not.toBeInTheDocument(); + await waitFor(async () => { + expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); + }); expect( screen.getByText(/turn on automatic enrollment/) ).toBeInTheDocument(); }); + it("should render the script uploader when no script has been uploaded", async () => { mockServer.use(errorNoSetupExperienceScriptHandler); mockServer.use(createGetConfigHandler()); + mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); - + expect(screen.getByTestId("spinner")).toBeVisible(); + expect(screen.queryByLabelText("Upload")).not.toBeInTheDocument(); + await waitFor(async () => { + expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); + }); expect(await screen.findByRole("button", { name: "Upload" })).toBeVisible(); }); it("should render the uploaded script uploader when a script has been uploaded", async () => { mockServer.use(createSetupExperienceScriptHandler()); mockServer.use(createGetConfigHandler()); + mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); + expect(screen.getByTestId("spinner")).toBeVisible(); + expect( + screen.queryByText("Script will run during setup:") + ).not.toBeInTheDocument(); + await waitFor(async () => { + expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); + }); expect( await screen.findByText("Script will run during setup:") ).toBeVisible(); diff --git a/frontend/test/jest.config.ts b/frontend/test/jest.config.ts index c587a302cd..c75ae8d0d3 100644 --- a/frontend/test/jest.config.ts +++ b/frontend/test/jest.config.ts @@ -39,7 +39,7 @@ const config: Config = { setupFilesAfterEnv: ["/frontend/test/test-setup.ts"], clearMocks: true, testEnvironmentOptions: { - url: "http://localhost:8080", + url: "http://fleettest.test:9876", customExportConditions: [""], }, transformIgnorePatterns: [`/node_modules/(?!(${esModules})/)`],