From 1c28cae3f2aed84e9c2deff7c7fcb622bb86df2e Mon Sep 17 00:00:00 2001 From: Offending Commit Date: Wed, 3 Jun 2026 16:41:40 -0500 Subject: [PATCH] fix(ci): replace userEvent.selectOptions with fireEvent.change; bump setup-node to v6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit userEvent.selectOptions hangs in jsdom when firing pointer + change event sequences — fireEvent.change fires the React-controlled onChange directly and is deterministic. Removes userEvent import (no longer used). Bump actions/setup-node from v4 to v6 to clear the Node.js 20 deprecation warning on GitHub Actions runners. --- .github/actions/setup/action.yml | 2 +- packages/web/src/test/dashboard.test.tsx | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index e5138c6..35307e9 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -6,7 +6,7 @@ runs: steps: - uses: pnpm/action-setup@v6 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: "24" cache: pnpm diff --git a/packages/web/src/test/dashboard.test.tsx b/packages/web/src/test/dashboard.test.tsx index ae0bf29..3108a51 100644 --- a/packages/web/src/test/dashboard.test.tsx +++ b/packages/web/src/test/dashboard.test.tsx @@ -1,7 +1,6 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { createMemoryHistory, createRouter, RouterProvider } from "@tanstack/react-router"; -import { render, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; +import { fireEvent, render, screen, waitFor, within } from "@testing-library/react"; import { afterEach, describe, expect, it, vi } from "vitest"; import { DemoProvider } from "@/context/DemoContext"; import { MetadataProvider } from "@/context/MetadataContext"; @@ -77,10 +76,10 @@ describe("Dashboard — unified server-aware view", () => { it("narrows to a single server when filtered", async () => { saveStore({ instances: [neo, iris], activeId: "neo" }); - const user = userEvent.setup(); renderDashboard(); await screen.findByText("(Iris)"); - await user.selectOptions(await screen.findByLabelText("Filter by server"), "iris"); + const select = await screen.findByLabelText("Filter by server"); + fireEvent.change(select, { target: { value: "iris" } }); await waitFor(() => { expect(screen.queryByText("(Neo)")).not.toBeInTheDocument(); expect(screen.getByText("(Iris)")).toBeInTheDocument();