Repository: vitest-dev/vitest Branch: main Commit: 0685b6f02757 Files: 2731 Total size: 7.8 MB Directory structure: gitextract_qnymewnt/ ├── .claude/ │ └── agents/ │ └── vitest-test-writer.md ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── docs.yml │ │ └── feature_request.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── setup-and-cache/ │ │ │ └── action.yml │ │ └── setup-playwright/ │ │ └── action.yml │ ├── commit-convention.md │ ├── copilot-instructions.md │ ├── renovate.json5 │ └── workflows/ │ ├── ci.yml │ ├── cr.yml │ ├── ecosystem-ci-trigger.yml │ ├── issue-close-require.yml │ ├── issue-labeled.yml │ ├── lock-closed-issues.yml │ └── publish.yml ├── .gitignore ├── .npmrc ├── .tazerc.json ├── .vscode/ │ ├── extensions.json │ ├── settings.json │ └── tasks.json ├── AGENTS.md ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.json ├── LICENSE ├── README.md ├── SECURITY.md ├── docs/ │ ├── .vitepress/ │ │ ├── blog.data.ts │ │ ├── components/ │ │ │ ├── Advanced.vue │ │ │ ├── ArrowDown.vue │ │ │ ├── BlogIndex.vue │ │ │ ├── Box.vue │ │ │ ├── CRoot.vue │ │ │ ├── CourseLink.vue │ │ │ ├── Deprecated.vue │ │ │ ├── Experimental.vue │ │ │ ├── FeaturesList.vue │ │ │ ├── HomePage.vue │ │ │ ├── ListItem.vue │ │ │ └── Version.vue │ │ ├── config.ts │ │ ├── contributors.ts │ │ ├── meta.ts │ │ ├── scripts/ │ │ │ ├── cli-generator.ts │ │ │ ├── fetch-avatars.ts │ │ │ ├── pwa.ts │ │ │ └── transformHead.ts │ │ ├── sponsors.ts │ │ └── theme/ │ │ ├── FeatureGrid.vue │ │ ├── Hero.vue │ │ ├── Home.vue │ │ ├── Intro.vue │ │ ├── index.ts │ │ ├── pwa.ts │ │ └── styles.css │ ├── api/ │ │ ├── advanced/ │ │ │ ├── artifacts.md │ │ │ ├── import-example.md │ │ │ ├── metadata.md │ │ │ ├── plugin.md │ │ │ ├── reporters.md │ │ │ ├── runner.md │ │ │ ├── test-case.md │ │ │ ├── test-collection.md │ │ │ ├── test-module.md │ │ │ ├── test-project.md │ │ │ ├── test-specification.md │ │ │ ├── test-suite.md │ │ │ └── vitest.md │ │ ├── assert-type.md │ │ ├── assert.md │ │ ├── browser/ │ │ │ ├── assertions.md │ │ │ ├── commands.md │ │ │ ├── context.md │ │ │ ├── interactivity.md │ │ │ ├── locators.md │ │ │ ├── react.md │ │ │ ├── svelte.md │ │ │ └── vue.md │ │ ├── describe.md │ │ ├── expect-typeof.md │ │ ├── expect.md │ │ ├── hooks.md │ │ ├── mock.md │ │ ├── test.md │ │ └── vi.md │ ├── blog/ │ │ ├── vitest-3-2.md │ │ ├── vitest-3.md │ │ ├── vitest-4-1.md │ │ └── vitest-4.md │ ├── blog.md │ ├── config/ │ │ ├── alias.md │ │ ├── allowonly.md │ │ ├── api.md │ │ ├── attachmentsdir.md │ │ ├── bail.md │ │ ├── benchmark.md │ │ ├── browser/ │ │ │ ├── api.md │ │ │ ├── commands.md │ │ │ ├── connecttimeout.md │ │ │ ├── detailspanelposition.md │ │ │ ├── enabled.md │ │ │ ├── expect.md │ │ │ ├── headless.md │ │ │ ├── instances.md │ │ │ ├── isolate.md │ │ │ ├── locators.md │ │ │ ├── orchestratorscripts.md │ │ │ ├── playwright.md │ │ │ ├── preview.md │ │ │ ├── provider.md │ │ │ ├── screenshotdirectory.md │ │ │ ├── screenshotfailures.md │ │ │ ├── testerhtmlpath.md │ │ │ ├── trace.md │ │ │ ├── trackunhandlederrors.md │ │ │ ├── ui.md │ │ │ ├── viewport.md │ │ │ └── webdriverio.md │ │ ├── cache.md │ │ ├── chaiconfig.md │ │ ├── clearmocks.md │ │ ├── coverage.md │ │ ├── css.md │ │ ├── dangerouslyignoreunhandlederrors.md │ │ ├── deps.md │ │ ├── detectasyncleaks.md │ │ ├── diff.md │ │ ├── dir.md │ │ ├── disableconsoleintercept.md │ │ ├── env.md │ │ ├── environment.md │ │ ├── environmentoptions.md │ │ ├── exclude.md │ │ ├── execargv.md │ │ ├── expandsnapshotdiff.md │ │ ├── expect.md │ │ ├── experimental.md │ │ ├── faketimers.md │ │ ├── fileparallelism.md │ │ ├── forcereruntriggers.md │ │ ├── globals.md │ │ ├── globalsetup.md │ │ ├── hideskippedtests.md │ │ ├── hooktimeout.md │ │ ├── include-source.md │ │ ├── include.md │ │ ├── includetasklocation.md │ │ ├── index.md │ │ ├── isolate.md │ │ ├── logheapusage.md │ │ ├── maxconcurrency.md │ │ ├── maxworkers.md │ │ ├── mockreset.md │ │ ├── mode.md │ │ ├── name.md │ │ ├── onconsolelog.md │ │ ├── onstacktrace.md │ │ ├── onunhandlederror.md │ │ ├── open.md │ │ ├── outputfile.md │ │ ├── passwithnotests.md │ │ ├── pool.md │ │ ├── printconsoletrace.md │ │ ├── projects.md │ │ ├── provide.md │ │ ├── reporters.md │ │ ├── resolvesnapshotpath.md │ │ ├── restoremocks.md │ │ ├── retry.md │ │ ├── root.md │ │ ├── runner.md │ │ ├── sequence.md │ │ ├── server.md │ │ ├── setupfiles.md │ │ ├── silent.md │ │ ├── slowtestthreshold.md │ │ ├── snapshotenvironment.md │ │ ├── snapshotformat.md │ │ ├── snapshotserializers.md │ │ ├── stricttags.md │ │ ├── tags.md │ │ ├── teardowntimeout.md │ │ ├── testnamepattern.md │ │ ├── testtimeout.md │ │ ├── typecheck.md │ │ ├── ui.md │ │ ├── unstubenvs.md │ │ ├── unstubglobals.md │ │ ├── update.md │ │ ├── vmmemorylimit.md │ │ ├── watch.md │ │ └── watchtriggerpatterns.md │ ├── guide/ │ │ ├── advanced/ │ │ │ ├── index.md │ │ │ ├── pool.md │ │ │ ├── reporters.md │ │ │ └── tests.md │ │ ├── browser/ │ │ │ ├── component-testing.md │ │ │ ├── index.md │ │ │ ├── multiple-setups.md │ │ │ ├── trace-view.md │ │ │ ├── visual-regression-testing.md │ │ │ └── why.md │ │ ├── cli-generated.md │ │ ├── cli.md │ │ ├── common-errors.md │ │ ├── comparisons.md │ │ ├── coverage.md │ │ ├── debugging.md │ │ ├── environment.md │ │ ├── examples/ │ │ │ ├── projects-workspace.md │ │ │ └── promise-done.md │ │ ├── extending-matchers.md │ │ ├── features.md │ │ ├── filtering.md │ │ ├── ide.md │ │ ├── improving-performance.md │ │ ├── in-source.md │ │ ├── index.md │ │ ├── lifecycle.md │ │ ├── migration.md │ │ ├── mocking/ │ │ │ ├── classes.md │ │ │ ├── dates.md │ │ │ ├── file-system.md │ │ │ ├── functions.md │ │ │ ├── globals.md │ │ │ ├── modules.md │ │ │ ├── requests.md │ │ │ └── timers.md │ │ ├── mocking.md │ │ ├── open-telemetry.md │ │ ├── parallelism.md │ │ ├── profiling-test-performance.md │ │ ├── projects.md │ │ ├── recipes.md │ │ ├── reporters.md │ │ ├── snapshot.md │ │ ├── test-annotations.md │ │ ├── test-context.md │ │ ├── test-tags.md │ │ ├── testing-types.md │ │ ├── ui.md │ │ ├── using-plugins.md │ │ └── why.md │ ├── index.md │ ├── package.json │ ├── public/ │ │ ├── _headers │ │ ├── new-reporter.webm │ │ └── robots.txt │ ├── pwa-assets.config.ts │ ├── team.md │ ├── todo.md │ ├── tsconfig.json │ └── vite.config.ts ├── eslint.config.js ├── examples/ │ ├── basic/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── basic.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── suite.test.ts.snap │ │ │ ├── basic.test.ts │ │ │ └── suite.test.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── fastify/ │ │ ├── mockData.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.ts │ │ │ └── index.ts │ │ └── test/ │ │ └── app.test.ts │ ├── in-source-test/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── lit/ │ │ ├── .gitignore │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ └── my-button.ts │ │ ├── test/ │ │ │ └── basic.test.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── opentelemetry/ │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── jaeger-config.yml │ │ ├── otel-browser.js │ │ ├── otel.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── basic.test.ts │ │ │ ├── basic.ts │ │ │ └── other.test.ts │ │ └── vite.config.ts │ ├── profiling/ │ │ ├── global-setup.ts │ │ ├── package.json │ │ ├── src/ │ │ │ └── prime-number.ts │ │ ├── test/ │ │ │ └── prime-number.test.ts │ │ └── vitest.config.ts │ ├── projects/ │ │ ├── package.json │ │ ├── packages/ │ │ │ ├── client/ │ │ │ │ ├── components/ │ │ │ │ │ └── Link.tsx │ │ │ │ ├── test/ │ │ │ │ │ └── basic.test.tsx │ │ │ │ ├── tsconfig.json │ │ │ │ ├── vitest.config.ts │ │ │ │ └── vitest.setup.ts │ │ │ └── server/ │ │ │ ├── mockData.ts │ │ │ ├── src/ │ │ │ │ ├── app.ts │ │ │ │ └── index.ts │ │ │ └── test/ │ │ │ └── app.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── typecheck/ │ ├── package.json │ ├── test/ │ │ ├── normal.test.ts │ │ └── type.test-d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── netlify.toml ├── package.json ├── packages/ │ ├── browser/ │ │ ├── README.md │ │ ├── aria-role.d.ts │ │ ├── context.d.ts │ │ ├── context.js │ │ ├── dummy.js │ │ ├── jest-dom.d.ts │ │ ├── matchers.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── scripts/ │ │ │ └── build-client.js │ │ ├── src/ │ │ │ ├── client/ │ │ │ │ ├── channel.ts │ │ │ │ ├── client.ts │ │ │ │ ├── orchestrator.html │ │ │ │ ├── orchestrator.ts │ │ │ │ ├── public/ │ │ │ │ │ ├── error-catcher.js │ │ │ │ │ └── esm-client-injector.js │ │ │ │ ├── tester/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── dialog.ts │ │ │ │ │ ├── expect/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── toBeChecked.ts │ │ │ │ │ │ ├── toBeEmptyDOMElement.ts │ │ │ │ │ │ ├── toBeEnabled.ts │ │ │ │ │ │ ├── toBeInTheDocument.ts │ │ │ │ │ │ ├── toBeInViewport.ts │ │ │ │ │ │ ├── toBeInvalid.ts │ │ │ │ │ │ ├── toBePartiallyChecked.ts │ │ │ │ │ │ ├── toBeRequired.ts │ │ │ │ │ │ ├── toBeVisible.ts │ │ │ │ │ │ ├── toContainElement.ts │ │ │ │ │ │ ├── toContainHTML.ts │ │ │ │ │ │ ├── toHaveAccessibleDescription.ts │ │ │ │ │ │ ├── toHaveAccessibleErrorMessage.ts │ │ │ │ │ │ ├── toHaveAccessibleName.ts │ │ │ │ │ │ ├── toHaveAttribute.ts │ │ │ │ │ │ ├── toHaveClass.ts │ │ │ │ │ │ ├── toHaveDisplayValue.ts │ │ │ │ │ │ ├── toHaveFocus.ts │ │ │ │ │ │ ├── toHaveFormValues.ts │ │ │ │ │ │ ├── toHaveRole.ts │ │ │ │ │ │ ├── toHaveSelection.ts │ │ │ │ │ │ ├── toHaveStyle.ts │ │ │ │ │ │ ├── toHaveTextContent.ts │ │ │ │ │ │ ├── toHaveValue.ts │ │ │ │ │ │ ├── toMatchScreenshot.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── expect-element.ts │ │ │ │ │ ├── locators/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── logger.ts │ │ │ │ │ ├── mocker-interceptor.ts │ │ │ │ │ ├── mocker.ts │ │ │ │ │ ├── rpc.ts │ │ │ │ │ ├── runner.ts │ │ │ │ │ ├── snapshot.ts │ │ │ │ │ ├── state.ts │ │ │ │ │ ├── tester-utils.ts │ │ │ │ │ ├── tester.html │ │ │ │ │ └── tester.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── ui.ts │ │ │ │ ├── utils.ts │ │ │ │ └── vite.config.ts │ │ │ ├── node/ │ │ │ │ ├── cdp.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── fs.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── screenshot.ts │ │ │ │ │ ├── screenshotMatcher/ │ │ │ │ │ │ ├── codecs/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── png.ts │ │ │ │ │ │ ├── comparators/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── pixelmatch.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ └── trace.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── middlewares/ │ │ │ │ │ ├── orchestratorMiddleware.ts │ │ │ │ │ ├── testerMiddleware.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── plugins/ │ │ │ │ │ └── pluginContext.ts │ │ │ │ ├── project.ts │ │ │ │ ├── projectParent.ts │ │ │ │ ├── rpc.ts │ │ │ │ ├── serverOrchestrator.ts │ │ │ │ ├── serverTester.ts │ │ │ │ ├── state.ts │ │ │ │ └── utils.ts │ │ │ ├── shared/ │ │ │ │ └── screenshotMatcher/ │ │ │ │ └── types.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── utils.d.ts │ ├── browser-playwright/ │ │ ├── README.md │ │ ├── context.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── clear.ts │ │ │ │ ├── click.ts │ │ │ │ ├── dragAndDrop.ts │ │ │ │ ├── fill.ts │ │ │ │ ├── hover.ts │ │ │ │ ├── index.ts │ │ │ │ ├── keyboard.ts │ │ │ │ ├── screenshot.ts │ │ │ │ ├── select.ts │ │ │ │ ├── tab.ts │ │ │ │ ├── trace.ts │ │ │ │ ├── type.ts │ │ │ │ ├── upload.ts │ │ │ │ ├── utils.ts │ │ │ │ └── wheel.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── locators.ts │ │ │ └── playwright.ts │ │ └── tsconfig.json │ ├── browser-preview/ │ │ ├── README.md │ │ ├── context.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── locators.ts │ │ │ └── preview.ts │ │ └── tsconfig.json │ ├── browser-webdriverio/ │ │ ├── README.md │ │ ├── context.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── clear.ts │ │ │ │ ├── click.ts │ │ │ │ ├── dragAndDrop.ts │ │ │ │ ├── fill.ts │ │ │ │ ├── hover.ts │ │ │ │ ├── index.ts │ │ │ │ ├── keyboard.ts │ │ │ │ ├── screenshot.ts │ │ │ │ ├── select.ts │ │ │ │ ├── tab.ts │ │ │ │ ├── type.ts │ │ │ │ ├── upload.ts │ │ │ │ ├── utils.ts │ │ │ │ ├── viewport.ts │ │ │ │ └── wheel.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── locators.ts │ │ │ └── webdriverio.ts │ │ └── tsconfig.json │ ├── coverage-istanbul/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ └── provider.ts │ │ └── tsconfig.json │ ├── coverage-v8/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── browser.ts │ │ │ ├── index.ts │ │ │ ├── load-provider.ts │ │ │ └── provider.ts │ │ └── tsconfig.json │ ├── expect/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── chai-style-assertions.ts │ │ │ ├── constants.ts │ │ │ ├── custom-matchers.ts │ │ │ ├── index.ts │ │ │ ├── jest-asymmetric-matchers.ts │ │ │ ├── jest-expect.ts │ │ │ ├── jest-extend.ts │ │ │ ├── jest-matcher-utils.ts │ │ │ ├── jest-utils.ts │ │ │ ├── state.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── mocker/ │ │ ├── EXPORTS.md │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── automocker.ts │ │ │ ├── browser/ │ │ │ │ ├── auto-register.ts │ │ │ │ ├── hints.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interceptor-msw.ts │ │ │ │ ├── interceptor-native.ts │ │ │ │ ├── interceptor.ts │ │ │ │ ├── mocker.ts │ │ │ │ ├── register.ts │ │ │ │ └── utils.ts │ │ │ ├── index.ts │ │ │ ├── node/ │ │ │ │ ├── automock.ts │ │ │ │ ├── automockPlugin.ts │ │ │ │ ├── dynamicImportPlugin.ts │ │ │ │ ├── esmWalker.ts │ │ │ │ ├── hoistMocks.ts │ │ │ │ ├── hoistMocksPlugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interceptorPlugin.ts │ │ │ │ ├── mockerPlugin.ts │ │ │ │ ├── parsers.ts │ │ │ │ ├── redirect.ts │ │ │ │ ├── resolver.ts │ │ │ │ └── transforms.ts │ │ │ ├── registry.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── pretty-format/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── collections.ts │ │ │ ├── index.ts │ │ │ ├── plugins/ │ │ │ │ ├── AsymmetricMatcher.ts │ │ │ │ ├── DOMCollection.ts │ │ │ │ ├── DOMElement.ts │ │ │ │ ├── Immutable.ts │ │ │ │ ├── ReactElement.ts │ │ │ │ ├── ReactTestComponent.ts │ │ │ │ └── lib/ │ │ │ │ ├── escapeHTML.ts │ │ │ │ └── markup.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── runner/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── artifact.ts │ │ │ ├── collect.ts │ │ │ ├── context.ts │ │ │ ├── errors.ts │ │ │ ├── fixture.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ ├── map.ts │ │ │ ├── run.ts │ │ │ ├── setup.ts │ │ │ ├── suite.ts │ │ │ ├── test-state.ts │ │ │ ├── types/ │ │ │ │ ├── runner.ts │ │ │ │ └── tasks.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── chain.ts │ │ │ ├── collect.ts │ │ │ ├── index.ts │ │ │ ├── limit-concurrency.ts │ │ │ ├── suite.ts │ │ │ ├── tags.ts │ │ │ └── tasks.ts │ │ ├── tsconfig.json │ │ ├── types.d.ts │ │ └── utils.d.ts │ ├── snapshot/ │ │ ├── README.md │ │ ├── environment.d.ts │ │ ├── manager.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── client.ts │ │ │ ├── env/ │ │ │ │ └── node.ts │ │ │ ├── environment.ts │ │ │ ├── index.ts │ │ │ ├── manager.ts │ │ │ ├── port/ │ │ │ │ ├── inlineSnapshot.ts │ │ │ │ ├── mockSerializer.ts │ │ │ │ ├── plugins.ts │ │ │ │ ├── rawSnapshot.ts │ │ │ │ ├── state.ts │ │ │ │ └── utils.ts │ │ │ └── types/ │ │ │ ├── environment.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── spy/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── ui/ │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── browser.dev.js │ │ ├── client/ │ │ │ ├── App.vue │ │ │ ├── components/ │ │ │ │ ├── AnnotationAttachmentImage.vue │ │ │ │ ├── Badge.vue │ │ │ │ ├── BrowserIframe.vue │ │ │ │ ├── ClosedDetailsHeader.vue │ │ │ │ ├── CodeMirrorContainer.vue │ │ │ │ ├── ConnectionOverlay.vue │ │ │ │ ├── Coverage.vue │ │ │ │ ├── Dashboard.vue │ │ │ │ ├── DetailsHeaderButtons.vue │ │ │ │ ├── FailureScreenshot.vue │ │ │ │ ├── FileDetails.vue │ │ │ │ ├── FilterStatus.vue │ │ │ │ ├── IconAction.vue │ │ │ │ ├── IconButton.vue │ │ │ │ ├── Modal.vue │ │ │ │ ├── ModuleGraphImportBreakdown.vue │ │ │ │ ├── ModuleTransformResultView.vue │ │ │ │ ├── Navigation.vue │ │ │ │ ├── ProgressBar.vue │ │ │ │ ├── ResultsPanel.vue │ │ │ │ ├── StatusIcon.vue │ │ │ │ ├── artifacts/ │ │ │ │ │ ├── ArtifactTemplate.vue │ │ │ │ │ ├── Artifacts.vue │ │ │ │ │ └── visual-regression/ │ │ │ │ │ ├── SmallTabs.spec.ts │ │ │ │ │ ├── SmallTabs.vue │ │ │ │ │ ├── SmallTabsPane.vue │ │ │ │ │ ├── VisualRegression.spec.ts │ │ │ │ │ ├── VisualRegression.vue │ │ │ │ │ ├── VisualRegressionImage.vue │ │ │ │ │ ├── VisualRegressionImageContainer.vue │ │ │ │ │ ├── VisualRegressionSlider.spec.ts │ │ │ │ │ └── VisualRegressionSlider.vue │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── DashboardEntry.spec.ts │ │ │ │ │ ├── DashboardEntry.vue │ │ │ │ │ ├── ErrorEntry.vue │ │ │ │ │ ├── TestFilesEntry.vue │ │ │ │ │ ├── TestsEntry.vue │ │ │ │ │ └── TestsFilesContainer.vue │ │ │ │ ├── explorer/ │ │ │ │ │ ├── Explorer.vue │ │ │ │ │ └── ExplorerItem.vue │ │ │ │ └── views/ │ │ │ │ ├── ScreenshotError.vue │ │ │ │ ├── ViewConsoleOutput.vue │ │ │ │ ├── ViewConsoleOutputEntry.spec.ts │ │ │ │ ├── ViewConsoleOutputEntry.vue │ │ │ │ ├── ViewEditor.vue │ │ │ │ ├── ViewModuleGraph.vue │ │ │ │ ├── ViewReport.spec.ts │ │ │ │ ├── ViewReport.vue │ │ │ │ ├── ViewReportError.vue │ │ │ │ └── ViewTestReport.vue │ │ │ ├── composables/ │ │ │ │ ├── api.ts │ │ │ │ ├── attachments.ts │ │ │ │ ├── browser.ts │ │ │ │ ├── client/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── state.ts │ │ │ │ │ └── static.ts │ │ │ │ ├── codemirror.ts │ │ │ │ ├── dark.ts │ │ │ │ ├── error.ts │ │ │ │ ├── explorer/ │ │ │ │ │ ├── collapse.ts │ │ │ │ │ ├── collector.ts │ │ │ │ │ ├── expand.ts │ │ │ │ │ ├── filter.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── search.ts │ │ │ │ │ ├── state.ts │ │ │ │ │ ├── tree.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── location.ts │ │ │ │ ├── module-graph.ts │ │ │ │ ├── navigation.ts │ │ │ │ ├── params.ts │ │ │ │ └── small-tabs.ts │ │ │ ├── constants.ts │ │ │ ├── global-setup.ts │ │ │ ├── main.ts │ │ │ ├── pages/ │ │ │ │ └── index.vue │ │ │ ├── shim.d.ts │ │ │ ├── styles/ │ │ │ │ └── main.css │ │ │ ├── test.ts │ │ │ └── utils/ │ │ │ ├── escape.ts │ │ │ └── task.ts │ │ ├── explorer.md │ │ ├── index.html │ │ ├── node/ │ │ │ ├── index.ts │ │ │ ├── reporter.ts │ │ │ └── tsconfig.json │ │ ├── package.json │ │ ├── reporter.d.ts │ │ ├── rollup.config.js │ │ ├── shim.d.ts │ │ ├── tsconfig.json │ │ ├── types.ts │ │ ├── vite.config.ts │ │ └── vitest.config.ts │ ├── utils/ │ │ ├── README.md │ │ ├── diff.d.ts │ │ ├── error.d.ts │ │ ├── helpers.d.ts │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── source-map.ts │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── diff/ │ │ │ │ ├── cleanupSemantic.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── diffLines.ts │ │ │ │ ├── diffStrings.ts │ │ │ │ ├── getAlignedDiffs.ts │ │ │ │ ├── getType.ts │ │ │ │ ├── index.ts │ │ │ │ ├── joinAlignedDiffs.ts │ │ │ │ ├── normalizeDiffOptions.ts │ │ │ │ ├── printDiffs.ts │ │ │ │ └── types.ts │ │ │ ├── display.ts │ │ │ ├── error.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── nanoid.ts │ │ │ ├── offset.ts │ │ │ ├── random.ts │ │ │ ├── resolver.ts │ │ │ ├── serialize.ts │ │ │ ├── source-map/ │ │ │ │ └── node.ts │ │ │ ├── source-map.ts │ │ │ ├── timers.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── vitest/ │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── browser/ │ │ │ ├── context.d.ts │ │ │ └── context.js │ │ ├── config.d.ts │ │ ├── coverage.d.ts │ │ ├── environments.d.ts │ │ ├── globals.d.ts │ │ ├── import-meta.d.ts │ │ ├── importMeta.d.ts │ │ ├── index.cjs │ │ ├── index.d.cts │ │ ├── jsdom.d.ts │ │ ├── mocker.d.ts │ │ ├── node.d.ts │ │ ├── optional-types.d.ts │ │ ├── package.json │ │ ├── reporters.d.ts │ │ ├── rollup.config.js │ │ ├── runners.d.ts │ │ ├── snapshot.d.ts │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── check.ts │ │ │ │ ├── setup.ts │ │ │ │ └── types.ts │ │ │ ├── constants.ts │ │ │ ├── create/ │ │ │ │ └── browser/ │ │ │ │ ├── creator.ts │ │ │ │ └── examples.ts │ │ │ ├── defaults.ts │ │ │ ├── integrations/ │ │ │ │ ├── chai/ │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── poll.ts │ │ │ │ │ └── setup.ts │ │ │ │ ├── coverage.ts │ │ │ │ ├── css/ │ │ │ │ │ └── css-modules.ts │ │ │ │ ├── env/ │ │ │ │ │ ├── edge-runtime.ts │ │ │ │ │ ├── happy-dom.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── jsdom-keys.ts │ │ │ │ │ ├── jsdom.ts │ │ │ │ │ ├── loader.ts │ │ │ │ │ ├── node.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── inject.ts │ │ │ │ ├── mock/ │ │ │ │ │ ├── date.ts │ │ │ │ │ └── timers.ts │ │ │ │ ├── snapshot/ │ │ │ │ │ ├── chai.ts │ │ │ │ │ └── environments/ │ │ │ │ │ ├── node.ts │ │ │ │ │ └── resolveSnapshotEnvironment.ts │ │ │ │ ├── spy.ts │ │ │ │ ├── vi.ts │ │ │ │ └── wait.ts │ │ │ ├── node/ │ │ │ │ ├── ast-collect.ts │ │ │ │ ├── browser/ │ │ │ │ │ └── sessions.ts │ │ │ │ ├── cache/ │ │ │ │ │ ├── files.ts │ │ │ │ │ ├── fsModuleCache.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── results.ts │ │ │ │ ├── cli/ │ │ │ │ │ ├── cac.ts │ │ │ │ │ ├── cli-api.ts │ │ │ │ │ ├── cli-config.ts │ │ │ │ │ ├── completions.ts │ │ │ │ │ └── filter.ts │ │ │ │ ├── cli.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── resolveConfig.ts │ │ │ │ │ └── serializeConfig.ts │ │ │ │ ├── core.ts │ │ │ │ ├── coverage.ts │ │ │ │ ├── create.ts │ │ │ │ ├── environments/ │ │ │ │ │ ├── fetchModule.ts │ │ │ │ │ ├── normalizeUrl.ts │ │ │ │ │ └── serverRunner.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── git.ts │ │ │ │ ├── globalSetup.ts │ │ │ │ ├── hash.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── module-diagnostic.ts │ │ │ │ ├── packageInstaller.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── coverageTransform.ts │ │ │ │ │ ├── cssEnabler.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── metaEnvReplacer.ts │ │ │ │ │ ├── mocks.ts │ │ │ │ │ ├── normalizeURL.ts │ │ │ │ │ ├── optimizer.ts │ │ │ │ │ ├── publicConfig.ts │ │ │ │ │ ├── runnerTransform.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ ├── vitestResolver.ts │ │ │ │ │ └── workspace.ts │ │ │ │ ├── pool.ts │ │ │ │ ├── pools/ │ │ │ │ │ ├── browser.ts │ │ │ │ │ ├── pool.ts │ │ │ │ │ ├── poolRunner.ts │ │ │ │ │ ├── rpc.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── workers/ │ │ │ │ │ ├── forksWorker.ts │ │ │ │ │ ├── threadsWorker.ts │ │ │ │ │ ├── typecheckWorker.ts │ │ │ │ │ ├── vmForksWorker.ts │ │ │ │ │ └── vmThreadsWorker.ts │ │ │ │ ├── printError.ts │ │ │ │ ├── project.ts │ │ │ │ ├── projects/ │ │ │ │ │ └── resolveProjects.ts │ │ │ │ ├── reporters/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── benchmark/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── json-formatter.ts │ │ │ │ │ │ ├── reporter.ts │ │ │ │ │ │ ├── tableRender.ts │ │ │ │ │ │ └── verbose.ts │ │ │ │ │ ├── blob.ts │ │ │ │ │ ├── default.ts │ │ │ │ │ ├── dot.ts │ │ │ │ │ ├── github-actions.ts │ │ │ │ │ ├── hanging-process.ts │ │ │ │ │ ├── html.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── json.ts │ │ │ │ │ ├── junit.ts │ │ │ │ │ ├── renderers/ │ │ │ │ │ │ ├── figures.ts │ │ │ │ │ │ ├── indented-logger.ts │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ └── windowedRenderer.ts │ │ │ │ │ ├── reported-tasks.ts │ │ │ │ │ ├── summary.ts │ │ │ │ │ ├── tap-flat.ts │ │ │ │ │ ├── tap.ts │ │ │ │ │ ├── tree.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── verbose.ts │ │ │ │ ├── resolver.ts │ │ │ │ ├── sequencers/ │ │ │ │ │ ├── BaseSequencer.ts │ │ │ │ │ ├── RandomSequencer.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── specifications.ts │ │ │ │ ├── state.ts │ │ │ │ ├── stdin.ts │ │ │ │ ├── tags.ts │ │ │ │ ├── test-run.ts │ │ │ │ ├── test-specification.ts │ │ │ │ ├── types/ │ │ │ │ │ ├── benchmark.ts │ │ │ │ │ ├── browser.ts │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── coverage.ts │ │ │ │ │ ├── plugin.ts │ │ │ │ │ ├── reporter.ts │ │ │ │ │ ├── tests.ts │ │ │ │ │ ├── vite.ts │ │ │ │ │ └── worker.ts │ │ │ │ ├── vite.ts │ │ │ │ ├── viteLogger.ts │ │ │ │ ├── watch-filter.ts │ │ │ │ └── watcher.ts │ │ │ ├── paths.ts │ │ │ ├── public/ │ │ │ │ ├── browser.ts │ │ │ │ ├── config.ts │ │ │ │ ├── coverage.ts │ │ │ │ ├── environments.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node.ts │ │ │ │ ├── reporters.ts │ │ │ │ ├── runners.ts │ │ │ │ ├── runtime.ts │ │ │ │ ├── snapshot.ts │ │ │ │ ├── suite.ts │ │ │ │ └── worker.ts │ │ │ ├── runtime/ │ │ │ │ ├── benchmark.ts │ │ │ │ ├── cleanup.ts │ │ │ │ ├── config.ts │ │ │ │ ├── console.ts │ │ │ │ ├── detect-async-leaks.ts │ │ │ │ ├── external-executor.ts │ │ │ │ ├── inspector.ts │ │ │ │ ├── listeners.ts │ │ │ │ ├── moduleRunner/ │ │ │ │ │ ├── bareModuleMocker.ts │ │ │ │ │ ├── cachedResolver.ts │ │ │ │ │ ├── errorCatcher.ts │ │ │ │ │ ├── evaluatedModules.ts │ │ │ │ │ ├── moduleDebug.ts │ │ │ │ │ ├── moduleEvaluator.ts │ │ │ │ │ ├── moduleMocker.ts │ │ │ │ │ ├── moduleRunner.ts │ │ │ │ │ ├── moduleTransport.ts │ │ │ │ │ ├── nativeModuleMocker.ts │ │ │ │ │ ├── startVitestModuleRunner.ts │ │ │ │ │ ├── testModuleRunner.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── nodejsWorkerLoader.ts │ │ │ │ ├── rpc.ts │ │ │ │ ├── runBaseTests.ts │ │ │ │ ├── runVmTests.ts │ │ │ │ ├── runners/ │ │ │ │ │ ├── benchmark.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── test.ts │ │ │ │ ├── setup-common.ts │ │ │ │ ├── setup-node.ts │ │ │ │ ├── types/ │ │ │ │ │ ├── benchmark.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── utils.ts │ │ │ │ ├── vm/ │ │ │ │ │ ├── commonjs-executor.ts │ │ │ │ │ ├── esm-executor.ts │ │ │ │ │ ├── file-map.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── vite-executor.ts │ │ │ │ ├── worker.ts │ │ │ │ └── workers/ │ │ │ │ ├── base.ts │ │ │ │ ├── forks.ts │ │ │ │ ├── init-forks.ts │ │ │ │ ├── init-threads.ts │ │ │ │ ├── init.ts │ │ │ │ ├── native.ts │ │ │ │ ├── threads.ts │ │ │ │ ├── types.ts │ │ │ │ ├── vm.ts │ │ │ │ ├── vmForks.ts │ │ │ │ └── vmThreads.ts │ │ │ ├── shims.dev.d.ts │ │ │ ├── typecheck/ │ │ │ │ ├── assertType.ts │ │ │ │ ├── collect.ts │ │ │ │ ├── expectTypeOf.ts │ │ │ │ ├── parse.ts │ │ │ │ ├── typechecker.ts │ │ │ │ └── types.ts │ │ │ ├── types/ │ │ │ │ ├── browser.ts │ │ │ │ ├── environment.ts │ │ │ │ ├── general.ts │ │ │ │ ├── global.ts │ │ │ │ ├── happy-dom-options.ts │ │ │ │ ├── jsdom-options.ts │ │ │ │ ├── mocker.ts │ │ │ │ ├── module-locations.ts │ │ │ │ ├── rpc.ts │ │ │ │ ├── ui.ts │ │ │ │ └── worker.ts │ │ │ └── utils/ │ │ │ ├── base.ts │ │ │ ├── colors.ts │ │ │ ├── config-helpers.ts │ │ │ ├── coverage.ts │ │ │ ├── debugger.ts │ │ │ ├── env.ts │ │ │ ├── environments.ts │ │ │ ├── graph.ts │ │ │ ├── memory-limit.ts │ │ │ ├── modules.ts │ │ │ ├── nativeModuleRunner.ts │ │ │ ├── serialization.ts │ │ │ ├── source-map.ts │ │ │ ├── tasks.ts │ │ │ ├── test-helpers.ts │ │ │ ├── timers.ts │ │ │ ├── traces.ts │ │ │ └── workers.ts │ │ ├── suite.d.ts │ │ ├── suppress-warnings.cjs │ │ ├── tsconfig.json │ │ ├── vitest.mjs │ │ └── worker.d.ts │ ├── web-worker/ │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── package.json │ │ ├── pure.d.ts │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── pure.ts │ │ │ ├── runner.ts │ │ │ ├── shared-worker.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── worker.ts │ │ └── tsconfig.json │ └── ws-client/ │ ├── package.json │ ├── rollup.config.js │ ├── src/ │ │ ├── index.ts │ │ └── state.ts │ └── tsconfig.json ├── patches/ │ ├── @sinonjs__fake-timers@15.0.0.patch │ ├── acorn@8.11.3.patch │ ├── cac@6.7.14.patch │ ├── istanbul-lib-instrument.patch │ └── istanbul-lib-source-maps.patch ├── pnpm-workspace.yaml ├── scripts/ │ ├── build-utils.js │ ├── explain-types.ts │ ├── publish-ci.ts │ ├── release.ts │ └── update-contributors.ts ├── shims.d.ts ├── test/ │ ├── README.md │ ├── browser/ │ │ ├── README.md │ │ ├── bundled-lib/ │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── a.js │ │ │ ├── b.js │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── cjs-lib/ │ │ │ ├── index.js │ │ │ ├── lib.d.ts │ │ │ ├── lib.mjs │ │ │ └── package.json │ │ ├── custom-diff-config.ts │ │ ├── custom-snapshot-env.ts │ │ ├── custom-tester.html │ │ ├── deps/ │ │ │ └── test-dep-error/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── docker-compose.yaml │ │ ├── fixtures/ │ │ │ ├── assertion-helper/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── benchmark/ │ │ │ │ ├── basic.bench.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── broken-iframe/ │ │ │ │ ├── submit-form.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── browser-crash/ │ │ │ │ ├── browser-crash.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── error-in-dep/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── expect-dom/ │ │ │ │ ├── setup.ts │ │ │ │ ├── toBeChecked.test.ts │ │ │ │ ├── toBeDisabled.test.ts │ │ │ │ ├── toBeEmptyDOMElement.test.ts │ │ │ │ ├── toBeInTheDocument.test.ts │ │ │ │ ├── toBeInViewport.test.ts │ │ │ │ ├── toBeInvalid.test.ts │ │ │ │ ├── toBePartiallyChecked.test.ts │ │ │ │ ├── toBeRequired.test.ts │ │ │ │ ├── toBeVisible.test.ts │ │ │ │ ├── toContainElement.test.ts │ │ │ │ ├── toContainHTML.test.ts │ │ │ │ ├── toHaveAccessibleDescription.test.ts │ │ │ │ ├── toHaveAccessibleErrorMessage.test.ts │ │ │ │ ├── toHaveAttribute.test.ts │ │ │ │ ├── toHaveClass.test.ts │ │ │ │ ├── toHaveDisplayValue.test.ts │ │ │ │ ├── toHaveFocus.test.ts │ │ │ │ ├── toHaveFormValues.test.ts │ │ │ │ ├── toHaveLength.test.ts │ │ │ │ ├── toHaveRole.test.ts │ │ │ │ ├── toHaveSelection.test.ts │ │ │ │ ├── toHaveStyle.test.ts │ │ │ │ ├── toHaveTextContent.test.ts │ │ │ │ ├── toHaveValue.test.ts │ │ │ │ ├── toMatchScreenshot.test.ts │ │ │ │ ├── utils.ts │ │ │ │ └── vitest.config.js │ │ │ ├── failing/ │ │ │ │ ├── failing.snaphot.test.ts │ │ │ │ ├── failing.test.ts │ │ │ │ ├── src/ │ │ │ │ │ └── error.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── insecure-context/ │ │ │ │ ├── src/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── dynamic-import.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── inspect/ │ │ │ │ ├── math.test.ts │ │ │ │ ├── vitest.config.ts │ │ │ │ └── vitest.config.with-workspace.ts │ │ │ ├── isolate-and-setup-file/ │ │ │ │ ├── a.test.ts │ │ │ │ ├── b.test.ts │ │ │ │ ├── browser-setup.ts │ │ │ │ ├── counter.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── locators/ │ │ │ │ ├── blog.test.tsx │ │ │ │ ├── query.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── locators-custom/ │ │ │ │ ├── basic.test.tsx │ │ │ │ └── vitest.config.ts │ │ │ ├── mocking/ │ │ │ │ ├── automocked.test.ts │ │ │ │ ├── autospying.test.ts │ │ │ │ ├── import-actual-dep.test.ts │ │ │ │ ├── import-actual-in-mock.test.ts │ │ │ │ ├── import-actual-query.test.ts │ │ │ │ ├── import-mock.test.ts │ │ │ │ ├── mocked-__mocks__.test.ts │ │ │ │ ├── mocked-do-mock-factory.test.ts │ │ │ │ ├── mocked-factory-hoisted.test.ts │ │ │ │ ├── mocked-factory.test.ts │ │ │ │ ├── mocked-nested.test.ts │ │ │ │ ├── mocking-dep.test.ts │ │ │ │ ├── not-mocked-nested.test.ts │ │ │ │ ├── not-mocked.test.ts │ │ │ │ ├── service-worker.js │ │ │ │ ├── service-worker.test.ts │ │ │ │ ├── src/ │ │ │ │ │ ├── __mocks__/ │ │ │ │ │ │ └── mocks_calculator.ts │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── calculator.ts │ │ │ │ │ ├── example.ts │ │ │ │ │ ├── mocks_calculator.ts │ │ │ │ │ ├── mocks_factory.ts │ │ │ │ │ ├── mocks_factory_many.ts │ │ │ │ │ ├── mocks_factory_many_dep1.ts │ │ │ │ │ ├── mocks_factory_many_dep2.ts │ │ │ │ │ ├── nested_child.ts │ │ │ │ │ └── nested_parent.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── mocking-out-of-root/ │ │ │ │ ├── project1/ │ │ │ │ │ ├── basic.test.js │ │ │ │ │ ├── imported-test.js │ │ │ │ │ ├── lib.js │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── project2/ │ │ │ │ │ └── index.js │ │ │ │ └── project3/ │ │ │ │ ├── imported-test.js │ │ │ │ └── lib.js │ │ │ ├── mocking-watch/ │ │ │ │ ├── 1_mocked-on-watch-change.test.ts │ │ │ │ ├── 2_not-mocked-import.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── multiple-different-configs/ │ │ │ │ ├── basic.test.js │ │ │ │ ├── customTester.html │ │ │ │ └── vitest.config.js │ │ │ ├── playwright-connect/ │ │ │ │ ├── basic.test.js │ │ │ │ └── vitest.config.js │ │ │ ├── print-logs/ │ │ │ │ ├── test/ │ │ │ │ │ ├── dialog.test.ts │ │ │ │ │ └── logs.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── project-name-encoding/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── server-url/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── setup-file/ │ │ │ │ ├── browser-setup.ts │ │ │ │ ├── module-equality.test.ts │ │ │ │ ├── source.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── timeout/ │ │ │ │ ├── timeout.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── timeout-hooks/ │ │ │ │ ├── hooks-timeout.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── trace-mark/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── trace-view/ │ │ │ │ ├── basic.test.ts │ │ │ │ ├── failing.special.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── unhandled/ │ │ │ │ ├── throw-unhandled-error.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── unhandled-non-error/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── update-snapshot/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── basic.test.ts.snap │ │ │ │ │ └── custom/ │ │ │ │ │ └── my_snapshot │ │ │ │ ├── basic-fixture.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── user-event/ │ │ │ │ ├── cleanup-retry.test.ts │ │ │ │ ├── cleanup1.test.ts │ │ │ │ ├── cleanup2.test.ts │ │ │ │ ├── clipboard.test.ts │ │ │ │ ├── keyboard.test.ts │ │ │ │ ├── vitest.config.ts │ │ │ │ └── wheel.test.ts │ │ │ ├── viewport/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ └── worker/ │ │ │ ├── src/ │ │ │ │ ├── basic.test.ts │ │ │ │ ├── worker-dynamic-dep.ts │ │ │ │ └── worker.ts │ │ │ └── vitest.config.ts │ │ ├── injected.ts │ │ ├── package.json │ │ ├── settings.ts │ │ ├── setup.unit.ts │ │ ├── specs/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── expect-element-no-awaited.test.ts.snap │ │ │ │ └── update-snapshot.test.ts.snap │ │ │ ├── assertion-helper.test.ts │ │ │ ├── bail-out.test.ts │ │ │ ├── benchmark.test.ts │ │ │ ├── errors.test.ts │ │ │ ├── expect-dom.test.ts │ │ │ ├── expect-element-no-awaited.test.ts │ │ │ ├── filter.test.ts │ │ │ ├── fix-4686.test.ts │ │ │ ├── insecure-context.test.ts │ │ │ ├── inspect.test.ts │ │ │ ├── locators.test.ts │ │ │ ├── mocking.test.ts │ │ │ ├── multiple-different-configs.test.ts │ │ │ ├── playwright-connect.test.ts │ │ │ ├── playwright-trace-mark.test.ts │ │ │ ├── playwright-trace.test.ts │ │ │ ├── project-name-encoding.test.ts │ │ │ ├── runner.test.ts │ │ │ ├── server-url.test.ts │ │ │ ├── setup-file.test.ts │ │ │ ├── to-match-screenshot.test.ts │ │ │ ├── update-snapshot.test.ts │ │ │ ├── utils.ts │ │ │ ├── viewport.test.ts │ │ │ └── worker.test.ts │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ └── _calculator.ts │ │ │ ├── actions.ts │ │ │ ├── blog-app/ │ │ │ │ └── blog.tsx │ │ │ ├── button.css │ │ │ ├── calculator.ts │ │ │ ├── createNode.ts │ │ │ ├── dynamic.ts │ │ │ └── env.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── custom/ │ │ │ │ │ └── my_snapshot │ │ │ │ ├── snapshot.test.ts.snap │ │ │ │ └── utils.test.ts.snap │ │ │ ├── another.test.ts │ │ │ ├── basic.test.ts │ │ │ ├── cdp.test-d.ts │ │ │ ├── cdp.test.ts │ │ │ ├── cjs-lib.test.ts │ │ │ ├── commands.test.ts │ │ │ ├── dom.test.ts │ │ │ ├── dynamic-module.test.ts │ │ │ ├── env.test.ts │ │ │ ├── expect-element.test.ts │ │ │ ├── findElement.test.ts │ │ │ ├── iframe.test.ts │ │ │ ├── injected.test.ts │ │ │ ├── mocking.test.ts │ │ │ ├── polyfill-lib.test.ts │ │ │ ├── server-headers.test.ts │ │ │ ├── snapshot.test.ts │ │ │ ├── tags.test.ts │ │ │ ├── timers.test.ts │ │ │ ├── userEvent.test.ts │ │ │ ├── utils.test.ts │ │ │ └── viewport.test.ts │ │ ├── tsconfig.json │ │ ├── vitest.config-basepath.mts │ │ ├── vitest.config.mts │ │ └── vitest.config.unit.mts │ ├── cli/ │ │ ├── .gitignore │ │ ├── custom.ts │ │ ├── deps/ │ │ │ ├── dep-invalid/ │ │ │ │ └── package.json │ │ │ ├── dep-simple/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── dep-url/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── error/ │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ ├── transpiled-inline.js │ │ │ │ ├── transpiled-inline.ts │ │ │ │ ├── transpiled.js │ │ │ │ ├── transpiled.ts │ │ │ │ └── ts.ts │ │ │ ├── linked/ │ │ │ │ ├── index.ts │ │ │ │ └── package.json │ │ │ └── pkg-reporter/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── dts/ │ │ │ ├── _shared/ │ │ │ │ ├── happy-dom-patch.ts │ │ │ │ └── tsconfig.patch.json │ │ │ ├── browser-playwright/ │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── config/ │ │ │ │ ├── package.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── exact-optional-property/ │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── reporter.ts │ │ │ │ │ └── runner.ts │ │ │ │ └── tsconfig.json │ │ │ └── fixture-extend/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── repro.ts │ │ │ ├── tsconfig.check.json │ │ │ └── tsconfig.json │ │ ├── fixtures/ │ │ │ ├── assertion-helper/ │ │ │ │ └── basic.test.ts │ │ │ ├── bail-race/ │ │ │ │ ├── a.test.ts │ │ │ │ └── b.test.ts │ │ │ ├── basic/ │ │ │ │ └── basic.test.ts │ │ │ ├── benchmarking/ │ │ │ │ ├── basic/ │ │ │ │ │ ├── base.bench.ts │ │ │ │ │ ├── mode.bench.ts │ │ │ │ │ ├── only.bench.ts │ │ │ │ │ ├── should-not-run.test-d.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── compare/ │ │ │ │ │ ├── basic.bench.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── reporter/ │ │ │ │ │ ├── multiple.bench.ts │ │ │ │ │ ├── summary.bench.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ └── sequential/ │ │ │ │ ├── f1.bench.ts │ │ │ │ ├── f2.bench.ts │ │ │ │ ├── helper.ts │ │ │ │ ├── setup.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── browser-init/ │ │ │ │ ├── package.json │ │ │ │ └── vitest.config.ts │ │ │ ├── browser-multiple/ │ │ │ │ ├── basic.test.js │ │ │ │ ├── package.json │ │ │ │ └── vitest.config.ts │ │ │ ├── caching/ │ │ │ │ ├── dynamic-cache-key/ │ │ │ │ │ ├── replaced.test.js │ │ │ │ │ ├── vitest.config.bails.js │ │ │ │ │ ├── vitest.config.fails.js │ │ │ │ │ └── vitest.config.passes.js │ │ │ │ └── import-meta-glob/ │ │ │ │ ├── glob.test.js │ │ │ │ └── vitest.config.js │ │ │ ├── cancel-run/ │ │ │ │ ├── blocked-test-cases.test.ts │ │ │ │ └── blocked-thread.test.ts │ │ │ ├── config/ │ │ │ │ ├── bail/ │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── first.test.ts │ │ │ │ │ │ └── second.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── browser-custom-html/ │ │ │ │ │ ├── browser-basic.test.ts │ │ │ │ │ ├── browser-custom.test.ts │ │ │ │ │ ├── custom-html.html │ │ │ │ │ ├── vitest.config.correct.ts │ │ │ │ │ ├── vitest.config.custom-transformIndexHtml.ts │ │ │ │ │ ├── vitest.config.default-transformIndexHtml.ts │ │ │ │ │ ├── vitest.config.error-hook.ts │ │ │ │ │ └── vitest.config.non-existing.ts │ │ │ │ ├── browser-define/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ └── watch-trigger-pattern/ │ │ │ │ ├── folder/ │ │ │ │ │ └── fs/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── text.txt │ │ │ │ └── vitest.config.ts │ │ │ ├── config-loader/ │ │ │ │ ├── browser/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── console/ │ │ │ │ ├── trace.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── create-vitest/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── custom-file-env/ │ │ │ │ └── custom-file-env.test.ts │ │ │ ├── custom-pool/ │ │ │ │ ├── pool/ │ │ │ │ │ └── custom-pool.ts │ │ │ │ ├── tests/ │ │ │ │ │ ├── custom-not-run.spec.ts │ │ │ │ │ └── custom-run.threads.spec.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── custom-runner/ │ │ │ │ ├── custom-runner.test.ts │ │ │ │ ├── test-runner.ts │ │ │ │ ├── utils.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── dotted-files/ │ │ │ │ └── .cache/ │ │ │ │ └── projects/ │ │ │ │ └── test/ │ │ │ │ └── should-run.test.ts │ │ │ ├── expect-soft/ │ │ │ │ ├── expects/ │ │ │ │ │ └── soft.test.ts │ │ │ │ └── vite.config.ts │ │ │ ├── fails/ │ │ │ │ ├── .dot-folder/ │ │ │ │ │ └── dot-test.test.ts │ │ │ │ ├── async-assertion.test.ts │ │ │ │ ├── each-timeout.test.ts │ │ │ │ ├── empty.test.ts │ │ │ │ ├── expect-soft.test.ts │ │ │ │ ├── expect-unreachable.test.ts │ │ │ │ ├── expect.test.ts │ │ │ │ ├── exports-error.test.js │ │ │ │ ├── hook-timeout.test.ts │ │ │ │ ├── hooks-called.test.ts │ │ │ │ ├── hooks-fail-afterAll.test.ts │ │ │ │ ├── hooks-fail-afterEach.test.ts │ │ │ │ ├── hooks-fail-beforeAll.test.ts │ │ │ │ ├── hooks-fail-beforeEach.test.ts │ │ │ │ ├── hooks-timeout-before-hook-cleanup-callback.test.ts │ │ │ │ ├── mock-import-proxy-module.test.ts │ │ │ │ ├── nested-suite.test.ts │ │ │ │ ├── no-assertions.test.ts │ │ │ │ ├── node-browser-context.test.ts │ │ │ │ ├── poll-no-awaited.test.ts │ │ │ │ ├── primitive-error.test.ts │ │ │ │ ├── proxy-module.ts │ │ │ │ ├── skip-conditional.test.ts │ │ │ │ ├── snapshot-with-not.test.ts │ │ │ │ ├── stall.test.ts │ │ │ │ ├── test-extend/ │ │ │ │ │ ├── circular-dependency.test.ts │ │ │ │ │ ├── fixture-error.test.ts │ │ │ │ │ ├── fixture-rest-params.test.ts │ │ │ │ │ ├── fixture-rest-props.test.ts │ │ │ │ │ ├── fixture-without-destructuring.test.ts │ │ │ │ │ ├── test-rest-params.test.ts │ │ │ │ │ ├── test-rest-props.test.ts │ │ │ │ │ └── test-without-destructuring.test.ts │ │ │ │ ├── test-timeout.test.ts │ │ │ │ ├── unhandled-suite.test.ts │ │ │ │ ├── unhandled.test.ts │ │ │ │ └── vite.config.ts │ │ │ ├── file-tags/ │ │ │ │ ├── error-file-one-line-comment.test.ts │ │ │ │ ├── error-file-tags.test.ts │ │ │ │ ├── valid-file-one-line-comment.test.ts │ │ │ │ └── valid-file-tags.test.ts │ │ │ ├── forks-channel/ │ │ │ │ ├── process-send.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── git-changed/ │ │ │ │ ├── related/ │ │ │ │ │ ├── deep-related-exports.test.ts │ │ │ │ │ ├── deep-related-imports.test.ts │ │ │ │ │ ├── not-related.test.ts │ │ │ │ │ ├── related.test.ts │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── sourceA.ts │ │ │ │ │ │ ├── sourceB.ts │ │ │ │ │ │ ├── sourceC.ts │ │ │ │ │ │ └── sourceD.ts │ │ │ │ │ └── vitest.config.js │ │ │ │ └── workspace/ │ │ │ │ ├── package.json │ │ │ │ ├── packages/ │ │ │ │ │ ├── packageA/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── index.test.js │ │ │ │ │ │ └── vitest.config.mjs │ │ │ │ │ └── packageB/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.test.js │ │ │ │ │ └── vitest.config.mjs │ │ │ │ └── vitest.config.mjs │ │ │ ├── global-setup/ │ │ │ │ ├── globalSetup/ │ │ │ │ │ ├── another-vite-instance.ts │ │ │ │ │ ├── default-export.js │ │ │ │ │ ├── named-exports.js │ │ │ │ │ ├── server.ts │ │ │ │ │ ├── ts-with-imports.ts │ │ │ │ │ └── update-env.ts │ │ │ │ ├── index.html │ │ │ │ ├── setupFiles/ │ │ │ │ │ ├── add-something-to-global.ts │ │ │ │ │ └── without-relative-path-prefix.ts │ │ │ │ └── test/ │ │ │ │ ├── global-setup.test.ts │ │ │ │ └── setup-files.test.ts │ │ │ ├── global-setup-fail/ │ │ │ │ ├── example.test.ts │ │ │ │ ├── globalSetup/ │ │ │ │ │ └── error.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── inspect/ │ │ │ │ ├── math.test.ts │ │ │ │ ├── vitest.config.ts │ │ │ │ └── vitest.config.ts.timestamp-1713887058308-b154731a64b17.mjs │ │ │ ├── invalid-package/ │ │ │ │ ├── mock-bad-dep.test.ts │ │ │ │ ├── mock-wrapper-and-bad-dep.test.ts │ │ │ │ ├── mock-wrapper.test.ts │ │ │ │ └── wrapper.ts │ │ │ ├── list/ │ │ │ │ ├── basic.test.ts │ │ │ │ ├── custom.config.ts │ │ │ │ ├── describe-error.test.ts │ │ │ │ ├── fail.config.ts │ │ │ │ ├── math.test.ts │ │ │ │ ├── top-level-error.test.ts │ │ │ │ ├── type.test-d.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── location-filters/ │ │ │ │ ├── basic.test.ts │ │ │ │ ├── math-with-dashes-in-name.test.ts │ │ │ │ ├── math.test.ts │ │ │ │ ├── no-task-location.config.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── mocker/ │ │ │ │ ├── automock/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.js │ │ │ │ │ └── test.js │ │ │ │ ├── autospy/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.js │ │ │ │ │ └── test.js │ │ │ │ ├── manual-mock/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.js │ │ │ │ │ └── test.js │ │ │ │ └── redirect/ │ │ │ │ ├── __mocks__/ │ │ │ │ │ └── test.js │ │ │ │ ├── index.html │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── network-imports/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── public/ │ │ │ │ └── slash@3.0.0.js │ │ │ ├── no-module-runner/ │ │ │ │ ├── jsSetup.js │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── __mocks__/ │ │ │ │ │ │ └── redirect.ts │ │ │ │ │ ├── basic.ts │ │ │ │ │ ├── dependency.ts │ │ │ │ │ ├── from-async.ts │ │ │ │ │ ├── in-source/ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ ├── fibonacci.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── minus.ts │ │ │ │ │ ├── mock-async.ts │ │ │ │ │ ├── mock-js.d.ts │ │ │ │ │ ├── mock-js.js │ │ │ │ │ ├── mock-sync.ts │ │ │ │ │ ├── no-mock.ts │ │ │ │ │ ├── redirect.ts │ │ │ │ │ └── setups.ts │ │ │ │ ├── test/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── suite.test.ts.snap │ │ │ │ │ ├── automock.test.ts │ │ │ │ │ ├── autospy.test.ts │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ ├── manual-mock.test.ts │ │ │ │ │ ├── mock-async-factory.test.ts │ │ │ │ │ ├── redirect-mock.test.ts │ │ │ │ │ └── suite.test.ts │ │ │ │ ├── tsSetup.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vitest.config.ts │ │ │ ├── no-unexpected-logging/ │ │ │ │ ├── fixture-1.test.ts │ │ │ │ ├── fixture-10.test.ts │ │ │ │ ├── fixture-11.test.ts │ │ │ │ ├── fixture-12.test.ts │ │ │ │ ├── fixture-2.test.ts │ │ │ │ ├── fixture-3.test.ts │ │ │ │ ├── fixture-4.test.ts │ │ │ │ ├── fixture-5.test.ts │ │ │ │ ├── fixture-6.test.ts │ │ │ │ ├── fixture-7.test.ts │ │ │ │ ├── fixture-8.test.ts │ │ │ │ └── fixture-9.test.ts │ │ │ ├── optimize-deps/ │ │ │ │ ├── ssr.test.ts │ │ │ │ └── web.test.ts │ │ │ ├── otel-tests/ │ │ │ │ ├── basic.test.ts │ │ │ │ ├── otel.browser.sdk.js │ │ │ │ ├── otel.sdk.js │ │ │ │ └── vitest.config.ts │ │ │ ├── path-filter/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── plugin/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── project/ │ │ │ │ ├── packages/ │ │ │ │ │ ├── project_1/ │ │ │ │ │ │ └── base.test.ts │ │ │ │ │ ├── project_2/ │ │ │ │ │ │ └── base.test.ts │ │ │ │ │ └── space_1/ │ │ │ │ │ └── base.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── public-api/ │ │ │ │ ├── custom.spec.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── reported-tasks/ │ │ │ │ └── 1_first.test.ts │ │ │ ├── reporters/ │ │ │ │ ├── .gitignore │ │ │ │ ├── all-passing-or-skipped.test.ts │ │ │ │ ├── all-skipped.test.ts │ │ │ │ ├── basic/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.override.js │ │ │ │ ├── better-testsuite-name/ │ │ │ │ │ ├── space-1/ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── base.test.ts │ │ │ │ │ ├── space-2/ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── base.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── code-frame-line-limit.test.ts │ │ │ │ ├── console-interleave.test.ts │ │ │ │ ├── console-simple.test.ts │ │ │ │ ├── console-some-failing.test.ts │ │ │ │ ├── console.test.ts │ │ │ │ ├── custom-diff-config.test.ts │ │ │ │ ├── custom-diff-config.ts │ │ │ │ ├── custom-error/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── default/ │ │ │ │ │ ├── a.test.ts │ │ │ │ │ ├── b1.test.ts │ │ │ │ │ ├── b2.test.ts │ │ │ │ │ ├── print-index.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── duration/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── error-props/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── error-to-json.test.ts │ │ │ │ ├── error.test.ts │ │ │ │ ├── function-as-name.bench.ts │ │ │ │ ├── function-as-name.test.ts │ │ │ │ ├── github-actions/ │ │ │ │ │ └── flaky/ │ │ │ │ │ ├── math.spec.ts │ │ │ │ │ └── network.spec.ts │ │ │ │ ├── implementations/ │ │ │ │ │ ├── custom-reporter.js │ │ │ │ │ └── custom-reporter.ts │ │ │ │ ├── import-durations-25ms-throws.ts │ │ │ │ ├── import-durations-25ms.ts │ │ │ │ ├── import-durations-50ms.ts │ │ │ │ ├── import-durations-throws.test.ts │ │ │ │ ├── import-durations.test.ts │ │ │ │ ├── indicator-position.test.js │ │ │ │ ├── invalid-diff-config.ts │ │ │ │ ├── json-fail-import.test.ts │ │ │ │ ├── json-fail.test.ts │ │ │ │ ├── junit-cli-options/ │ │ │ │ │ ├── sample.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── long-loading-task.test.ts │ │ │ │ ├── many-errors/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── merge-errors/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── merge-reports/ │ │ │ │ │ ├── first.test.ts │ │ │ │ │ ├── second.test.ts │ │ │ │ │ └── vitest.config.js │ │ │ │ ├── merge-reports-module-graph/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ ├── second.test.ts │ │ │ │ │ ├── sub/ │ │ │ │ │ │ ├── format.ts │ │ │ │ │ │ └── subject.ts │ │ │ │ │ ├── util.ts │ │ │ │ │ └── vitest.config.js │ │ │ │ ├── metadata/ │ │ │ │ │ ├── metadata.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── ok.test.ts │ │ │ │ ├── pass-and-skip-test-suites.test.ts │ │ │ │ ├── project-name/ │ │ │ │ │ ├── example.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── repeats.test.ts │ │ │ │ ├── reporter-error/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── retry.test.ts │ │ │ │ ├── some-failing.test.ts │ │ │ │ ├── suite-hook-failure/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── test-for-title.test.ts │ │ │ │ ├── verbose/ │ │ │ │ │ ├── example-1.test.ts │ │ │ │ │ └── example-2.test.ts │ │ │ │ ├── vitest.config.ts │ │ │ │ └── with-syntax-error.test.js │ │ │ ├── restricted-fs/ │ │ │ │ ├── src/ │ │ │ │ │ └── math.js │ │ │ │ ├── tests/ │ │ │ │ │ └── basic.spec.js │ │ │ │ ├── vitest.config.ts │ │ │ │ └── vitest.setup.js │ │ │ ├── retry-config/ │ │ │ │ └── vitest.config.ts │ │ │ ├── rollup-error/ │ │ │ │ ├── not-found-export.test.ts │ │ │ │ ├── not-found-package.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── setup-files/ │ │ │ │ ├── console-setup.ts │ │ │ │ ├── empty-setup.ts │ │ │ │ └── empty.test.ts │ │ │ ├── skip-note/ │ │ │ │ └── basic.test.ts │ │ │ ├── ssr-runner/ │ │ │ │ ├── basic.test.ts │ │ │ │ ├── test-runner.js │ │ │ │ └── vitest.config.ts │ │ │ ├── ssr-runner-project/ │ │ │ │ ├── project/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ ├── test-runner.js │ │ │ │ │ └── vitest.config.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── stacktraces/ │ │ │ │ ├── add-in-imba.test.imba │ │ │ │ ├── add-in-js.test.js │ │ │ │ ├── add.test.ts │ │ │ │ ├── error-in-deps.test.js │ │ │ │ ├── error-in-package.test.js │ │ │ │ ├── error-with-stack.test.js │ │ │ │ ├── foo.js │ │ │ │ ├── frame.spec.imba │ │ │ │ ├── mocked-global.test.js │ │ │ │ ├── mocked-imported.test.js │ │ │ │ ├── mocked-imported.test.ts │ │ │ │ ├── require-assertions.test.js │ │ │ │ ├── reset-modules.test.ts │ │ │ │ ├── setup.js │ │ │ │ ├── utils.ts │ │ │ │ └── vite.config.ts │ │ │ ├── stacktraces-custom-helper/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── helper.ts │ │ │ ├── standalone/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── test-tags/ │ │ │ │ └── basic.test.ts │ │ │ ├── tty/ │ │ │ │ ├── example.test.ts │ │ │ │ ├── example.ts │ │ │ │ ├── math.test.ts │ │ │ │ ├── math.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── vitest.config.js │ │ │ ├── vm-threads/ │ │ │ │ ├── import-external-css-assets.test.js │ │ │ │ ├── module.test.js │ │ │ │ ├── not-found.test.ts │ │ │ │ ├── require-cjs.test.js │ │ │ │ ├── src/ │ │ │ │ │ └── external/ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ └── file2.txt │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── empty.css │ │ │ │ │ │ ├── processed.css │ │ │ │ │ │ └── processed.module.css │ │ │ │ │ ├── default-cjs.cjs │ │ │ │ │ ├── export-default-cjs.js │ │ │ │ │ ├── export-nested-default-cjs.js │ │ │ │ │ ├── nested-default-cjs.cjs │ │ │ │ │ ├── not-found.js │ │ │ │ │ ├── package-null/ │ │ │ │ │ │ └── package-null.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── primitive-cjs.cjs │ │ │ │ └── vitest.config.ts │ │ │ ├── watch/ │ │ │ │ ├── 42.txt │ │ │ │ ├── example.test.ts │ │ │ │ ├── example.ts │ │ │ │ ├── force-watch/ │ │ │ │ │ └── trigger.js │ │ │ │ ├── global-setup.ts │ │ │ │ ├── math.test.ts │ │ │ │ ├── math.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── windows-drive-case/ │ │ │ │ └── basic.test.ts │ │ │ └── workspace/ │ │ │ ├── api/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vite.custom.config.js │ │ │ ├── config-empty/ │ │ │ │ └── vitest.config.js │ │ │ ├── config-extends/ │ │ │ │ ├── repro.test.js │ │ │ │ └── vitest.config.ts │ │ │ ├── config-import-analysis/ │ │ │ │ ├── dep.ts │ │ │ │ ├── packages/ │ │ │ │ │ └── a/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── invalid-duplicate-configs/ │ │ │ │ ├── vitest.config.one.js │ │ │ │ ├── vitest.config.ts │ │ │ │ └── vitest.config.two.js │ │ │ ├── invalid-duplicate-inline/ │ │ │ │ └── vitest.config.ts │ │ │ ├── invalid-non-existing-config/ │ │ │ │ └── vitest.config.ts │ │ │ ├── negated/ │ │ │ │ ├── packages/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test.test.ts │ │ │ │ │ ├── b/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test.test.ts │ │ │ │ │ └── c/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── project-1/ │ │ │ │ └── calculator-1.test.ts │ │ │ ├── project-2/ │ │ │ │ └── calculator-2.test.ts │ │ │ ├── several-configs/ │ │ │ │ ├── test/ │ │ │ │ │ ├── 1_test.test.ts │ │ │ │ │ ├── 2_test.test.ts │ │ │ │ │ ├── vitest.config.one.ts │ │ │ │ │ └── vitest.config.two.ts │ │ │ │ └── vitest.config.ts │ │ │ └── several-folders/ │ │ │ ├── apps/ │ │ │ │ └── b/ │ │ │ │ ├── package.json │ │ │ │ └── test.test.ts │ │ │ ├── projects/ │ │ │ │ └── a/ │ │ │ │ ├── package.json │ │ │ │ └── test.test.ts │ │ │ └── vitest.config.ts │ │ ├── package.json │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── benchmarking.test.ts.snap │ │ │ │ ├── fails.test.ts.snap │ │ │ │ ├── list.test.ts.snap │ │ │ │ ├── no-module-runner.test.ts.snap │ │ │ │ └── stacktraces.test.ts.snap │ │ │ ├── annotations.test.ts │ │ │ ├── around-each.test.ts │ │ │ ├── artifacts.test.ts │ │ │ ├── assertion-helper.test.ts │ │ │ ├── bail-race.test.ts │ │ │ ├── benchmarking.test.ts │ │ │ ├── browser-multiple.test.ts │ │ │ ├── caching.test.ts │ │ │ ├── cancel-run.test.ts │ │ │ ├── concurrent.test.ts │ │ │ ├── config/ │ │ │ │ ├── bail.test.ts │ │ │ │ ├── browser-configs.test.ts │ │ │ │ ├── passWithNoTests.test.ts │ │ │ │ ├── sequence-shuffle.test.ts │ │ │ │ └── watchTriggerPattern.test.ts │ │ │ ├── config-loader.test.ts │ │ │ ├── configureVitest.test.ts │ │ │ ├── console.test.ts │ │ │ ├── create-vitest.test.ts │ │ │ ├── custom-pool.test.ts │ │ │ ├── custom-runner.test.ts │ │ │ ├── detect-async-leaks.test.ts │ │ │ ├── dotted-files.test.ts │ │ │ ├── expect-soft.test.ts │ │ │ ├── expect-task.test.ts │ │ │ ├── fails.test.ts │ │ │ ├── fixtures/ │ │ │ │ └── reporters/ │ │ │ │ └── html/ │ │ │ │ ├── all-passing-or-skipped/ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ ├── index-BUCFJtth.js │ │ │ │ │ │ └── index-DlhE0rqZ.css │ │ │ │ │ └── index.html │ │ │ │ └── fail/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── index-BUCFJtth.js │ │ │ │ │ └── index-DlhE0rqZ.css │ │ │ │ └── index.html │ │ │ ├── fs-cached-check.test.ts │ │ │ ├── get-state.test.ts │ │ │ ├── git-changed.test.ts │ │ │ ├── global-setup.test.ts │ │ │ ├── group-order.test.ts │ │ │ ├── init.test.ts │ │ │ ├── inspect.test.ts │ │ │ ├── list-changed.test.ts │ │ │ ├── list.test.ts │ │ │ ├── location-filters.test.ts │ │ │ ├── mocking.test.ts │ │ │ ├── network-imports.test.ts │ │ │ ├── no-module-runner.test.ts │ │ │ ├── no-unexpected-logging.test.ts │ │ │ ├── node-builtins.test.ts │ │ │ ├── open-telemetry.test.ts │ │ │ ├── optimize-deps.test.ts │ │ │ ├── oxc.test.ts │ │ │ ├── path-filter.test.ts │ │ │ ├── plugin.test.ts │ │ │ ├── print-error.test.ts │ │ │ ├── projects.test.ts │ │ │ ├── public-api.test.ts │ │ │ ├── public-mocker.test.ts │ │ │ ├── reported-tasks.test.ts │ │ │ ├── reporters/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── default.test.ts.snap │ │ │ │ │ ├── html.test.ts.snap │ │ │ │ │ ├── json.test.ts.snap │ │ │ │ │ ├── junit.test.ts.snap │ │ │ │ │ ├── reporters.spec.ts.snap │ │ │ │ │ └── reporters.test.ts.snap │ │ │ │ ├── agent.test.ts │ │ │ │ ├── code-frame-line-limit.test.ts │ │ │ │ ├── configuration-options.test-d.ts │ │ │ │ ├── console.test.ts │ │ │ │ ├── custom-diff-config.test.ts │ │ │ │ ├── custom-reporter.test.ts │ │ │ │ ├── default.test.ts │ │ │ │ ├── dot.test.ts │ │ │ │ ├── error-to-json.test.ts │ │ │ │ ├── function-as-name.test.ts │ │ │ │ ├── github-actions.test.ts │ │ │ │ ├── html.test.ts │ │ │ │ ├── import-durations.test.ts │ │ │ │ ├── indicator-position.test.ts │ │ │ │ ├── json.test.ts │ │ │ │ ├── junit.test.ts │ │ │ │ ├── logger.test.ts │ │ │ │ ├── merge-reports.test.ts │ │ │ │ ├── reporter-error.test.ts │ │ │ │ ├── reporters.test.ts │ │ │ │ ├── silent.test.ts │ │ │ │ ├── tap.test.ts │ │ │ │ ├── test-run.test.ts │ │ │ │ ├── tree.test.ts │ │ │ │ ├── utils.ts │ │ │ │ └── verbose.test.ts │ │ │ ├── restricted-fs.test.ts │ │ │ ├── retry-clear-mocks.test.ts │ │ │ ├── rollup-error.test.ts │ │ │ ├── run-custom-env.test.ts │ │ │ ├── scoped-fixtures.test.ts │ │ │ ├── server-url.test.ts │ │ │ ├── setup-files.test.ts │ │ │ ├── shared-env.test.ts │ │ │ ├── signal.test.ts │ │ │ ├── skip-note.test.ts │ │ │ ├── ssr-runner.test.ts │ │ │ ├── stacktraces.test.ts │ │ │ ├── standalone.test.ts │ │ │ ├── static-collect.test.ts │ │ │ ├── test-meta.test.ts │ │ │ ├── test-specifications.test.ts │ │ │ ├── test-tags.test.ts │ │ │ ├── tty.test.ts │ │ │ ├── unhandled-ignore.test.ts │ │ │ ├── unhandled-rejections.test.ts │ │ │ ├── vm-threads.test.ts │ │ │ ├── watch/ │ │ │ │ ├── change-project.test.ts │ │ │ │ ├── config-watching.test.ts │ │ │ │ ├── file-watching.test.ts │ │ │ │ ├── global-setup-rerun.test.ts │ │ │ │ ├── related.test.ts │ │ │ │ ├── reporter-failed.test.ts │ │ │ │ ├── stdin.test.ts │ │ │ │ ├── stdout.test.ts │ │ │ │ └── workspaces.test.ts │ │ │ ├── windows-drive-case.test.ts │ │ │ └── workers-option.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── config/ │ │ ├── deps/ │ │ │ ├── optimizer/ │ │ │ │ ├── external/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ └── optimized/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── test-dep-conditions/ │ │ │ │ ├── false.js │ │ │ │ ├── indirect.js │ │ │ │ ├── inline.js │ │ │ │ ├── package.json │ │ │ │ └── true.js │ │ │ ├── test-dep-conditions-indirect/ │ │ │ │ ├── false.js │ │ │ │ ├── package.json │ │ │ │ └── true.js │ │ │ ├── test-dep-config/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── test-dep-virtual/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ └── vite-ssr-resolve/ │ │ │ ├── inline-dep/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── other-dep/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ └── ssr-no-external-dep/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── fixtures/ │ │ │ ├── allowed-exec-args-fixtures/ │ │ │ │ ├── allowed-exec-argv.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── browser-no-config/ │ │ │ │ └── vitest.config.ts │ │ │ ├── browser-persistent-context/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── cache/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── second.test.ts │ │ │ ├── chai-config/ │ │ │ │ ├── test-each-title.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── conditions/ │ │ │ │ ├── basic.test.js │ │ │ │ └── vite.config.ts │ │ │ ├── conditions-pkg/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── conditions-projects/ │ │ │ │ ├── project-a/ │ │ │ │ │ ├── basic.test.js │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── project-b/ │ │ │ │ │ ├── basic.test.js │ │ │ │ │ └── vitest.config.ts │ │ │ │ └── vite.config.ts │ │ │ ├── conditions-subpackage/ │ │ │ │ ├── custom.js │ │ │ │ ├── default.js │ │ │ │ ├── development.js │ │ │ │ ├── package.json │ │ │ │ └── production.js │ │ │ ├── conditions-test/ │ │ │ │ ├── conditions.test.js │ │ │ │ └── vitest.config.ts │ │ │ ├── console/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── console-batch/ │ │ │ │ └── basic.test.ts │ │ │ ├── console-color/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── coverage-test/ │ │ │ │ └── example.ts │ │ │ ├── css/ │ │ │ │ ├── App.css │ │ │ │ ├── App.module.css │ │ │ │ ├── test/ │ │ │ │ │ ├── default-css.spec.ts │ │ │ │ │ ├── non-scope-module.spec.ts │ │ │ │ │ ├── process-css.spec.ts │ │ │ │ │ ├── process-inline.spec.ts │ │ │ │ │ ├── process-module.spec.ts │ │ │ │ │ └── scope-module.spec.ts │ │ │ │ └── utils.ts │ │ │ ├── diff/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vite.config.ts │ │ │ ├── exclude/ │ │ │ │ ├── math.test.ts │ │ │ │ ├── math.ts │ │ │ │ ├── string.test.ts │ │ │ │ ├── string.ts │ │ │ │ └── vitest.exclude.config.ts │ │ │ ├── exec-args-fixtures/ │ │ │ │ ├── forks.test.ts │ │ │ │ ├── threads.test.ts │ │ │ │ └── vmThreads.test.ts │ │ │ ├── external/ │ │ │ │ └── dynamic/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── filters/ │ │ │ │ └── test/ │ │ │ │ ├── config.test.ts │ │ │ │ ├── dont-run-this.test.ts │ │ │ │ └── example.test.ts │ │ │ ├── filters-slash/ │ │ │ │ ├── test/ │ │ │ │ │ ├── basic/ │ │ │ │ │ │ └── a.test.ts │ │ │ │ │ ├── basic-foo/ │ │ │ │ │ │ └── a.test.ts │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── foo-basic/ │ │ │ │ │ └── a.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── fixture-no-async/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── hook-timeout/ │ │ │ │ └── basic.test.ts │ │ │ ├── inline-setup-file/ │ │ │ │ ├── file-setup.js │ │ │ │ ├── test.test.js │ │ │ │ └── vitest.config.js │ │ │ ├── mixed-environments/ │ │ │ │ ├── project/ │ │ │ │ │ └── test/ │ │ │ │ │ ├── happy-dom.test.ts │ │ │ │ │ ├── jsdom.test.ts │ │ │ │ │ ├── node.test.ts │ │ │ │ │ └── workspace-project.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── mode/ │ │ │ │ ├── example.benchmark.ts │ │ │ │ ├── example.test.ts │ │ │ │ ├── vitest.benchmark.config.ts │ │ │ │ └── vitest.test.config.ts │ │ │ ├── no-browser-workspace/ │ │ │ │ └── vitest.config.ts │ │ │ ├── no-exec-args-fixtures/ │ │ │ │ ├── no-exec-argv.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── optimizer/ │ │ │ │ └── external/ │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── pool/ │ │ │ │ ├── a.test.ts │ │ │ │ ├── b.test.ts │ │ │ │ ├── c.test.ts │ │ │ │ ├── print-config.test.ts │ │ │ │ ├── print-testfiles.test.ts │ │ │ │ └── write-to-stdout-and-stderr.test.ts │ │ │ ├── public-config/ │ │ │ │ ├── vitest.config.ts │ │ │ │ └── vitest.custom.config.ts │ │ │ ├── retry/ │ │ │ │ ├── retry.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── run-mode/ │ │ │ │ ├── example.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── sequence-concurrent/ │ │ │ │ ├── sequence-concurrent-false-concurrent.test.ts │ │ │ │ ├── sequence-concurrent-false-sequential.test.ts │ │ │ │ ├── sequence-concurrent-true-concurrent.test.ts │ │ │ │ └── sequence-concurrent-true-sequential.test.ts │ │ │ ├── shard/ │ │ │ │ ├── test/ │ │ │ │ │ ├── 1.test.js │ │ │ │ │ ├── 2.test.js │ │ │ │ │ └── 3.test.js │ │ │ │ └── vitest.config.js │ │ │ ├── shard-4-files/ │ │ │ │ ├── test/ │ │ │ │ │ ├── 1.test.js │ │ │ │ │ ├── 2.test.js │ │ │ │ │ ├── 3.test.js │ │ │ │ │ └── 4.test.js │ │ │ │ └── vitest.config.js │ │ │ ├── snapshot-path-context/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── project1/ │ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ │ └── project2/ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ ├── basic.test.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── test/ │ │ │ │ ├── example.test.ts │ │ │ │ ├── fake-timers.test.ts │ │ │ │ └── vitest.config.js │ │ │ ├── vitest.config.js │ │ │ ├── workers-option/ │ │ │ │ ├── example.test.ts │ │ │ │ └── vitest.config.js │ │ │ └── workspace-flags/ │ │ │ ├── projects/ │ │ │ │ ├── cli-config.test.ts │ │ │ │ └── vitest.config.js │ │ │ └── vitest.config.js │ │ ├── package.json │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── diff.test.ts.snap │ │ │ │ └── hook-timeout.test.ts.snap │ │ │ ├── browser-persistent-context.test.ts │ │ │ ├── cache.test.ts │ │ │ ├── chai-config.test.ts │ │ │ ├── cli-config.test.ts │ │ │ ├── conditions-cli.test.ts │ │ │ ├── config-types.test-d.ts │ │ │ ├── console-color.test.ts │ │ │ ├── console.test.ts │ │ │ ├── css-configs.test.ts │ │ │ ├── diff.test.ts │ │ │ ├── exclude.test.ts │ │ │ ├── exec-args.test.ts │ │ │ ├── external.test.ts │ │ │ ├── failures.test.ts │ │ │ ├── fixture-no-async.test.ts │ │ │ ├── hook-timeout.test.ts │ │ │ ├── inline-setup-file.test.ts │ │ │ ├── mixed-environments.test.ts │ │ │ ├── mode.test.ts │ │ │ ├── optimizer.test.ts │ │ │ ├── override.test.ts │ │ │ ├── pass-empty-files.test.ts │ │ │ ├── pool.test.ts │ │ │ ├── public.test.ts │ │ │ ├── retry.test.ts │ │ │ ├── sequence-concurrent.test.ts │ │ │ ├── shard.test.ts │ │ │ ├── snapshot.test.ts │ │ │ ├── testname-pattern.test.ts │ │ │ └── vite-ssr-resolve.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── core/ │ │ ├── __mocks__/ │ │ │ ├── @vitest/ │ │ │ │ └── test-fn.ts │ │ │ ├── @vueuse/ │ │ │ │ └── integrations/ │ │ │ │ └── useJwt.ts │ │ │ ├── axios/ │ │ │ │ └── index.ts │ │ │ ├── custom-lib.ts │ │ │ ├── extension.js.ts │ │ │ ├── fs/ │ │ │ │ └── promises.cjs │ │ │ ├── fs.cjs │ │ │ ├── timers.ts │ │ │ ├── virtual-module.ts │ │ │ └── vscode-mocks.ts │ │ ├── deps/ │ │ │ ├── dep-cjs/ │ │ │ │ ├── esm-comment.js │ │ │ │ ├── esm-string.js │ │ │ │ └── package.json │ │ │ ├── dep-esm-non-existing/ │ │ │ │ ├── index.mjs │ │ │ │ ├── index.mts │ │ │ │ └── package.json │ │ │ ├── dep-fn/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── dep-nested-cjs/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── dep1/ │ │ │ │ ├── esm/ │ │ │ │ │ └── index.js │ │ │ │ └── package.json │ │ │ └── dep2/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── index.html │ │ ├── package.json │ │ ├── projects/ │ │ │ ├── custom-lib/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── inline-lib/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── vite-environment-external/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ └── vite-external/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ └── submodule.ts │ │ │ ├── aliased-mod.ts │ │ │ ├── circularA.ts │ │ │ ├── circularB.ts │ │ │ ├── cjs/ │ │ │ │ ├── array-cjs.js │ │ │ │ ├── bare-cjs.js │ │ │ │ ├── class-cjs.js │ │ │ │ ├── default-function.d.ts │ │ │ │ ├── default-function.js │ │ │ │ ├── module-cjs.ts │ │ │ │ ├── nested-default-cjs.js │ │ │ │ ├── primitive-cjs.js │ │ │ │ ├── promise-export.js │ │ │ │ └── prototype-cjs.js │ │ │ ├── class-inheritence/ │ │ │ │ ├── bar.ts │ │ │ │ └── foo.ts │ │ │ ├── custom/ │ │ │ │ └── gardener.ts │ │ │ ├── dynamic-import.ts │ │ │ ├── env.ts │ │ │ ├── esm/ │ │ │ │ ├── esm.js │ │ │ │ ├── internal-esm.mjs │ │ │ │ └── package.json │ │ │ ├── exec.ts │ │ │ ├── external/ │ │ │ │ ├── default-cjs.js │ │ │ │ ├── nested-default-cjs.js │ │ │ │ ├── package.json │ │ │ │ ├── pkg-browser/ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── ssr.js │ │ │ │ │ └── web.js │ │ │ │ └── pkg-node/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── package.json │ │ │ │ ├── ssr.js │ │ │ │ └── web.js │ │ │ ├── file-css.css │ │ │ ├── file-less.less │ │ │ ├── file-sass.sass │ │ │ ├── file-scss.scss │ │ │ ├── file-txt.txt │ │ │ ├── global-mock.ts │ │ │ ├── in-source/ │ │ │ │ ├── add.ts │ │ │ │ ├── fibonacci.ts │ │ │ │ └── index.ts │ │ │ ├── mockedA.ts │ │ │ ├── mockedB.ts │ │ │ ├── mockedC.ts │ │ │ ├── mockedD.ts │ │ │ ├── mockedE.ts │ │ │ ├── mocks/ │ │ │ │ ├── A.ts │ │ │ │ ├── B.ts │ │ │ │ ├── autospying-namespace/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── namespaceTarget.ts │ │ │ │ ├── cyclic-deps/ │ │ │ │ │ ├── module-1.mjs │ │ │ │ │ ├── module-2.mjs │ │ │ │ │ ├── module-3.mjs │ │ │ │ │ └── module-4.mjs │ │ │ │ ├── default.ts │ │ │ │ ├── dynamic-module.d.ts │ │ │ │ ├── dynamic-module.js │ │ │ │ ├── example.ts │ │ │ │ ├── export-default-circle-b.ts │ │ │ │ ├── export-default-circle-index.ts │ │ │ │ ├── external/ │ │ │ │ │ ├── cjs-pseudoesm.cjs │ │ │ │ │ ├── default-cjs.cjs │ │ │ │ │ ├── default-function.cjs │ │ │ │ │ └── external.mjs │ │ │ │ ├── has space in path.ts │ │ │ │ ├── integration.ts │ │ │ │ ├── log.ts │ │ │ │ ├── main.js │ │ │ │ ├── moduleA.ts │ │ │ │ ├── moduleB.ts │ │ │ │ ├── moduleWithSymbol.ts │ │ │ │ ├── retry-dynamic-import.ts │ │ │ │ ├── set-foo.ts │ │ │ │ ├── squared.js │ │ │ │ └── test-fn-magic.ts │ │ │ ├── module-esm.ts │ │ │ ├── read-hello-world.ts │ │ │ ├── relative-import.ts │ │ │ ├── rely-on-hoisted.ts │ │ │ ├── self/ │ │ │ │ ├── foo.ts │ │ │ │ └── index.ts │ │ │ ├── submodule.ts │ │ │ ├── timeout.ts │ │ │ ├── wasm/ │ │ │ │ ├── add.wasm │ │ │ │ ├── wasm-bindgen/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index_bg.js │ │ │ │ │ ├── index_bg.wasm │ │ │ │ │ └── package.json │ │ │ │ └── wasm-bindgen-no-cyclic/ │ │ │ │ ├── README.md │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index_bg.js │ │ │ │ ├── index_bg.wasm │ │ │ │ ├── index_bg.wasm.d.ts │ │ │ │ └── package.json │ │ │ └── web-worker/ │ │ │ ├── eventListenerWorker.ts │ │ │ ├── mock/ │ │ │ │ ├── worker-dep.ts │ │ │ │ └── worker.ts │ │ │ ├── objectWorker.ts │ │ │ ├── selfWorker.ts │ │ │ ├── selfWorkerDep.ts │ │ │ ├── sharedWorker.ts │ │ │ ├── worker-globals.ts │ │ │ └── worker.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── injector-mock.test.ts.snap │ │ │ │ ├── jest-expect.test.ts.snap │ │ │ │ ├── mocked.test.ts.snap │ │ │ │ ├── nested-suite.test.ts.snap │ │ │ │ ├── serialize.test.ts.snap │ │ │ │ ├── snapshot-concurrent-sync.test.ts.snap │ │ │ │ ├── snapshot-concurrent.test.ts.snap │ │ │ │ ├── snapshot.test.ts.snap │ │ │ │ ├── suite.test.tsx.snap │ │ │ │ ├── test-for-suite.test.ts.snap │ │ │ │ └── test-for.test.ts.snap │ │ │ ├── alias.test.ts │ │ │ ├── basic.test.ts │ │ │ ├── browserAutomocker.test.ts │ │ │ ├── builtin.test.ts │ │ │ ├── chai-style-assertions.test.ts │ │ │ ├── chainable.test.ts │ │ │ ├── child-specific.child_process.test.ts │ │ │ ├── circular.test.ts │ │ │ ├── cli-test.test.ts │ │ │ ├── concurrent-suite.test.ts │ │ │ ├── concurrent.spec.ts │ │ │ ├── custom.test.ts │ │ │ ├── date-mock.test.ts │ │ │ ├── define-ssr.test.ts │ │ │ ├── define-web.test.ts │ │ │ ├── diff.test.ts │ │ │ ├── do-mock-reset-modules.test.ts │ │ │ ├── do-mock.test.ts │ │ │ ├── dom-single-line-options.test.ts │ │ │ ├── dom.test.ts │ │ │ ├── dual-package-hazard.test.ts │ │ │ ├── dynamic-import.test.ts │ │ │ ├── each.test.ts │ │ │ ├── edge.test.ts │ │ │ ├── env-glob.test.ts │ │ │ ├── env-jsdom.test.ts │ │ │ ├── env-runtime.test.ts │ │ │ ├── env.test.ts │ │ │ ├── environments/ │ │ │ │ ├── custom-env.test.ts │ │ │ │ ├── happy-dom.spec.ts │ │ │ │ ├── jsdom.spec.ts │ │ │ │ └── node.spec.ts │ │ │ ├── error.test.ts │ │ │ ├── esnext-decorator.test.ts │ │ │ ├── esnext.test.ts │ │ │ ├── execution-order.test.ts │ │ │ ├── expect-circular.test.ts │ │ │ ├── expect-poll.test.ts │ │ │ ├── expect.test-d.ts │ │ │ ├── expect.test.ts │ │ │ ├── exports.test.ts │ │ │ ├── external-module-directory.test.ts │ │ │ ├── file-path.test.ts │ │ │ ├── fixture-comments-between-destructure.test.ts │ │ │ ├── fixture-concurrent-beforeEach.test.ts │ │ │ ├── fixture-concurrent.test.ts │ │ │ ├── fixture-initialization.test.ts │ │ │ ├── fixture-options.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── hello-mock.ts │ │ │ │ ├── hi.txt │ │ │ │ ├── increment-indirect.ts │ │ │ │ ├── increment.ts │ │ │ │ ├── mocked-dependency.ts │ │ │ │ ├── named-overwrite-all/ │ │ │ │ │ ├── dep1.js │ │ │ │ │ ├── dep2.js │ │ │ │ │ └── main.js │ │ │ │ ├── snapshot-empty.txt │ │ │ │ ├── snapshots/ │ │ │ │ │ ├── basic/ │ │ │ │ │ │ ├── input.json │ │ │ │ │ │ └── output.css │ │ │ │ │ └── multiple/ │ │ │ │ │ ├── input.json │ │ │ │ │ └── output.css │ │ │ │ ├── timers.suite.ts │ │ │ │ └── virtual-module-indirect.ts │ │ │ ├── fn.test.ts │ │ │ ├── fs.test.ts │ │ │ ├── handled-unhandled.test.ts │ │ │ ├── happy-dom-custom.test.ts │ │ │ ├── happy-dom.test.ts │ │ │ ├── hoist-import.test.ts │ │ │ ├── hoisted-async-simple.test.ts │ │ │ ├── hoisted-simple.test.ts │ │ │ ├── hooks-list.test.ts │ │ │ ├── hooks-parallel.test.ts │ │ │ ├── hooks-stack.test.ts │ │ │ ├── hooks.test.js │ │ │ ├── hooks.test.ts │ │ │ ├── immutable.test.ts │ │ │ ├── import-client.test.ts │ │ │ ├── import-meta-resolve.test.ts │ │ │ ├── imports.test.ts │ │ │ ├── injector-esm.test.ts │ │ │ ├── injector-mock.test.ts │ │ │ ├── inline-snap.test.ts │ │ │ ├── inlined.test.ts │ │ │ ├── isolate.test.ts │ │ │ ├── jest-expect-no-url.test.ts │ │ │ ├── jest-expect.test.ts │ │ │ ├── jest-matcher-utils.test.ts │ │ │ ├── jest-mock.test.ts │ │ │ ├── local-context.test.ts │ │ │ ├── lot-of-tests.test.ts │ │ │ ├── math.test.ts │ │ │ ├── memory-limit.test.ts │ │ │ ├── mock-fs.test.ts │ │ │ ├── mock-internals.test.ts │ │ │ ├── mocked-circular.test.ts │ │ │ ├── mocked-class-restore-all.test.ts │ │ │ ├── mocked-class-restore-explicit.test.ts │ │ │ ├── mocked-class.test.ts │ │ │ ├── mocked-import-circular.test.ts │ │ │ ├── mocked-no-mocks-same.test.ts │ │ │ ├── mocked-no-mocks.test.ts │ │ │ ├── mocked-node-module.test.ts │ │ │ ├── mocked-public-key.test.ts │ │ │ ├── mocked.test.js │ │ │ ├── mocked.test.ts │ │ │ ├── mocking/ │ │ │ │ ├── already-hoisted.test.ts │ │ │ │ ├── automocking-class-inheritence.test.ts │ │ │ │ ├── automocking.spec.ts │ │ │ │ ├── autospying.test.ts │ │ │ │ ├── axios-mocked.test.ts │ │ │ │ ├── axios-not-mocked.test.ts │ │ │ │ ├── circular-mocks.spec.ts │ │ │ │ ├── custom-module-directory.spec.ts │ │ │ │ ├── cyclic-import-actual.spec.ts │ │ │ │ ├── cyclic-import-original.spec.ts │ │ │ │ ├── destructured.test.ts │ │ │ │ ├── error-mock.spec.ts │ │ │ │ ├── external.test.ts │ │ │ │ ├── factory.test.ts │ │ │ │ ├── has-extension.spec.ts │ │ │ │ ├── hoisted.test.ts │ │ │ │ ├── integration.test.ts │ │ │ │ ├── nested-default.spec.ts │ │ │ │ ├── retry-dynamic-import.test.ts │ │ │ │ ├── self-importing.test.ts │ │ │ │ ├── spaced.spec.ts │ │ │ │ ├── tinyspy.test.ts │ │ │ │ ├── vi-fn.test-d.ts │ │ │ │ ├── vi-fn.test.ts │ │ │ │ ├── vi-mockObject.test.ts │ │ │ │ ├── vi-spyOn.test.ts │ │ │ │ └── virtual.test.ts │ │ │ ├── modes.test.ts │ │ │ ├── module-diagnostic.test.ts │ │ │ ├── module.test.ts │ │ │ ├── moved-snapshot.test.ts │ │ │ ├── moved-snapshot.test.ts.snap │ │ │ ├── named-overwrite-all.test.ts │ │ │ ├── nested-only.test.ts │ │ │ ├── nested-suite.test.ts │ │ │ ├── nested-test.test.ts │ │ │ ├── node-protocol-jsdom.spec.ts │ │ │ ├── node-protocol-node.spec.ts │ │ │ ├── on-failed.test.ts │ │ │ ├── on-finished.test.ts │ │ │ ├── only.test.ts │ │ │ ├── parse-cjs-conditions.test.ts │ │ │ ├── pattern.test.ts │ │ │ ├── propagate-options-nested-suite.test.ts │ │ │ ├── random.test.ts │ │ │ ├── repeats.test.ts │ │ │ ├── replace-matcher.test.ts │ │ │ ├── require.test.ts │ │ │ ├── resolve-file-url.test.ts │ │ │ ├── resolve-file-url~dep.js │ │ │ ├── resolve-ssr.test.ts │ │ │ ├── resolve-web.test.ts │ │ │ ├── retry-condition.test.ts │ │ │ ├── retry-delay.test.ts │ │ │ ├── retry-only.test.ts │ │ │ ├── retry.test.ts │ │ │ ├── rpc.spec.ts │ │ │ ├── run-if.test.ts │ │ │ ├── self.test.ts │ │ │ ├── sequencers.test.ts │ │ │ ├── sequential.test.ts │ │ │ ├── serialize.test.ts │ │ │ ├── setup.ts │ │ │ ├── skip-reset-state.test.ts │ │ │ ├── skip.test.ts │ │ │ ├── snapshot-1.txt │ │ │ ├── snapshot-2.txt │ │ │ ├── snapshot-async.test.ts │ │ │ ├── snapshot-concurrent-sync.test.ts │ │ │ ├── snapshot-concurrent.test.ts │ │ │ ├── snapshot-custom-serializer.test.ts │ │ │ ├── snapshot-file.test.ts │ │ │ ├── snapshot-inline-(parentheses).test.ts │ │ │ ├── snapshot-inline.test.ts │ │ │ ├── snapshot-react-18.test.jsx │ │ │ ├── snapshot-react.test.jsx │ │ │ ├── snapshot.test.ts │ │ │ ├── snapshots-outside.ts │ │ │ ├── sourcemap.test.ts │ │ │ ├── spy.test.ts │ │ │ ├── strict.test.js │ │ │ ├── stubbed-process.test.ts │ │ │ ├── stubs.test.ts │ │ │ ├── suite.test.tsx │ │ │ ├── tab-effect.spec.mjs │ │ │ ├── task-collector.test.ts │ │ │ ├── task-names.test.ts │ │ │ ├── test-extend-with-top-level-hooks.test.ts │ │ │ ├── test-extend.test.ts │ │ │ ├── test-for-suite.test.ts │ │ │ ├── test-for.test.ts │ │ │ ├── test-name-pattern.test.ts │ │ │ ├── test-options.test.ts │ │ │ ├── test-tags-filter.test.ts │ │ │ ├── threads-specific.threads.test.ts │ │ │ ├── timeout.spec.ts │ │ │ ├── timers-getMockedSystemTime.test.ts │ │ │ ├── timers-jsdom.test.ts │ │ │ ├── timers-node.test.ts │ │ │ ├── timers-queueMicrotask.test.ts │ │ │ ├── unhandled.test.ts │ │ │ ├── unmock-import.test.ts │ │ │ ├── url-ssr.test.ts │ │ │ ├── url-web.test.ts │ │ │ ├── utils-display.spec.ts │ │ │ ├── utils.spec.ts │ │ │ ├── vi.spec.ts │ │ │ ├── vi.test-d.ts │ │ │ ├── wait.test.ts │ │ │ ├── wasm.test.ts │ │ │ ├── web-worker-jsdom.test.ts │ │ │ ├── web-worker-mock.test.ts │ │ │ ├── web-worker-node.test.ts │ │ │ └── write-file-dynamic-import.test.ts │ │ ├── tsconfig.typecheck.json │ │ ├── types/ │ │ │ ├── env.d.ts │ │ │ └── vite.d.ts │ │ ├── vite.config.ts │ │ └── vitest-environment-custom/ │ │ ├── index.ts │ │ └── package.json │ ├── coverage-test/ │ │ ├── fixtures/ │ │ │ ├── configs/ │ │ │ │ ├── vitest.config.conditional.ts │ │ │ │ ├── vitest.config.configure-vitest-hook.ts │ │ │ │ ├── vitest.config.decorators.ts │ │ │ │ ├── vitest.config.multi-transform.ts │ │ │ │ ├── vitest.config.multi-transforms.ts │ │ │ │ ├── vitest.config.query-param-transform.ts │ │ │ │ ├── vitest.config.thresholds-auto-update.ts │ │ │ │ ├── vitest.config.ts │ │ │ │ ├── vitest.config.virtual-files.ts │ │ │ │ └── vitest.config.workspace.ts │ │ │ ├── custom-provider.ts │ │ │ ├── custom-reporter.cjs │ │ │ ├── setup.isolation.ts │ │ │ ├── setup.ts │ │ │ ├── src/ │ │ │ │ ├── .should-be-excluded-from-coverage/ │ │ │ │ │ └── excluded-from-coverage.ts │ │ │ │ ├── Vue/ │ │ │ │ │ ├── Counter/ │ │ │ │ │ │ ├── Counter.component.ts │ │ │ │ │ │ ├── Counter.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Defined.vue │ │ │ │ │ ├── Hello.vue │ │ │ │ │ └── vue.shim.d.ts │ │ │ │ ├── another-setup.ts │ │ │ │ ├── branch.ts │ │ │ │ ├── circularA.ts │ │ │ │ ├── circularB.ts │ │ │ │ ├── cjs-dependency.ts │ │ │ │ ├── conditional/ │ │ │ │ │ ├── ssr.ts │ │ │ │ │ └── web.ts │ │ │ │ ├── covered.custom-1 │ │ │ │ ├── decorators.ts │ │ │ │ ├── dynamic-files.ts │ │ │ │ ├── empty-lines.ts │ │ │ │ ├── even.ts │ │ │ │ ├── file-to-change.ts │ │ │ │ ├── ignore-hints.ts │ │ │ │ ├── implicit-else.ts │ │ │ │ ├── import-meta-env.ts │ │ │ │ ├── in-source.ts │ │ │ │ ├── json-data-import.ts │ │ │ │ ├── json-data.json │ │ │ │ ├── load-outside-vite.cjs │ │ │ │ ├── math.ts │ │ │ │ ├── mock-target.ts │ │ │ │ ├── multi-environment.ts │ │ │ │ ├── multi-suite.ts │ │ │ │ ├── pre-bundle/ │ │ │ │ │ ├── bundle.js │ │ │ │ │ ├── bundle.ts │ │ │ │ │ ├── first.ts │ │ │ │ │ └── second.ts │ │ │ │ ├── pre-transpiled/ │ │ │ │ │ ├── original.ts │ │ │ │ │ ├── transpiled.d.ts │ │ │ │ │ └── transpiled.js │ │ │ │ ├── query-param-transformed.ts │ │ │ │ ├── should-be-excluded-by-default.cts │ │ │ │ ├── test-that-looks-like-source-file.ts │ │ │ │ ├── tested-with-]-in-filename.ts │ │ │ │ ├── throws-error.ts │ │ │ │ ├── types-only.ts │ │ │ │ ├── uncovered.custom-1 │ │ │ │ ├── untested-file.ts │ │ │ │ ├── untested-with-]-in-filename.ts │ │ │ │ ├── virtual-files.ts │ │ │ │ ├── worker-wrapper.ts │ │ │ │ └── worker.ts │ │ │ ├── test/ │ │ │ │ ├── allow-external-fixture.test.ts │ │ │ │ ├── circular.test.ts │ │ │ │ ├── cjs-dependency.test.ts │ │ │ │ ├── clean-on-rerun-fixture.test.ts │ │ │ │ ├── custom-1-syntax.test.ts │ │ │ │ ├── error-location.test.ts │ │ │ │ ├── even.test.ts │ │ │ │ ├── file-to-change.test.ts │ │ │ │ ├── ignore-hints-fixture.test.ts │ │ │ │ ├── import-attributes-fixture.test.ts │ │ │ │ ├── isolation-1-fixture.test.ts │ │ │ │ ├── isolation-2-fixture.test.ts │ │ │ │ ├── math.test.ts │ │ │ │ ├── merge-fixture-1.test.ts │ │ │ │ ├── merge-fixture-2.test.ts │ │ │ │ ├── merge-fixture-3.test.ts │ │ │ │ ├── mock-autospy-fixture.test.ts │ │ │ │ ├── mock-importActual-fixture.test.ts │ │ │ │ ├── mocking-in-js-file.test.js │ │ │ │ ├── multi-environment-fixture-ssr.test.ts │ │ │ │ ├── multi-environment-fixture-web.test.ts │ │ │ │ ├── multi-suite-fixture.test.ts │ │ │ │ ├── pre-transpiled-fixture.test.ts │ │ │ │ ├── query-param.test.ts │ │ │ │ ├── sources-with-]-in-filenames.test.ts │ │ │ │ ├── virtual-files-fixture.test.ts │ │ │ │ ├── vue-fixture.test.ts │ │ │ │ └── web-worker.test.ts │ │ │ └── workspaces/ │ │ │ ├── custom-2/ │ │ │ │ ├── src/ │ │ │ │ │ ├── covered.custom-2 │ │ │ │ │ └── uncovered.custom-2 │ │ │ │ └── test/ │ │ │ │ └── custom-2-syntax.test.ts │ │ │ └── project/ │ │ │ ├── project1/ │ │ │ │ ├── src/ │ │ │ │ │ ├── id.ts │ │ │ │ │ └── untested.ts │ │ │ │ └── test/ │ │ │ │ └── id.test.ts │ │ │ ├── project2/ │ │ │ │ ├── src/ │ │ │ │ │ ├── konst.ts │ │ │ │ │ └── untested.ts │ │ │ │ └── test/ │ │ │ │ └── konst.test.ts │ │ │ └── shared/ │ │ │ ├── src/ │ │ │ │ └── utils.ts │ │ │ └── test/ │ │ │ └── utils.test.ts │ │ ├── package.json │ │ ├── setup.native.ts │ │ ├── setup.ts │ │ ├── test/ │ │ │ ├── allow-external.test.ts │ │ │ ├── bundled-sources.test.ts │ │ │ ├── changed.test.ts │ │ │ ├── cjs-dependency.test.ts │ │ │ ├── clean-on-rerun.test.ts │ │ │ ├── configuration-options.test-d.ts │ │ │ ├── custom-provider.custom.test.ts │ │ │ ├── custom-reporter.test.ts │ │ │ ├── decorators.test.ts │ │ │ ├── dynamic-files.test.ts │ │ │ ├── empty-coverage-directory.test.ts │ │ │ ├── exclude-after-remap.test.ts │ │ │ ├── file-outside-vite.test.ts │ │ │ ├── ignore-hints.test.ts │ │ │ ├── implicit-else.istanbul.test.ts │ │ │ ├── import-attributes.test.ts │ │ │ ├── import-meta-env.test.ts │ │ │ ├── in-source.test.ts │ │ │ ├── include-exclude.test.ts │ │ │ ├── isolation.test.ts │ │ │ ├── merge-reports.test.ts │ │ │ ├── mixed-versions-warning.unit.test.ts │ │ │ ├── mock-autospy.test.ts │ │ │ ├── mock-importActual.test.ts │ │ │ ├── mocking-in-js-file.test.ts │ │ │ ├── multi-environment.test.ts │ │ │ ├── multi-suite.test.ts │ │ │ ├── on-failure.test.ts │ │ │ ├── pre-transpiled-source.test.ts │ │ │ ├── query-param-transforms.test.ts │ │ │ ├── reporters.test.ts │ │ │ ├── results-snapshot.test.ts │ │ │ ├── run-dynamic-coverage.test.ts │ │ │ ├── setup-files.test.ts │ │ │ ├── shard.test.ts │ │ │ ├── source-maps.test.ts │ │ │ ├── temporary-files.test.ts │ │ │ ├── test-reporter-conflicts.test.ts │ │ │ ├── threshold-100.test.ts │ │ │ ├── threshold-auto-update.test.ts │ │ │ ├── threshold-auto-update.unit.test.ts │ │ │ ├── threshold-failure.test.ts │ │ │ ├── threshold-glob.test.ts │ │ │ ├── transform-plugin-order.istanbul.test.ts │ │ │ ├── virtual-files.test.ts │ │ │ ├── vue.test.ts │ │ │ ├── web-worker.test.ts │ │ │ ├── workspace.multi-transform.test.ts │ │ │ └── workspace.project-filter.test.ts │ │ ├── tsconfig.json │ │ ├── utils.ts │ │ └── vitest.config.ts │ ├── node-runner/ │ │ ├── fixtures/ │ │ │ └── globalSetup/ │ │ │ ├── basic.test.js │ │ │ └── failing.ts │ │ ├── package.json │ │ └── test/ │ │ └── cli.test.js │ ├── snapshots/ │ │ ├── README.md │ │ ├── package.json │ │ ├── test/ │ │ │ ├── ci.test.ts │ │ │ ├── compare-keys.test.ts │ │ │ ├── custom-environment.test.ts │ │ │ ├── custom-serializers.test.ts │ │ │ ├── file.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── ci/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── compare-keys/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── custom-serializers/ │ │ │ │ │ ├── custom-serializers.test.ts │ │ │ │ │ ├── serializer-1.js │ │ │ │ │ ├── serializer-2.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── custom-snapshot-environment/ │ │ │ │ │ ├── snapshot-environment.ts │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── snapshots.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── file/ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ ├── snapshot-1.txt │ │ │ │ │ └── snapshot-2.txt │ │ │ │ ├── indent/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── inline-multiple-calls/ │ │ │ │ │ ├── different.test.ts │ │ │ │ │ ├── different2.test.ts │ │ │ │ │ ├── each.test.ts │ │ │ │ │ ├── same.test.ts │ │ │ │ │ └── same2.test.ts │ │ │ │ ├── jest-image-snapshot/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── obsolete/ │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── test1.test.ts.snap │ │ │ │ │ │ │ └── test2.test.ts.snap │ │ │ │ │ │ ├── test1.test.ts │ │ │ │ │ │ └── test2.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── skip-test/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── repro.test.ts.snap │ │ │ │ │ ├── repro.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── skip-test-custom/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── soft/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── soft-inline/ │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── summary/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── summary-removed/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── basic.test.ts │ │ │ │ ├── test-update/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── retry-file.test.ts.snap │ │ │ │ │ │ └── same-title-file.test.js.snap │ │ │ │ │ ├── inline-concurrent.test.js │ │ │ │ │ ├── inline.test.js │ │ │ │ │ ├── retry-file.test.ts │ │ │ │ │ ├── retry-inline.test.ts │ │ │ │ │ ├── same-title-file.test.js │ │ │ │ │ └── same-title-inline.test.js │ │ │ │ ├── test-update-result/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── retry-file.test.ts.snap │ │ │ │ │ │ └── same-title-file.test.js.snap │ │ │ │ │ ├── inline-concurrent.test.js │ │ │ │ │ ├── inline.test.js │ │ │ │ │ ├── retry-file.test.ts │ │ │ │ │ ├── retry-inline.test.ts │ │ │ │ │ ├── same-title-file.test.js │ │ │ │ │ └── same-title-inline.test.js │ │ │ │ └── workspace/ │ │ │ │ ├── packages/ │ │ │ │ │ └── space/ │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── basic.test.ts.snap │ │ │ │ │ │ └── basic.test.ts │ │ │ │ │ └── vite.config.ts │ │ │ │ └── vitest.config.ts │ │ │ ├── indent.test.ts │ │ │ ├── inline-multiple-calls.test.ts │ │ │ ├── jest-image-snapshot.test.ts │ │ │ ├── obsolete.test.ts │ │ │ ├── skip-test.test.ts │ │ │ ├── snapshots.test.ts │ │ │ ├── soft-inline.test.ts │ │ │ ├── soft.test.ts │ │ │ ├── summary.test.ts │ │ │ └── test-update.test.ts │ │ └── vitest.config.ts │ ├── test-utils/ │ │ ├── cli.ts │ │ ├── fixtures/ │ │ │ └── external-math.ts │ │ ├── index.ts │ │ └── package.json │ ├── tsconfig.json │ ├── typescript/ │ │ ├── failing/ │ │ │ ├── expect-error.test-d.ts │ │ │ ├── fail.test-d.ts │ │ │ ├── js-fail.test-d.js │ │ │ ├── node-types.test-d.ts │ │ │ └── only.test-d.ts │ │ ├── fixtures/ │ │ │ ├── dynamic-title/ │ │ │ │ ├── test/ │ │ │ │ │ └── dynamic-title.test-d.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vitest.config.ts │ │ │ └── source-error/ │ │ │ ├── src/ │ │ │ │ └── not-ok.ts │ │ │ ├── test/ │ │ │ │ └── ok.test-d.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── package.json │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── runner.test.ts.snap │ │ │ ├── runner.test.ts │ │ │ ├── typecheck-error.test.ts │ │ │ ├── typechecker.test.ts │ │ │ ├── vitest.custom.config.ts │ │ │ └── vitest.empty.config.ts │ │ ├── test-d/ │ │ │ ├── expect-extend.test-d.ts │ │ │ ├── js.test-d.js │ │ │ ├── nested-suite1.test-d.ts │ │ │ ├── nested-suite2.test-d.ts │ │ │ └── test.test-d.ts │ │ ├── tsconfig.custom.json │ │ ├── tsconfig.empty.json │ │ ├── tsconfig.fails.json │ │ ├── tsconfig.json │ │ └── vitest.config.fails.ts │ ├── ui/ │ │ ├── .gitignore │ │ ├── fixtures/ │ │ │ ├── annotated.test.ts │ │ │ ├── console.test.ts │ │ │ ├── coverage.test.ts │ │ │ ├── coverage.ts │ │ │ ├── error.test.ts │ │ │ ├── example.txt │ │ │ ├── sample.test.ts │ │ │ ├── snapshot.test.ts │ │ │ └── task-name.test.ts │ │ ├── fixtures-browser/ │ │ │ └── visual-regression.test.ts │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── test/ │ │ │ ├── html-report.spec.ts │ │ │ ├── ui-security.spec.ts │ │ │ └── ui.spec.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── workspaces/ │ │ ├── .gitignore │ │ ├── coverage-report-tests/ │ │ │ ├── check-coverage.test.ts │ │ │ └── vitest.config.ts │ │ ├── cwdPlugin.d.ts │ │ ├── cwdPlugin.js │ │ ├── globalTest.ts │ │ ├── package.json │ │ ├── space-multi-transform/ │ │ │ ├── src/ │ │ │ │ └── multi-transform.ts │ │ │ └── test/ │ │ │ ├── project-1.test.ts │ │ │ └── project-2.test.ts │ │ ├── space-pools/ │ │ │ ├── forks.test.ts │ │ │ ├── isolate.test.ts │ │ │ ├── no-isolate.test.ts │ │ │ └── threads.test.ts │ │ ├── space_1/ │ │ │ ├── test/ │ │ │ │ ├── env-injected.spec.ts │ │ │ │ ├── happy-dom.spec.ts │ │ │ │ └── math.spec.ts │ │ │ ├── vite.config.ts │ │ │ └── vite.config.ts.timestamp-4345324-324424.mjs │ │ ├── space_2/ │ │ │ └── test/ │ │ │ └── node.spec.ts │ │ ├── space_3/ │ │ │ ├── fake-vitest/ │ │ │ │ ├── config.js │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── global-provide.space-3-test.ts │ │ │ ├── localSetup.ts │ │ │ ├── math.space-3-test.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── multiply.ts │ │ │ ├── vite.config.ts │ │ │ └── vitest.config.ts │ │ ├── space_shared/ │ │ │ ├── setup.jsdom.ts │ │ │ ├── setup.node.ts │ │ │ └── test.spec.ts │ │ ├── src/ │ │ │ └── math.ts │ │ ├── vitest.config.ts │ │ └── vitest.config.watch.ts │ └── workspaces-browser/ │ ├── .gitignore │ ├── globalTest.ts │ ├── package.json │ ├── space_1/ │ │ ├── test/ │ │ │ ├── math.spec.ts │ │ │ └── node.spec.ts │ │ ├── vite.config.ts │ │ └── vitest.config.ts.timestamp-4345324-324424.mjs │ ├── space_browser/ │ │ ├── test/ │ │ │ └── browser.spec.ts │ │ └── vitest.config.ts │ ├── space_browser_inline/ │ │ ├── test/ │ │ │ └── basic.test.ts │ │ └── test-alias-to.ts │ ├── src/ │ │ └── math.ts │ └── vitest.config.ts ├── tsconfig.base.json ├── tsconfig.build.json └── tsconfig.check.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .claude/agents/vitest-test-writer.md ================================================ --- name: vitest-test-writer description: "Use this agent when the user needs to write comprehensive tests for Vitest features. This includes unit tests for individual functions, integration tests for CLI functionality, and browser mode tests. The agent should be invoked when implementing new features that require test coverage, fixing bugs that need regression tests, or expanding test coverage for existing functionality.\\n\\nExamples:\\n\\n\\nContext: User has just implemented a new utility function in the codebase.\\nuser: \"I just added a new parseConfig function to the config package\"\\nassistant: \"I see you've added a new function. Let me use the vitest-test-writer agent to create comprehensive tests for it.\"\\n\\nSince a new function was added, use the Task tool to launch the vitest-test-writer agent to write unit tests in test/core.\\n\\n\\n\\n\\nContext: User is working on a CLI feature.\\nuser: \"Please add a --json flag to the list command\"\\nassistant: \"I'll implement the --json flag for the list command.\"\\n\\nassistant: \"Now let me use the vitest-test-writer agent to write integration tests for this new CLI flag.\"\\n\\nSince a CLI feature was implemented, use the Task tool to launch the vitest-test-writer agent to write integration tests in test/cli using runInlineTests.\\n\\n\\n\\n\\nContext: User wants to ensure a feature works in both normal and browser modes.\\nuser: \"Can you write tests for the new snapshot feature?\"\\nassistant: \"I'll use the vitest-test-writer agent to write comprehensive tests for the snapshot feature, covering both normal and browser modes.\"\\n\\nSince the feature needs testing in multiple modes, use the Task tool to launch the vitest-test-writer agent to write tests in test/cli (for features supporting both modes).\\n\\n" model: opus color: green --- You are an expert test engineer specializing in the Vitest testing framework. You have deep knowledge of Vitest's architecture, testing patterns, and the specific conventions used in this monorepo. ## Your Core Responsibilities You write comprehensive, high-quality tests that follow the established patterns in this repository. You understand the distinction between unit tests, integration tests, and browser tests, and you place them in the correct locations. ## Test Location Rules - **Unit tests**: Place in `test/core/`. These test individual functions by importing them directly, regardless of which package defines them. - **Integration tests**: Place in `test/cli/`. These test CLI functionality and features that require running Vitest as a process. - **Browser mode tests**: Place in `test/browser/`. However, if a feature supports both normal tests AND browser tests, place the tests in `test/cli/`. ## Testing Patterns You Must Follow ### Use runInlineTests Utility For integration tests, always use the `runInlineTests` utility to create and run test scenarios. This utility allows you to define inline test files and validate their output. ### Snapshot Validation with toMatchInlineSnapshot Always validate output using `toMatchInlineSnapshot()`. The snapshot is automatically generated on the first run. This is the preferred method because it: - Captures the exact expected output - Makes changes visible in code review - Catches regressions precisely ### Avoid toContain Do NOT use `toContain()` for output validation. This method fails to catch: - Extra unexpected output - Repeated output that shouldn't occur - Subtle formatting differences ### Handle Dynamic Content When output contains dynamic content (timestamps, absolute paths, durations, etc.): 1. First check `test-utils` for existing utilities that normalize this content 2. If no utility exists, manually process with `stdout.replace(regexp, 'normalized-value')` 3. Common patterns to normalize: - Timing information (e.g., `1.234s` → `[time]`) - Root paths (e.g., `/Users/name/project` → ``) - Process IDs or temporary file paths ### Validate Test Results with testTree or errorTree To ensure all tests actually passed (not just that they ran), use `testTree` or `errorTree` helpers. Pass the result to `toMatchInlineSnapshot()` to verify: - The correct number of tests ran - Tests are organized in the expected suites - No unexpected failures or skipped tests ## Writing Unit Tests For unit tests in `test/core/`: 1. Import the function directly from its source package 2. Test pure functionality without process spawning 3. Cover edge cases, error conditions, and typical usage 4. Use descriptive test names that explain the scenario ## Writing Integration Tests For integration tests in `test/cli/`: 1. Use `runInlineTests` to define test scenarios 2. Create realistic test file content 3. Validate both stderr and the test results structure 4. Test error scenarios and edge cases 5. Ensure tests are deterministic (no flaky behavior) ## Quality Standards - Every test should have a clear purpose - Test names should describe the behavior being verified - Group related tests in describe blocks - Include both positive (happy path) and negative (error) test cases - Consider boundary conditions and edge cases - Tests should be independent and not rely on execution order - If you encounter a bug in the behaviour, write a **failing** test and report that there is a bug or an unexpected behaviour. If possible, delegate fixing the bug to the main agent ## Before Writing Tests 1. Read AGENTS.md for additional context and patterns 2. Look at existing tests in the target directory for style guidance 3. Identify the test utilities available in the codebase 4. Understand what behavior needs to be verified ## Output Format When writing tests, provide: 1. The complete test file with all imports 2. Explanations of what each test verifies 3. Notes on any dynamic content normalization applied 4. Suggestions for additional test cases if relevant ================================================ FILE: .editorconfig ================================================ root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true ================================================ FILE: .gitattributes ================================================ * text=auto eol=lf test/cli/fixtures/reporters/indicator-position.test.js eol=crlf ================================================ FILE: .github/FUNDING.yml ================================================ github: [vitest-dev, sheremet-va, antfu, patak-dev] open_collective: vitest ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: 🐞 Bug report description: Report an issue with Vitest labels: [pending triage] type: Bug body: - type: markdown attributes: value: | Thanks for taking the time to fill out this bug report! - type: textarea id: bug-description attributes: label: Describe the bug description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks! placeholder: I am doing ... What I expect is ... What actually happening is ... validations: required: true - type: textarea id: reproduction attributes: label: Reproduction description: Please provide a link to a github repository that can reproduce the problem you ran into (feel free to clone one of the [examples](https://github.com/vitest-dev/vitest/tree/main/examples)). You can also use [StackBlitz](https://stackblitz.com/fork/github/vitest-dev/vitest/tree/main/examples/basic?initialPath=__vitest__/) if it works. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is always required no matter how easy it is to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed. placeholder: Reproduction validations: required: true - type: textarea id: system-info attributes: label: System Info description: Output of `npx envinfo --system --npmPackages '{vitest*,@vitest/*,vite,@vitejs/*,playwright,webdriverio}' --binaries --browsers` render: shell placeholder: System, Binaries, Browsers validations: required: true - type: dropdown id: package-manager attributes: label: Used Package Manager description: Select the used package manager options: - npm - yarn - pnpm - bun validations: required: true - type: checkboxes id: checkboxes attributes: label: Validations description: Before submitting the issue, please make sure you do the following options: - label: Follow our [Code of Conduct](https://github.com/vitest-dev/vitest/blob/main/CODE_OF_CONDUCT.md) required: true - label: Read the [Contributing Guidelines](https://github.com/vitest-dev/vitest/blob/main/CONTRIBUTING.md). required: true - label: Read the [docs](https://vitest.dev/guide/). required: true - label: Check that there isn't [already an issue](https://github.com/vitest-dev/vitest/issues) that reports the same bug to avoid creating a duplicate. required: true - label: Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/vitest-dev/vitest/discussions) or join our [Discord Chat Server](https://chat.vitest.dev). required: true - label: The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug. required: true ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: VS Code Extension Issues url: https://github.com/vitest-dev/vscode/issues/new/choose about: VS Code extension related issues should be reported on the vitest-dev/vscode repository. - name: Discord Chat url: https://chat.vitest.dev about: Ask questions and discuss with other Vitest users in real time. - name: Questions & Discussions url: https://github.com/vitest-dev/vitest/discussions about: Use GitHub discussions for message-board style questions and discussions. ================================================ FILE: .github/ISSUE_TEMPLATE/docs.yml ================================================ name: 📚 Documentation description: Suggest a change or new page to be added to vitest.dev labels: [documentation] body: - type: markdown attributes: value: | Thanks for taking the time to fill out this issue! - type: checkboxes id: documentation_is attributes: label: Documentation is options: - label: Missing - label: Outdated - label: Confusing - label: Not sure? - type: textarea id: description attributes: label: Explain in Detail description: A clear and concise description of your suggestion. If you intend to submit a PR for this issue, tell us in the description. Thanks! placeholder: The description of ... page is not clear. I thought it meant ... but it wasn't. validations: required: true - type: textarea id: suggestion attributes: label: Your Suggestion for Changes validations: required: true - type: input id: reproduction attributes: label: Reproduction description: If you have a reproduction, please provide a link via [vitest.new](https://vitest.new/) or a link to a repo that can reproduce the problem you ran into. placeholder: Reproduction URL ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yml ================================================ name: 🚀 New feature proposal description: Propose a new feature to be added to Vitest labels: ['enhancement: pending triage'] type: Feature body: - type: markdown attributes: value: | Thanks for your interest in the project and taking the time to fill out this feature report! - type: textarea id: feature-description attributes: label: Clear and concise description of the problem description: 'As a developer using Vitest I want [goal / wish] so that [benefit]. If you intend to submit a PR for this issue, tell us in the description. Thanks!' validations: required: true - type: textarea id: suggested-solution attributes: label: Suggested solution description: We could provide following implementation... validations: required: true - type: textarea id: alternative attributes: label: Alternative description: Clear and concise description of any alternative solutions or features you've considered. - type: textarea id: additional-context attributes: label: Additional context description: Any other context or screenshots about the feature request here. - type: checkboxes id: checkboxes attributes: label: Validations description: Before submitting the issue, please make sure you do the following options: - label: Follow our [Code of Conduct](https://github.com/vitest-dev/vitest/blob/main/CODE_OF_CONDUCT.md) required: true - label: Read the [Contributing Guidelines](https://github.com/vitest-dev/vitest/blob/main/CONTRIBUTING.md). required: true - label: Read the [docs](https://vitest.dev/guide/). required: true - label: Check that there isn't already an issue that requests the same feature to avoid creating a duplicate. required: true ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ### Description Resolves #issue-number ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. If the feature is substantial or introduces breaking changes without a discussion, PR might be closed. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] Please, don't make changes to `pnpm-lock.yaml` unless you introduce a new test example. - [ ] Please check [Allow edits by maintainers](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) to make review process faster. Note that this option is not available for repositories that are owned by Github organizations. ### Tests - [ ] Run the tests with `pnpm test:ci`. ### Documentation - [ ] If you introduce new functionality, document it. You can run documentation with `pnpm run docs` command. ### Changesets - [ ] Changes in changelog are generated from PR name. Please, make sure that it explains your changes in an understandable manner. Please, prefix changeset messages with `feat:`, `fix:`, `perf:`, `docs:`, or `chore:`. ================================================ FILE: .github/actions/setup-and-cache/action.yml ================================================ name: Setup and cache description: Setup for node, pnpm and cache for browser testing binaries inputs: node-version: required: false description: Node version for setup-node default: 24.x runs: using: composite steps: - name: Install pnpm uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - name: Set node version to ${{ inputs.node-version }} uses: actions/setup-node@v6 with: node-version: ${{ inputs.node-version }} cache: pnpm ================================================ FILE: .github/actions/setup-playwright/action.yml ================================================ name: Setup Playwright description: Setup and cache Playwright browser binaries runs: using: composite steps: - name: Resolve package versions id: resolve-package-versions shell: bash run: > echo "$( node -e " const fs = require('fs'); const lockfile = fs.readFileSync('./pnpm-lock.yaml', 'utf8'); const pattern = (name) => new RegExp(name + ':\\\s+specifier: [\\\s\\\w\\\.^]+version: (\\\d+\\\.\\\d+\\\.\\\d+)'); const playwrightVersion = lockfile.match(pattern('playwright'))[1]; console.log('PLAYWRIGHT_VERSION=' + playwrightVersion); " )" >> $GITHUB_OUTPUT - name: Print versions shell: bash run: echo "${{ toJson(steps.resolve-package-versions.outputs) }}" - name: Check resolved package versions shell: bash if: | contains(fromJSON('[null, "", "undefined"]'), steps.resolve-package-versions.outputs.PLAYWRIGHT_VERSION) run: echo "Failed to resolve package versions. See log above." && exit 1 - name: Cache Playwright v${{ steps.resolve-package-versions.outputs.PLAYWRIGHT_VERSION }} uses: actions/cache@v5 id: playwright-cache with: path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }} key: ${{ runner.os }}-playwright-${{ steps.resolve-package-versions.outputs.PLAYWRIGHT_VERSION }} restore-keys: | ${{ runner.os }}-playwright- - name: Install Playwright Dependencies shell: bash if: steps.playwright-cache.outputs.cache-hit != 'true' run: pnpm exec playwright install --with-deps --only-shell ================================================ FILE: .github/commit-convention.md ================================================ ## Git Commit Message Convention > This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular). ### TL;DR: Messages must be matched by the following regex: ```js /^(revert: )?(feat|fix|docs|dx|refactor|perf|test|workflow|build|ci|chore|types|wip|release|deps)(\(.+\))?: .{1,50}/ ``` #### Examples Appears under "Features" header, `dev` subheader: ``` feat(dev): add 'comments' option ``` Appears under "Bug Fixes" header, `dev` subheader, with a link to issue #28: ``` fix(dev): fix dev error close #28 ``` Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: ``` perf(build): remove 'foo' option BREAKING CHANGE: The 'foo' option has been removed. ``` The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. ``` revert: feat(compiler): add 'comments' option This reverts commit 667ecc1654a317a13331b17617d973392f415f02. ``` ### Full Message Format A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: ``` ():