FN-6191: unquarantine WorkflowNodeEditor inspector test

Rescue the WorkflowNodeEditor quarantine by waiting for inspector fields before asserting.

- make the foreach inspector Mode assertion wait for the panel to finish rendering
- wait for the code node Source and Timeout inputs before editing them to avoid the inspector race
- remove WorkflowNodeEditor.test.tsx from the dashboard quarantine config and ledger

Files changed:
 .../app/components/__tests__/WorkflowNodeEditor.test.tsx          | 6 +++---
 packages/dashboard/vitest.config.ts                               | 4 +---
 scripts/lib/test-quarantine.json                                  | 8 +-------
 3 files changed, 5 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6191

Fusion-Task-Lineage: 57fb1dcc-3e50-4ba1-8488-fcff204c1d76
This commit is contained in:
gsxdsm
2026-06-10 07:11:19 -07:00
parent 49fdd8f41f
commit 529851a8fe
3 changed files with 5 additions and 13 deletions

View File

@@ -1108,7 +1108,7 @@ describe("WorkflowNodeEditor — U8 step-inversion authoring", () => {
// cold-transform shard load (observed intermittently in CI-like runs).
await waitFor(() => expect(screen.getByTestId("wf-node-foreach")).toBeInTheDocument(), { timeout: 5000 });
// The foreach inspector shows the Mode select (KTD-3).
expect(screen.getByText("Mode")).toBeInTheDocument();
await waitFor(() => expect(screen.getByText("Mode")).toBeInTheDocument());
// No empty-state hint because the palette seeded a step-execute child.
expect(screen.queryByTestId("wf-foreach-empty")).not.toBeInTheDocument();
@@ -1269,10 +1269,10 @@ describe("WorkflowNodeEditor — U8 step-inversion authoring", () => {
expect(await screen.findByTestId("wf-column-panel")).toBeInTheDocument();
fireEvent.click(screen.getByText("Code").closest("button")!);
await waitFor(() => expect(screen.getByTestId("wf-node-code")).toBeInTheDocument(), { timeout: 5000 });
const source = screen.getByText("Source (TypeScript)").parentElement!.querySelector("textarea")! as HTMLTextAreaElement;
const source = (await screen.findByText("Source (TypeScript)")).parentElement!.querySelector("textarea")! as HTMLTextAreaElement;
fireEvent.change(source, { target: { value: "export default async()=>({outcome:'success'})" } });
expect(source.value).toContain("outcome:'success'");
const timeout = screen.getByText("Timeout (ms)").parentElement!.querySelector("input")! as HTMLInputElement;
const timeout = (await screen.findByText("Timeout (ms)")).parentElement!.querySelector("input")! as HTMLInputElement;
fireEvent.change(timeout, { target: { value: "12000" } });
expect(timeout.value).toBe("12000");
});

View File

@@ -231,9 +231,7 @@ const qualityAppComponentBatchBTests = buildComponentQualityInclude(batchedQuali
const qualityAppAppOnlyTests = ["app/components/__tests__/App.test.tsx"];
const qualityAppChatOnlyTests = ["app/components/__tests__/ChatView.test.tsx"];
const qualityAppSettingsOnlyTests = ["app/components/__tests__/SettingsModal.test.tsx"];
const quarantinedDashboardTests = [
"app/components/__tests__/WorkflowNodeEditor.test.tsx",
];
const quarantinedDashboardTests: string[] = [];
const qualityApiTests = [
// Critical HTTP/server behavior: auth, task/project/settings mutation,