fix: prevent site storybook tests from hanging after completion (#23936)

The vitest process hung after all 2132 story tests passed because
leftover refetchInterval polls kept the Node.js event loop alive.
Components that set per-query refetchInterval override the
QueryClient default, causing HTTP requests through vite's proxy
to localhost:3000 (no backend) that never resolve cleanly.

Three fixes:

- preview.tsx: disable all automatic refetching defaults and cancel
  in-flight queries on story unmount via useEffect cleanup
- storybook.tsx: save/restore the original window.WebSocket in the
  withWebSocket decorator, clear pending timers in close()
- vite.config.mts: add explicit testTimeout, hookTimeout, bail, and
  retry settings to the storybook vitest project

Also fix 5 story files that imported from @testing-library/react
instead of storybook/test.
This commit is contained in:
Mathias Fredriksson
2026-04-14 12:19:55 +00:00
committed by GitHub
parent 10f0786966
commit a1ef3043bb
9 changed files with 129 additions and 63 deletions
@@ -1,7 +1,6 @@
import type { Meta, StoryObj } from "@storybook/react-vite";
import { waitFor } from "@testing-library/react";
import { useState } from "react";
import { expect, spyOn, userEvent, within } from "storybook/test";
import { expect, spyOn, userEvent, waitFor, within } from "storybook/test";
import { API } from "#/api/api";
import { MockUsers } from "#/pages/UsersPage/storybookData/users";
import { MockUserOwner } from "#/testHelpers/entities";