From b78218c4b10324c9311f077ed7e4579faeba323c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Jastrze=CC=A8bski?= Date: Thu, 30 Jan 2025 19:45:36 +0100 Subject: [PATCH 1/3] . --- examples/web-vite/src/TestList.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/web-vite/src/TestList.tsx b/examples/web-vite/src/TestList.tsx index 8671067..874acfa 100644 --- a/examples/web-vite/src/TestList.tsx +++ b/examples/web-vite/src/TestList.tsx @@ -19,11 +19,11 @@ interface ListItemProps { } const ListItem = ({ title }: ListItemProps) => { - // Uncomment to introduce a performance issue - // const [, forceRender] = React.useState(); - // React.useEffect(() => { - // forceRender({}); - // }, [title]); + // Intentionally causing an extra re-render + const [, forceRender] = React.useState(); + React.useEffect(() => { + forceRender({}); + }, [title]); return (
From fc93e6abb03422065a9db57470a7de95342b3936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Jastrze=CC=A8bski?= Date: Fri, 31 Jan 2025 14:11:43 +0100 Subject: [PATCH 2/3] . --- examples/web-vite/src/TestList.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/web-vite/src/TestList.tsx b/examples/web-vite/src/TestList.tsx index 874acfa..23e1df3 100644 --- a/examples/web-vite/src/TestList.tsx +++ b/examples/web-vite/src/TestList.tsx @@ -1,3 +1,5 @@ +import React from 'react'; + interface TestListProps { count: number; } From 76a4ea77b9c9bdaa776d255e5202a506b1680a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Jastrze=CC=A8bski?= Date: Fri, 31 Jan 2025 19:20:06 +0100 Subject: [PATCH 3/3] . --- VITEST.md | 1 + examples/web-vite/test-setup.ts | 6 ++++++ examples/web-vite/vite.config.ts | 26 +++++++++++++++++++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 VITEST.md create mode 100644 examples/web-vite/test-setup.ts diff --git a/VITEST.md b/VITEST.md new file mode 100644 index 0000000..77a0518 --- /dev/null +++ b/VITEST.md @@ -0,0 +1 @@ +time TEST_RUNNER_PATH="node_modules/.bin/vitest" TEST_RUNNER_ARGS="--poolOptions.threads.singleThread=true --maxConcurrency=1 --watch=false --pool=threads" yarn reassure --verbose diff --git a/examples/web-vite/test-setup.ts b/examples/web-vite/test-setup.ts new file mode 100644 index 0000000..66eef4d --- /dev/null +++ b/examples/web-vite/test-setup.ts @@ -0,0 +1,6 @@ +import { afterEach } from 'vitest'; +import { cleanup } from '@testing-library/react'; + +afterEach(() => { + cleanup(); +}); diff --git a/examples/web-vite/vite.config.ts b/examples/web-vite/vite.config.ts index 5a33944..900c667 100644 --- a/examples/web-vite/vite.config.ts +++ b/examples/web-vite/vite.config.ts @@ -1,7 +1,27 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], -}) + test: { + workspace: [ + { + test: { + name: 'test', + include: ['**/__tests__/*.{ts,js}', '**/*.test.{ts,tsx,js,jsx}'], + environment: 'jsdom', + }, + }, + { + test: { + name: 'perf', + include: ['**/__perf__/*.{ts,js}', '**/*.perf.{ts,tsx,js,jsx}'], + environment: 'jsdom', + }, + }, + ], + environment: 'jsdom', // Use jsdom for DOM-related tests + setupFiles: ['./test-setup.ts'], + }, +});