Fix RunScript tests and update mock server domain (#35746)

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**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.
This commit is contained in:
Scott Gress 2025-11-14 09:08:37 -06:00 committed by GitHub
parent a638f18d17
commit 471cc13e3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 7 deletions

View file

@ -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(<RunScript router={createMockRouter()} currentTeamId={1} />);
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(<RunScript router={createMockRouter()} currentTeamId={1} />);
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(<RunScript router={createMockRouter()} currentTeamId={1} />);
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(<RunScript router={createMockRouter()} currentTeamId={1} />);
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();

View file

@ -39,7 +39,7 @@ const config: Config = {
setupFilesAfterEnv: ["<rootDir>/frontend/test/test-setup.ts"],
clearMocks: true,
testEnvironmentOptions: {
url: "http://localhost:8080",
url: "http://fleettest.test:9876",
customExportConditions: [""],
},
transformIgnorePatterns: [`/node_modules/(?!(${esModules})/)`],