-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
testing-library/react: cleanup not called automatically with isolate: false
#1430
Comments
I think this is a bug with global |
Just found this same exact bug myself. If I render |
I think this behaviour exists in the |
I'm experiencing the same thing. However, for me, it doesn't work regardless of what the value of |
Not working for me even if I call |
I faced the same issue. I can confirm that adding |
When you disable Vitest doesn't recommend disabling |
In my case, i was wrapping my React component with |
I am encountering this issue with Svelte as well. However, calling import { describe, it, expect, beforeEach, afterEach } from "vitest";
import { fireEvent, render, screen, cleanup } from "@testing-library/svelte";
import ExamplePage from "./+page.svelte";
const { getByText } = screen;
describe("Example Page", () => {
beforeEach(() => {
render(ExamplePage);
});
afterEach(() => cleanup());
it("should say 'Hello!'", () => {
expect(getByText("Hello!")).not.toBeNull();
});
it("should count up", async () => {
expect(getByText("Count: 0")).not.toBeNull();
await fireEvent.click(getByText("Click Me"));
expect(getByText("Count: 1")).not.toBeNull();
await fireEvent.click(getByText("Click Me"));
await fireEvent.click(getByText("Click Me"));
await fireEvent.click(getByText("Click Me"));
await fireEvent.click(getByText("Click Me"));
expect(getByText("Count: 5")).not.toBeNull();
});
}); |
- Disabling threads causes tests to fail - See vitest-dev/vitest#1430
* Add Vite and required packages * Create vite.config.ts * Move and update index.html - Move index.html to root folder - Remove %PUBLIC_URL% references - Add Vite entry point * Update tsconfig.json * Create vite-env.d.ts * Remove react-scripts - Remove react-scripts - Delete react-app-env.d.ts * Update scripts in package.json * Update env variables * Change build output folder * Remove craco * Configure vite.config.ts for docker * Updated caniuse-lite Not necessary for vite migration, but removed warning message to update. * Upgraded react-csv Previous version was incompatible with Vite because Link component was .js file instead of .jsx * Set scss load paths * Hide uswds console notifications * Upgrade storybook * Upgrade Apollo * Fix build script * Fix Okta bug * Fix uswds theme paths * Enable css source maps * Add autoprefixer * Add autoprefixer to vite.config.ts * Add vitest * Snapshots * Remove Jest canvas mock * BusinessCaseReview test error Error: Uncaught [TypeError: Cannot read properties of null (reading 'offsetWidth')] * Upgrade Vite Multiple installed versions of vite was causing type error * Add vitest globals to tsconfig * Add vi global to .eslintrc * Replace jest global with vi * Set global timezone - Renamed jest-global-setup.js to global-setup.js - Set timezone to UTC in global-setup.js - Added globalSetup file to vite.config.ts * Mock getTrbRequestDocumentsQuery - Added mocked query to src/data/mock/trbRequest.ts - Fixed missing mock query error in Consult.test.tsx * Snapshots * Added Vitest UI package * Added vitest:ui Opens unit tests in Vitest UI * Removed jest-launchdarkly-references * Fix createObjectURL JSDOM error - Fixes error from react-csv: "TypeError: The "obj" argument must be an instance of Blob. Received an instance of Blob" - JSDOM does not support window.URL.createObjectURL, so needed to mock in setupTests.ts * Clay changes for vitest canvas mock, WIP, non functional * Fix navigationBar test * Fix setupTests typeError * Fix Header unit test errors - Fixed typo - Wrapped component in Provider - Updated to async function * Enable threads - Disabling threads causes tests to fail - See vitest-dev/vitest#1430 * Fix flaky TRB Consult test Test randomly threw error that no more mocked responses were available for getTRBRequestAttendeesQuery. Duplicating the query in the mocks array fixed this. * Skip Tabs test * Snapshots * Update yarn.lock * Update snapshot * Remove unit tests that render Okta signin widget * Remove vitest-canvas-mock * Add role attribute to csv download link byRole queries in unit tests were not recognizing csv download links as links because the href prop isn't set. Explicitly setting "role=link" solved this. * Fix "cannot find offset width of null" error * Fix unit test classlist argument error * Remove vitest UI * Fix references to REACT_APP_ env vars that have not yet been converted to use VITE_ * Enable test coverage when running yarn test:coverage with v8. See https://vitest.dev/guide/coverage.html for info * Fix cypress plugins env variables bug Changed import.meta.env to process.env * Add cypress-vite - Removed cypress/webpack-preprocessor - Added cypress-vite * Cypress-vite config updates * Empty commit * Debug file:preprocessor * Upgrade Cypress * Comment out tests that import app code * Comment out missed suite with imports * Re-introduce webpack for Cypress * Uncomment tests * Cleanup - Removed commented out debug code - Uncommented e2e test code * Enable cypress video * Set long timeout on Okta login * Try clicking multiple times * Try clicking multiple times * Upgrade okta-signin-widget from 6 to 7 * Undo multi click in Cypress * import css from okta widget using exported path. Add commonjsOptions to transform require to import in imported modules * Remove extra setting of VITE_OKTA_REDIRECT_URI * Remove references to craco, add ADR * Remove unused packages. Add comments, remove TODO comments. --------- Co-authored-by: ClayBenson94 <clay.benson@oddball.io>
I ran into this same issue, but adding In other words, if you only have I think this points to something funky with how Vitest is handling Visual example of what i mean: describe("level 1", () => {
beforeEach(async () => {
render(
// ...
);
});
afterEach(() => {
// this is necessary
cleanup();
});
describe("level 2", () => {
beforeEach(() => {
// ...
});
afterEach(() => {
// this is also necessary
cleanup();
});
// ...
});
}); |
threads: false
isolate: false
This is not true. The As a team, we decided that we would not try to find ways to fix this behavior in Vitest. Caching the Cached |
Describe the bug
Using
@testing-library/react
withthreads
set tofalse
in myvite.config.ts
, some of my tests are failing with "Found multiple elements" errors.After some digging, I found I just had to run RTL's
cleanup
function manually to get things to work. However, I don't have to do this if I setthreads
totrue
. Also, on RTL's docs forcleanup
, it says:I have globals enabled, so the conditions for running
cleanup
automatically should be met. 🤔 So it seems likethreads: false
is interfering with something, perhaps.Here's full output from running my tests. 👇 The output shows the JSX from the several cases having run, but the element structure shouldn't all be there at the same time.
Reproduction
See https://github.com/zrev2220/vitest-rtl-cleanup-bug.
Tests fail when running
npm test
(ornpm run test
). If you runnpm run test -- --threads=true
to enable threads, the tests will succeed.In that repo, I added code to call
cleanup
manually on the branchmanual-cleanup
. If you checkout this branch and runnpm test
, the tests will pass now.System Info
Used Package Manager
npm
Validations
The text was updated successfully, but these errors were encountered: