From 4002774429d3adeee0032ee32e924f7c1f7748cc Mon Sep 17 00:00:00 2001 From: Quinn Slack Date: Tue, 7 Nov 2023 00:00:18 -1000 Subject: [PATCH] reapply "switch from jest to vitest for faster, simpler tests (#57886)" (#58145) * reapply "switch from jest to vitest for faster, simpler tests (https://github.com/sourcegraph/sourcegraph/pull/57886)" This was reverted in https://github.com/sourcegraph/sourcegraph/pull/58116 due to an issue with the browser tests. * include fetch-mock * fix flakiness * rm mock that did not work in experimentalVmThreads * fix * timeout * fixup --------- Co-authored-by: William Bezuidenhout --- .eslintrc.js | 2 +- .mocharc.js | 2 +- .vscode/extensions.json | 1 - .vscode/launch.json | 22 - .vscode/settings.json | 1 - BUILD.bazel | 46 +- WORKSPACE | 23 - babel.config.jest.js | 30 - babel.config.js | 36 - client/BUILD.bazel | 6 +- client/app-shell/tsconfig.json | 4 - client/branded/BUILD.bazel | 23 +- client/branded/jest.config.js | 11 - client/branded/package.json | 4 +- .../components/Timestamp/Timestamp.test.tsx | 2 +- .../__snapshots__/Timestamp.test.tsx.snap | 20 +- client/branded/src/components/Toggle.test.tsx | 2 +- .../__snapshots__/Toggle.test.tsx.snap | 12 +- .../panel/TabbedPanelContent.test.tsx | 2 +- .../search-ui/components/CodeExcerpt.test.tsx | 2 +- .../FileContentSearchResult.test.tsx | 2 +- .../components/FileMatchChildren.test.tsx | 2 +- .../components/RepoFileLink.test.tsx | 2 +- .../SyntaxHighlightedSearchQuery.test.tsx | 2 +- .../__snapshots__/RepoFileLink.test.tsx.snap | 4 +- ...SyntaxHighlightedSearchQuery.test.tsx.snap | 10 +- .../search-ui/input/LazyQueryInput.test.tsx | 2 +- .../input/SearchContextDropdown.test.tsx | 2 +- .../input/SearchContextMenu.test.tsx | 2 +- .../LazyQueryInput.test.tsx.snap | 6 +- .../SearchContextMenu.test.tsx.snap | 4 +- .../input/codemirror/completion.test.ts | 2 +- .../codemirror/searchcontext.test.ts | 2 +- .../input/experimental/utils.test.ts | 2 +- .../search-ui/input/toggles/Toggles.test.tsx | 2 +- .../__snapshots__/Toggles.test.tsx.snap | 8 +- .../progress/StreamingProgressCount.test.tsx | 2 +- .../StreamingProgressSkippedButton.test.tsx | 2 +- .../StreamingProgressSkippedPopover.test.tsx | 2 +- .../StreamingProgressCount.test.tsx.snap | 14 +- ...eamingProgressSkippedPopover.test.tsx.snap | 4 +- .../exhaustive-search-validation.test.ts | 2 +- .../results/sidebar/FilterLink.test.tsx | 2 +- .../results/sidebar/QuickLink.test.tsx | 2 +- .../sidebar/SearchFilterSection.test.tsx | 2 +- .../__snapshots__/FilterLink.test.tsx.snap | 10 +- .../__snapshots__/QuickLink.test.tsx.snap | 4 +- .../search-ui/results/sidebar/helpers.test.ts | 2 +- .../results/use-items-to-show.test.ts | 2 +- client/branded/src/testGlobals.d.ts | 1 - client/branded/src/testSetup.test.ts | 11 + client/branded/tsconfig.json | 9 - client/branded/vitest.config.ts | 13 + client/browser/BUILD.bazel | 32 +- client/browser/config/BUILD.bazel | 1 - client/browser/jest.config.js | 14 - client/browser/package.json | 2 +- client/browser/src/globals.d.ts | 5 - .../bitbucket-cloud/codeHost.test.ts | 2 +- .../__snapshots__/domFunctions.test.tsx.snap | 34 +- .../code-hosts/bitbucket/codeHost.test.ts | 2 +- .../bitbucket/domFunctions.test.tsx | 2 +- .../code-hosts/bitbucket/scrape.test.ts | 2 +- .../__snapshots__/domFunctions.test.tsx.snap | 226 +-- .../github/__snapshots__/util.test.tsx.snap | 24 +- .../shared/code-hosts/github/codeHost.test.ts | 6 +- .../code-hosts/github/domFunctions.test.tsx | 2 +- .../shared/code-hosts/github/fileInfo.test.ts | 2 +- .../shared/code-hosts/github/util.test.tsx | 2 +- .../__snapshots__/domFunctions.test.tsx.snap | 58 +- .../shared/code-hosts/gitlab/codeHost.test.ts | 6 +- .../code-hosts/gitlab/domFunctions.test.tsx | 2 +- .../shared/code-hosts/gitlab/scrape.test.ts | 2 +- .../__snapshots__/domFunctions.test.tsx.snap | 74 +- .../code-hosts/phabricator/codeHost.test.ts | 2 +- .../phabricator/domFunctions.test.tsx | 2 +- .../code-hosts/phabricator/fileInfo.test.ts | 2 +- .../shared/ViewOnSourcegraphButton.test.tsx | 2 +- .../ViewOnSourcegraphButton.test.tsx.snap | 18 +- .../code-hosts/shared/codeHost.test.tsx | 8 +- .../code-hosts/shared/codeHostTestUtils.ts | 2 +- .../code-hosts/shared/codeViews.test.ts | 2 +- .../shared/code-hosts/shared/views.test.ts | 2 +- .../code-hosts/sourcegraph/inject.test.tsx | 2 +- .../browser/src/shared/jestSetupAfterEnv.js | 4 - client/browser/src/testGlobals.d.ts | 1 - client/browser/src/testSetup.test.ts | 19 + client/browser/tsconfig.json | 3 - client/browser/vitest.config.ts | 34 + client/build-config/BUILD.bazel | 6 - client/build-config/jest.config.js | 13 - client/build-config/package.json | 2 +- client/client-api/BUILD.bazel | 2 +- client/client-api/jest.config.js | 13 - client/client-api/package.json | 2 +- client/client-api/src/hover.test.ts | 2 +- client/client-api/tsconfig.json | 4 - client/client-api/vitest.config.ts | 3 + client/codeintellify/BUILD.bazel | 9 +- client/codeintellify/jest.config.js | 13 - client/codeintellify/package.json | 5 +- client/codeintellify/src/hoverifier.test.ts | 2 +- client/codeintellify/src/loading.test.ts | 2 +- .../codeintellify/src/overlayPosition.test.ts | 2 +- client/codeintellify/src/positions.test.ts | 5 +- client/codeintellify/src/testSetup.test.ts | 1 + .../codeintellify/src/testutils/dom.test.ts | 2 +- .../codeintellify/src/testutils/globals.d.ts | 1 - .../codeintellify/src/tokenPosition.test.ts | 2 +- client/codeintellify/vitest.config.ts | 9 + client/common/BUILD.bazel | 22 +- client/common/jest.config.js | 14 - client/common/package.json | 2 +- client/common/src/errors/errors.test.ts | 2 +- client/common/src/jestSetupAfterEnv.js | 4 - client/common/src/util/fetchCache.test.ts | 6 +- client/common/src/util/hashCode.test.ts | 5 +- client/common/src/util/highlightNode.test.ts | 2 +- client/common/src/util/jsonc.test.ts | 2 +- .../common/src/util/markdown/markdown.test.ts | 2 +- .../common/src/util/rxjs/asObservable.test.ts | 2 +- .../util/rxjs/combineLatestOrDefault.test.ts | 2 +- .../common/src/util/rxjs/repeatUntil.test.ts | 2 +- client/common/src/util/string.test.ts | 2 +- client/common/src/util/url.test.ts | 2 +- client/common/vitest.config.ts | 7 + client/http-client/BUILD.bazel | 6 +- client/http-client/jest.config.js | 13 - client/http-client/package.json | 2 +- .../apollo/fromObservableQuery.test.ts | 2 +- .../http-client/src/graphql/graphql.test.ts | 2 +- client/http-client/vitest.config.ts | 3 + client/jetbrains/BUILD.bazel | 1 - client/jetbrains/globals.d.ts | 5 - client/jetbrains/tsconfig.json | 4 - client/observability-client/BUILD.bazel | 6 +- client/observability-client/jest.config.js | 13 - client/observability-client/package.json | 2 +- .../src/sdk/__tests__/getTracingUrl.test.ts | 2 +- client/observability-client/tsconfig.json | 6 +- client/observability-client/vitest.config.ts | 3 + client/observability-server/BUILD.bazel | 6 +- client/observability-server/jest.config.js | 13 - client/observability-server/package.json | 2 +- .../webBundleSize/getBundleSizeStats.test.ts | 2 +- client/observability-server/vitest.config.ts | 3 + client/shared/BUILD.bazel | 22 +- client/shared/dev/BUILD.bazel | 60 - client/shared/dev/jest-environment.js | 41 - client/shared/dev/mockDate.js | 5 - client/shared/dev/mockDomRect.ts | 7 - client/shared/dev/mockEventLogger.ts | 10 - client/shared/dev/mockMatchMedia.ts | 20 - client/shared/dev/mockResizeObserver.ts | 12 - client/shared/dev/mockSentryBrowser.ts | 8 - client/shared/jest.config.js | 11 - client/shared/package.json | 2 +- client/shared/src/actions/ActionItem.test.tsx | 4 +- .../src/actions/ActionsNavItems.test.tsx | 4 +- .../__snapshots__/ActionItem.test.tsx.snap | 30 +- .../ActionsNavItems.test.tsx.snap | 4 +- .../src/api/client/mainthread-api.test.ts | 2 +- .../src/api/client/types/textDocument.test.ts | 2 +- .../api/extension/api/context/context.test.ts | 2 +- .../api/extension/api/contribution.test.ts | 2 +- .../api/extension/api/textDocument.test.ts | 2 +- .../api/utils/prefixSumComputer.test.ts | 2 +- .../extension/api/utils/wordHelpers.test.ts | 2 +- .../src/api/extension/test/activation.test.ts | 2 +- .../test/extensionHost.configuration.test.ts | 2 +- .../extensionHost.documentHighlights.test.ts | 2 +- .../test/extensionHost.hover.test.ts | 2 +- .../test/extensionHost.logging.test.ts | 2 +- .../test/extensionHost.providers.test.ts | 2 +- .../api/integration-test/codeEditor.test.ts | 2 +- .../src/api/integration-test/commands.test.ts | 2 +- .../integration-test/configuration.test.ts | 2 +- .../api/integration-test/documents.test.ts | 2 +- .../src/api/integration-test/internal.test.ts | 2 +- .../integration-test/languageFeatures.test.ts | 2 +- .../src/api/integration-test/roots.test.ts | 2 +- .../api/integration-test/selections.test.ts | 2 +- .../src/api/integration-test/windows.test.ts | 2 +- client/shared/src/api/util.test.ts | 2 +- client/shared/src/backend/errors.test.ts | 2 +- .../codeintel/legacy-extensions/init.test.ts | 2 +- .../language-specs/cpp.test.ts | 2 +- .../language-specs/go.test.ts | 2 +- .../language-specs/java.test.ts | 2 +- .../language-specs/python.test.ts | 2 +- .../language-specs/spec.test.ts | 2 +- .../language-specs/typescript.test.ts | 2 +- .../lsif/definition-hover.test.ts | 2 +- .../legacy-extensions/lsif/highlights.test.ts | 2 +- .../legacy-extensions/lsif/locations.test.ts | 2 +- .../legacy-extensions/lsif/providers.test.ts | 2 +- .../legacy-extensions/lsif/ranges.test.ts | 2 +- .../legacy-extensions/lsif/references.test.ts | 2 +- .../legacy-extensions/lsif/stencil.test.ts | 2 +- .../legacy-extensions/lsif/util.test.ts | 2 +- .../legacy-extensions/providers.test.ts | 2 +- .../search/conversion.test.ts | 2 +- .../search/docstrings.test.ts | 2 +- .../legacy-extensions/search/markdown.test.ts | 2 +- .../search/providers.test.ts | 2 +- .../legacy-extensions/search/queries.test.ts | 2 +- .../legacy-extensions/search/tokens.test.ts | 2 +- .../legacy-extensions/util/ix.test.ts | 2 +- .../legacy-extensions/util/uri.test.ts | 2 +- client/shared/src/commands/commands.test.ts | 2 +- .../components/HighlightedMatches.test.tsx | 2 +- client/shared/src/components/Path.test.tsx | 2 +- .../shared/src/components/RepoLink.test.tsx | 2 +- .../shared/src/components/UserAvatar.test.tsx | 2 +- .../HighlightedMatches.test.tsx.snap | 4 +- .../__snapshots__/Path.test.tsx.snap | 10 +- .../__snapshots__/RepoLink.test.tsx.snap | 6 +- .../__snapshots__/UserAvatar.test.tsx.snap | 6 +- .../components/ranking/LineRanking.test.tsx | 2 +- .../components/ranking/ZoektRanking.test.tsx | 2 +- .../src/contributions/contributions.test.ts | 2 +- .../shared/src/extensions/extension.test.ts | 2 +- client/shared/src/globals.d.ts | 5 - client/shared/src/hover/HoverOverlay.test.tsx | 2 +- .../__snapshots__/HoverOverlay.test.tsx.snap | 38 +- client/shared/src/hover/actions.test.ts | 2 +- .../useKeyboardShortcut.test.tsx | 2 +- client/shared/src/languages.test.ts | 2 +- client/shared/src/polyfills/index.ts | 3 +- client/shared/src/polyfills/polyfill.ts | 1 - .../react-shortcuts/ShortcutManager.test.tsx | 14 +- .../src/search/helpers/queryExample.test.ts | 2 +- .../shared/src/search/query/analyze.test.ts | 2 +- .../src/search/query/decoratedToken.test.ts | 2 +- .../src/search/query/diagnostics.test.ts | 2 +- .../shared/src/search/query/filters.test.ts | 2 +- .../src/search/query/languageFilter.test.ts | 2 +- .../shared/src/search/query/metrics.test.ts | 2 +- client/shared/src/search/query/parser.test.ts | 2 +- .../src/search/query/patternMatcher.test.ts | 17 +- .../src/search/query/predicates.test.ts | 2 +- .../shared/src/search/query/printer.test.ts | 2 +- .../src/search/query/providers-utils.test.ts | 2 +- .../shared/src/search/query/scanner.test.ts | 2 +- .../src/search/query/selectFilter.test.ts | 2 +- .../src/search/query/transformer.test.ts | 2 +- .../shared/src/search/query/validate.test.ts | 2 +- client/shared/src/settings/settings.test.ts | 2 +- client/shared/src/settings/settings.tsx | 2 +- .../temporary/useTemporarySetting.test.tsx | 2 +- client/shared/src/testGlobals.d.ts | 1 - client/shared/src/testSetup.test.ts | 1 + client/shared/src/testing/BUILD.bazel | 3 +- client/shared/src/testing/config.ts | 2 +- client/shared/src/testing/dom-utils.ts | 4 +- client/shared/src/testing/driver.ts | 7 +- .../src/testing/mockReactVisibilitySensor.tsx | 4 +- client/shared/src/testing/testHelpers.ts | 2 +- client/shared/src/testing/tsconfig.json | 3 - client/shared/src/tracking/utm.test.ts | 2 +- .../src/types/core-js/configurator.d.ts | 4 +- client/shared/src/types/jasmine/index.d.ts | 4 - .../src/types/puppeteer-firefox/index.d.ts | 3 - .../src/types/storybook-chromatic/index.d.ts | 12 - client/shared/src/types/web-ext/index.d.ts | 15 - client/shared/src/util/dom.test.ts | 2 +- client/shared/src/util/url.test.ts | 2 +- .../src/util/useInputValidation.test.ts | 2 +- client/shared/tsconfig.json | 4 - client/shared/vitest.config.ts | 11 + client/storybook/jest.config.js | 13 - client/storybook/package.json | 2 +- client/template-parser/BUILD.bazel | 12 +- client/template-parser/jest.config.js | 13 - client/template-parser/package.json | 2 +- .../src/expr/evaluator.test.ts | 2 +- client/template-parser/src/expr/lexer.test.ts | 2 +- .../template-parser/src/expr/parser.test.ts | 2 +- client/template-parser/vitest.config.ts | 3 + client/testing/BUILD.bazel | 31 +- client/testing/jest.config.js | 13 - client/testing/package.json | 2 +- client/testing/src/aria-asserts.ts | 6 +- client/{shared/dev => testing/src}/fetch.js | 0 .../src/globalTestSetup.ts} | 4 +- client/testing/src/jestDomMatchers.ts | 10 + client/testing/src/mockDate.ts | 4 + client/testing/src/mockMatchMedia.ts | 20 + client/testing/src/mockResizeObserver.ts | 8 + .../dev => testing/src}/mockUniqueId.ts | 17 +- .../dev => testing/src}/reactCleanup.ts | 2 +- client/testing/tsconfig.json | 1 + client/web/BUILD.bazel | 24 +- client/web/{src => }/__mocks__/zustand.ts | 2 +- client/web/dev/BUILD.bazel | 24 +- client/web/dev/esbuild/manifest.test.ts | 2 +- client/web/dev/jest.config.js | 12 - client/web/dev/tsconfig.json | 2 +- client/web/dev/vitest.config.ts | 3 + client/web/jest.config.js | 14 - client/web/package.json | 2 +- client/web/src/auth/PostSignUpPage.test.tsx | 2 +- .../web/src/auth/RequestAccessPage.test.tsx | 2 +- client/web/src/auth/SignInPage.test.tsx | 2 +- client/web/src/auth/SignUpPage.test.tsx | 2 +- .../PostSignUpPage.test.tsx.snap | 10 +- .../RequestAccessPage.test.tsx.snap | 15 +- .../__snapshots__/SignInPage.test.tsx.snap | 28 +- .../__snapshots__/SignUpPage.test.tsx.snap | 8 +- .../web/src/backend/persistenceMapper.test.ts | 2 +- .../src/codeintel/ReferencesPanel.test.tsx | 4 +- .../web/src/components/ErrorBoundary.test.tsx | 6 +- client/web/src/components/ErrorBoundary.tsx | 4 +- .../FilteredConnection.test.tsx | 2 +- .../hooks/usePageSwitcherPagination.test.tsx | 2 +- .../hooks/useShowMorePagination.test.tsx | 2 +- .../KeyboardShortcutsHelp.test.tsx | 2 +- .../KeyboardShortcutsHelp.test.tsx.snap | 4 +- .../web/src/components/LoaderButton.test.tsx | 2 +- .../__snapshots__/ErrorBoundary.test.tsx.snap | 8 +- .../__snapshots__/LoaderButton.test.tsx.snap | 6 +- .../components/branding/BrandLogo.test.tsx | 2 +- .../__snapshots__/BrandLogo.test.tsx.snap | 18 +- .../web/src/components/diff/DiffHunk.test.tsx | 2 +- .../components/diff/DiffSplitHunk.test.tsx | 2 +- .../web/src/components/diff/DiffStat.test.tsx | 2 +- .../diff/__snapshots__/DiffHunk.test.tsx.snap | 7 +- .../diff/__snapshots__/DiffStat.test.tsx.snap | 6 +- .../ExternalServiceForm.test.tsx | 4 +- .../ExternalServiceGroup.test.tsx | 2 +- .../ExternalServiceForm.test.tsx.snap | 8 +- .../ExternalServiceGroup.test.tsx.snap | 6 +- .../externalServices.test.tsx | 2 +- .../components/fuzzyFinder/FuzzyFiles.test.ts | 2 +- .../fuzzyFinder/FuzzyFinder.test.tsx | 2 +- client/web/src/end-to-end/utils/cloneRepos.ts | 2 +- .../batches/MultiSelectContext.test.tsx | 2 +- .../batches/batch-spec/yaml-util.test.ts | 2 +- .../batches/settings/format.test.ts | 2 +- .../CodeMonitoringPage.test.tsx | 2 +- .../CreateCodeMonitorPage.test.tsx | 2 +- .../ManageCodeMonitorPage.test.tsx | 2 +- .../components/CodeMonitorForm.test.tsx | 2 +- .../components/FormActionArea.test.tsx | 2 +- .../components/FormTriggerArea.test.tsx | 2 +- .../FormActionArea.test.tsx.snap | 4 +- .../components/actions/ActionEditor.test.tsx | 2 +- .../components/actions/EmailAction.test.tsx | 2 +- .../actions/SlackWebhookAction.test.tsx | 2 +- .../components/actions/WebhookAction.test.tsx | 2 +- .../auto-index-to-schema.test.tsx.snap | 6 +- .../auto-index-to-schema.test.tsx | 2 +- .../get-interval-description.text.test.ts | 2 +- .../use-prallel-requests.test.ts | 22 +- .../pages/CodeInsightsRootPage.test.tsx | 20 +- .../DashboardsContentPage.test.tsx | 6 +- .../capture-insight-url-parsers.test.ts | 2 +- .../utils/search-query-validator.test.ts | 2 +- .../search-insight-url-parsers.test.ts | 2 +- .../use-url-query-insight.test.ts | 2 +- .../settings/RepoSettingsLogsPage.test.tsx | 4 +- .../RepoSettingsLogsPage.test.tsx.snap | 40 +- .../enterprise/repo/settings/utils.test.ts | 2 +- .../SearchContextsList.test.tsx | 2 +- ...ProductLicenseForSubscriptionForm.test.tsx | 2 +- .../SiteAdminProductLicenseNode.test.tsx | 4 +- ...ctLicenseForSubscriptionForm.test.tsx.snap | 4 +- .../SiteAdminProductLicenseNode.test.tsx.snap | 6 +- .../dotcom/productSubscriptions/utils.test.ts | 2 +- .../UserProductSubscriptionStatus.test.tsx | 8 +- ...scriptionsProductSubscriptionPage.test.tsx | 2 +- ...serProductSubscriptionStatus.test.tsx.snap | 6 +- ...tionsProductSubscriptionPage.test.tsx.snap | 4 +- .../auth/UserSettingsPermissionsPage.test.tsx | 2 +- .../UserSettingsPermissionsPage.test.tsx.snap | 6 +- .../lib/parseUrlOverrideFeatureFlags.test.ts | 2 +- .../src/featureFlags/useFeatureFlag.test.tsx | 2 +- .../src/featureFlags/withFeatureFlag.test.tsx | 2 +- .../CaseInsensitiveFuzzySearch.test.ts | 2 +- .../WordSensitiveFuzzySearch.test.ts | 2 +- client/web/src/global/Notices.test.tsx | 2 +- .../__snapshots__/Notices.test.tsx.snap | 6 +- .../useScrollManager.test.tsx | 8 +- .../web/src/hooks/useUrlSyncedState.test.ts | 2 +- .../web/src/hooks/useUrlSyncedString.test.tsx | 2 +- .../insights/utils/use-series-toggle.test.tsx | 2 +- .../src/marketing/page/SurveyPage.test.tsx | 2 +- .../src/marketing/toast/SurveyToast.test.tsx | 2 +- .../monitoring/shouldErrorBeReported.test.ts | 2 +- client/web/src/nav/GlobalNavbar.test.tsx | 6 +- .../src/nav/StatusMessagesNavItem.test.tsx | 2 +- client/web/src/nav/UserNavItem.test.tsx | 2 +- .../__snapshots__/GlobalNavbar.test.tsx.snap | 4 +- .../StatusMessagesNavItem.test.tsx.snap | 6 +- .../__snapshots__/UserNavItem.test.tsx.snap | 4 +- .../serialize/convertMarkdownToBlocks.test.ts | 2 +- .../web/src/notebooks/serialize/index.test.ts | 2 +- .../onboarding/OnboardingChecklist.test.tsx | 2 +- .../web/src/open-in-editor/build-url.test.ts | 2 +- .../migrate-legacy-settings.test.ts | 2 +- client/web/src/person/PersonLink.test.tsx | 2 +- .../__snapshots__/PersonLink.test.tsx.snap | 8 +- .../repo/RepoRevisionSidebarSymbols.test.tsx | 2 +- .../RepositoriesPopover.test.tsx | 2 +- .../RevisionsPopover.test.tsx | 2 +- .../actions/ToggleRenderedFileMode.test.tsx | 2 +- .../codemirror/document-highlights.test.ts | 2 +- .../src/repo/blob/codemirror/utils.test.ts | 2 +- .../commit/CommitMessageWithLinks.test.tsx | 2 +- .../CommitMessageWithLinks.test.tsx.snap | 6 +- .../repo/commits/GitCommitNodeByline.test.tsx | 2 +- .../GitCommitNodeByline.test.tsx.snap | 14 +- .../web/src/repo/linkifiy/get-links.test.ts | 2 +- .../RepositoryReleasesTagsPage.test.tsx | 2 +- .../RepositoryReleasesTagsPage.test.tsx.snap | 6 +- client/web/src/repo/tree/TreePage.test.tsx | 2 +- client/web/src/repo/utils.test.ts | 2 +- client/web/src/search/Notepad.test.tsx | 4 +- client/web/src/search/helpers.test.tsx | 2 +- client/web/src/search/index.test.ts | 2 +- .../search/input/useRecentSearches.test.tsx | 2 +- .../results/SearchResultsInfoBar.test.tsx | 2 +- .../results/StreamingSearchResults.test.tsx | 4 +- .../SearchResultsInfoBar.test.tsx.snap | 12 +- .../export/searchResultsExport.test.ts | 2 +- .../search/results/sidebar/Revisions.test.tsx | 2 +- .../SiteAdminFeatureFlagsPage.test.ts | 2 +- .../SiteAdminMigrationsPage.test.ts | 2 +- .../src/site-admin/init/SiteInitPage.test.tsx | 2 +- .../__snapshots__/SiteInitPage.test.tsx.snap | 6 +- .../src/site/LicenseExpirationAlert.test.tsx | 2 +- .../LicenseExpirationAlert.test.tsx.snap | 6 +- .../src/stores/navbarSearchQueryState.test.ts | 2 +- client/web/src/stores/notepad.test.ts | 4 +- client/web/src/testGlobals.d.ts | 1 - client/web/src/testSetup.test.ts | 26 + .../src/tour/components/Tour/Tour.test.tsx | 2 +- .../src/tour/components/Tour/useTour.test.tsx | 2 +- client/web/src/tracking/userTracker.test.ts | 2 +- client/web/src/tracking/util.test.ts | 2 +- client/web/src/user/index.test.ts | 2 +- .../settings/auth/ExternalAccount.test.tsx | 2 +- .../auth/ExternalAccountsSignIn.test.tsx | 2 +- .../ExternalAccount.test.tsx.snap | 42 +- .../ExternalAccountsSignIn.test.tsx.snap | 4 +- .../profile/UserSettingsProfilePage.test.tsx | 2 +- .../research/ProductResearch.test.tsx | 2 +- .../util/checkRequestAccessAllowed.test.ts | 2 +- client/web/src/util/codeStatsUtils.test.ts | 2 +- client/web/src/util/getReactElements.test.tsx | 2 +- client/web/src/util/prettyBytesBigint.test.ts | 2 +- client/web/src/util/size.test.ts | 2 +- client/web/src/util/time.test.ts | 2 +- client/web/src/util/url.test.ts | 2 +- client/web/tsconfig.json | 6 +- client/web/vitest.config.ts | 22 + client/wildcard/BUILD.bazel | 19 +- client/wildcard/jest.config.js | 11 - client/wildcard/package.json | 2 +- .../src/components/Alert/Alert.test.tsx | 2 +- .../Alert/__snapshots__/Alert.test.tsx.snap | 20 +- .../src/components/Button/Button.test.tsx | 2 +- .../Button/__snapshots__/Button.test.tsx.snap | 28 +- .../components/ButtonLink/ButtonLink.test.tsx | 2 +- .../__snapshots__/ButtonLink.test.tsx.snap | 10 +- .../src/components/Card/Card.test.tsx | 2 +- .../Card/__snapshots__/Card.test.tsx.snap | 4 +- .../components/line-chart/LineChart.test.tsx | 2 +- .../tooltip/utils/get-list-window.test.ts | 2 +- .../get-series-data.test.ts | 2 +- .../utils/get-min-max-boundary.test.ts | 2 +- .../stacked-meter/StackedMeter.test.tsx | 2 +- .../__snapshots__/StackedMeter.test.tsx.snap | 4 +- .../src/components/Collapse/Collapse.test.tsx | 2 +- .../__snapshots__/Collapse.test.tsx.snap | 8 +- .../components/ErrorAlert/ErrorAlert.test.tsx | 2 +- .../__snapshots__/ErrorAlert.test.tsx.snap | 8 +- .../FeedbackBadge/FeedbackBadge.test.tsx | 2 +- .../__snapshots__/FeedbackBadge.test.tsx.snap | 12 +- .../FeedbackPrompt/FeedbackPrompt.test.tsx | 2 +- .../FeedbackPrompt.test.tsx.snap | 18 +- .../FeedbackText/FeedbackText.test.tsx | 2 +- .../__snapshots__/FeedbackText.test.tsx.snap | 8 +- .../src/components/Form/Input/Input.test.tsx | 2 +- .../Input/__snapshots__/Input.test.tsx.snap | 10 +- .../Form/LoaderInput/LoaderInput.test.tsx | 2 +- .../__snapshots__/LoaderInput.test.tsx.snap | 6 +- .../components/Form/Select/Select.test.tsx | 2 +- .../Select/__snapshots__/Select.test.tsx.snap | 18 +- .../Form/TextArea/TextArea.test.tsx | 2 +- .../__snapshots__/TextArea.test.tsx.snap | 4 +- .../Form/internal/BaseControlInput.test.tsx | 2 +- .../BaseControlInput.test.tsx.snap | 26 +- .../src/components/Icon/Icon.test.tsx | 2 +- .../Icon/__snapshots__/Icon.test.tsx.snap | 16 +- .../Link/AnchorLink/AnchorLink.test.tsx | 2 +- .../__snapshots__/AnchorLink.test.tsx.snap | 4 +- .../src/components/Link/Link/Link.tsx | 4 +- .../Link/LinkOrSpan/LinkOrSpan.test.tsx | 2 +- .../__snapshots__/LinkOrSpan.test.tsx.snap | 6 +- .../Link/RouterLink/RouterLink.test.tsx | 2 +- .../__snapshots__/RouterLink.test.tsx.snap | 6 +- .../components/Link/createLinkUrl.test.tsx | 2 +- .../src/components/Markdown/Markdown.test.tsx | 2 +- .../__snapshots__/Markdown.test.tsx.snap | 4 +- .../src/components/NavMenu/NavMenu.test.tsx | 2 +- .../__snapshots__/NavMenu.test.tsx.snap | 4 +- .../components/PageHeader/PageHeader.test.tsx | 2 +- .../__snapshots__/PageHeader.test.tsx.snap | 4 +- .../PageSelector/PageSelector.test.tsx | 2 +- .../PageSwitcher/PageSwitcher.test.tsx | 2 +- .../src/components/Panel/Panel.test.tsx | 2 +- .../Panel/__snapshots__/Panel.test.tsx.snap | 4 +- .../tether/models/geometry/rectangle.test.ts | 2 +- .../actions/get-constrained-element.test.ts | 2 +- .../src/components/Tabs/Tabs.test.tsx | 2 +- .../src/components/Tooltip/Tooltip.test.tsx | 2 +- .../src/components/Tree/Tree.test.tsx | 2 +- .../components/Typography/Code/Code.test.tsx | 2 +- .../Code/__snapshots__/Code.test.tsx.snap | 6 +- .../components/Typography/Heading/H1.test.tsx | 2 +- .../components/Typography/Heading/H2.test.tsx | 2 +- .../components/Typography/Heading/H3.test.tsx | 2 +- .../components/Typography/Heading/H4.test.tsx | 2 +- .../components/Typography/Heading/H5.test.tsx | 2 +- .../components/Typography/Heading/H6.test.tsx | 2 +- .../Heading/__snapshots__/H1.test.tsx.snap | 6 +- .../Heading/__snapshots__/H2.test.tsx.snap | 6 +- .../Heading/__snapshots__/H3.test.tsx.snap | 6 +- .../Heading/__snapshots__/H4.test.tsx.snap | 6 +- .../Heading/__snapshots__/H5.test.tsx.snap | 6 +- .../Heading/__snapshots__/H6.test.tsx.snap | 6 +- .../Typography/Label/Label.test.tsx | 2 +- .../Label/__snapshots__/Label.test.tsx.snap | 6 +- .../components/Typography/Text/Text.test.tsx | 2 +- .../Text/__snapshots__/Text.test.tsx.snap | 6 +- client/wildcard/src/globals.d.ts | 5 - .../src/hooks/useCookieStorage.test.ts | 2 +- .../wildcard/src/hooks/useObservable.test.ts | 2 +- .../src/hooks/useTimeoutManager.test.ts | 2 +- client/wildcard/src/testing/globals.d.ts | 1 - .../testing/render-with-branded-context.tsx | 4 +- client/wildcard/src/testing/testSetup.test.ts | 1 + .../src/utils/linkClickHandler.test.tsx | 2 +- client/wildcard/tsconfig.json | 4 - client/wildcard/vitest.config.ts | 13 + dev/ci/internal/ci/changed/diff.go | 3 - dev/ci/internal/ci/changed/files.go | 4 +- dev/ci/pnpm-test-separate.sh | 20 - dev/ci/pnpm-test.sh | 22 - dev/defs.bzl | 39 +- dev/eslint.bzl | 1 - dev/update-embeddings-list/babel.config.js | 3 - dev/update-embeddings-list/package.json | 2 +- dev/update-embeddings-list/src/index.test.ts | 2 +- doc/dev/background-information/bazel/web.md | 7 +- .../bazel/web_overview.md | 8 +- .../background-information/ci/development.md | 29 - .../testing_web_code.md | 2 +- doc/dev/how-to/cache_ci_artefacts.md | 5 +- .../ci_soft_failure_and_still_notify.md | 6 +- doc/dev/how-to/testing.md | 12 +- jest.config.base.js | 128 -- jest.config.js | 6 - jest.snapshot-resolver.js | 39 - package.json | 27 +- pnpm-lock.yaml | 1589 ++++------------- sg.config.yaml | 114 +- vitest.shared.ts | 145 ++ vitest.workspace.ts | 18 + 570 files changed, 2025 insertions(+), 3455 deletions(-) delete mode 100644 babel.config.jest.js delete mode 100644 babel.config.js delete mode 100644 client/branded/jest.config.js delete mode 100644 client/branded/src/testGlobals.d.ts create mode 100644 client/branded/src/testSetup.test.ts create mode 100644 client/branded/vitest.config.ts delete mode 100644 client/browser/jest.config.js delete mode 100644 client/browser/src/shared/jestSetupAfterEnv.js delete mode 100644 client/browser/src/testGlobals.d.ts create mode 100644 client/browser/src/testSetup.test.ts create mode 100644 client/browser/vitest.config.ts delete mode 100644 client/build-config/jest.config.js delete mode 100644 client/client-api/jest.config.js create mode 100644 client/client-api/vitest.config.ts delete mode 100644 client/codeintellify/jest.config.js create mode 100644 client/codeintellify/src/testSetup.test.ts delete mode 100644 client/codeintellify/src/testutils/globals.d.ts create mode 100644 client/codeintellify/vitest.config.ts delete mode 100644 client/common/jest.config.js delete mode 100644 client/common/src/jestSetupAfterEnv.js create mode 100644 client/common/vitest.config.ts delete mode 100644 client/http-client/jest.config.js create mode 100644 client/http-client/vitest.config.ts delete mode 100644 client/observability-client/jest.config.js create mode 100644 client/observability-client/vitest.config.ts delete mode 100644 client/observability-server/jest.config.js create mode 100644 client/observability-server/vitest.config.ts delete mode 100644 client/shared/dev/jest-environment.js delete mode 100644 client/shared/dev/mockDate.js delete mode 100644 client/shared/dev/mockDomRect.ts delete mode 100644 client/shared/dev/mockEventLogger.ts delete mode 100644 client/shared/dev/mockMatchMedia.ts delete mode 100644 client/shared/dev/mockResizeObserver.ts delete mode 100644 client/shared/dev/mockSentryBrowser.ts delete mode 100644 client/shared/jest.config.js delete mode 100644 client/shared/src/testGlobals.d.ts create mode 100644 client/shared/src/testSetup.test.ts delete mode 100644 client/shared/src/types/jasmine/index.d.ts delete mode 100644 client/shared/src/types/puppeteer-firefox/index.d.ts delete mode 100644 client/shared/src/types/storybook-chromatic/index.d.ts delete mode 100644 client/shared/src/types/web-ext/index.d.ts create mode 100644 client/shared/vitest.config.ts delete mode 100644 client/storybook/jest.config.js delete mode 100644 client/template-parser/jest.config.js create mode 100644 client/template-parser/vitest.config.ts delete mode 100644 client/testing/jest.config.js rename client/{shared/dev => testing/src}/fetch.js (100%) rename client/{shared/dev/jestGlobalSetup.js => testing/src/globalTestSetup.ts} (73%) create mode 100644 client/testing/src/jestDomMatchers.ts create mode 100644 client/testing/src/mockDate.ts create mode 100644 client/testing/src/mockMatchMedia.ts create mode 100644 client/testing/src/mockResizeObserver.ts rename client/{shared/dev => testing/src}/mockUniqueId.ts (50%) rename client/{shared/dev => testing/src}/reactCleanup.ts (88%) rename client/web/{src => }/__mocks__/zustand.ts (96%) delete mode 100644 client/web/dev/jest.config.js create mode 100644 client/web/dev/vitest.config.ts delete mode 100644 client/web/jest.config.js delete mode 100644 client/web/src/testGlobals.d.ts create mode 100644 client/web/src/testSetup.test.ts create mode 100644 client/web/vitest.config.ts delete mode 100644 client/wildcard/jest.config.js delete mode 100644 client/wildcard/src/testing/globals.d.ts create mode 100644 client/wildcard/src/testing/testSetup.test.ts create mode 100644 client/wildcard/vitest.config.ts delete mode 100755 dev/ci/pnpm-test-separate.sh delete mode 100755 dev/ci/pnpm-test.sh delete mode 100644 dev/update-embeddings-list/babel.config.js delete mode 100644 jest.config.base.js delete mode 100644 jest.config.js delete mode 100644 jest.snapshot-resolver.js create mode 100644 vitest.shared.ts create mode 100644 vitest.workspace.ts diff --git a/.eslintrc.js b/.eslintrc.js index 11713cfd816..3fd224fffd7 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -22,7 +22,6 @@ const config = { '**/*.json', '**/*.d.ts', 'eslint-relative-formatter.js', - 'jest.config.js', 'typedoc.js', 'bundlesize.config.js', ], @@ -135,6 +134,7 @@ See https://handbook.sourcegraph.com/community/faq#is-all-of-sourcegraph-open-so '!@sourcegraph/*/src/stories', '!@sourcegraph/build-config/src/esbuild/*', '!@sourcegraph/build-config/src/*', + '!@sourcegraph/testing/src/jestDomMatchers', ], message: 'Imports from package internals are banned. Add relevant export to the entry point of the package to import it from the outside world.', diff --git a/.mocharc.js b/.mocharc.js index 640dfb7b4af..3d018039207 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -5,7 +5,7 @@ module.exports = { require: [ ...(IS_BAZEL ? [] : ['ts-node/register/transpile-only']), 'abort-controller/polyfill', - rootDir + '/client/shared/dev/fetch', + rootDir + '/client/testing/src/fetch', rootDir + '/client/shared/dev/suppressPollyErrors', ], reporter: rootDir + '/client/shared/dev/customMochaSpecReporter.js', diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 9a71917ed30..163d28ea915 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -11,7 +11,6 @@ "exiasr.hadolint", "bierner.markdown-mermaid", "ecmel.vscode-html-css", - "orta.vscode-jest", "dbaeumer.vscode-eslint", "foxundermoon.shell-format", "timonwong.shellcheck", diff --git a/.vscode/launch.json b/.vscode/launch.json index 89bed4992ae..911c7774b43 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -74,28 +74,6 @@ "E2E_BROWSER": "chrome" } }, - { - "type": "node", - "name": "vscode-jest-tests", - "request": "launch", - "program": "${workspaceFolder}/node_modules/jest/bin/jest", - "args": [ - "--color", - "--runInBand" - // "path/to/test/file", - // "-t", - // "test name", - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "skipFiles": [ - "**/async_hooks.js", - "**/inspector_async_hook.js" - // "**/node_modules/rxjs", - ], - "smartStep": false - }, { "name": "Webapp Chrome", "type": "chrome", diff --git a/.vscode/settings.json b/.vscode/settings.json index 6d83a012055..1b17d6d0980 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -37,7 +37,6 @@ "build.allowImplicitNetworkAccess": true, "local": "github.com/sourcegraph/sourcegraph" }, - "jest.jestCommandLine": "pnpm run test", "npm.packageManager": "pnpm", "npm.runSilent": true, "typescript.preferences.quoteStyle": "single", diff --git a/BUILD.bazel b/BUILD.bazel index 9c22ead4c4e..c1b1cd0e19e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -83,58 +83,20 @@ copy_to_bin( ) js_library( - name = "jest_config", + name = "vitest_config", testonly = True, srcs = [ - "jest.config.base.js", - ], - data = [ - "jest.snapshot-resolver.js", + "vitest.shared.ts", ], visibility = ["//visibility:public"], deps = [ - ":babel_config_jest", "//:node_modules/@testing-library/jest-dom", "//:node_modules/abort-controller", - "//:node_modules/babel-jest", "//:node_modules/core-js", "//:node_modules/identity-obj-proxy", "//:node_modules/message-port-polyfill", "//:node_modules/regenerator-runtime", - "//client/shared/dev:mock", - ], -) - -js_library( - name = "babel_config_jest", - testonly = True, - srcs = [ - "babel.config.jest.js", - ], - visibility = ["//visibility:public"], - deps = [ - "//:node_modules/@babel/preset-env", - "//:node_modules/@babel/runtime", - "//:node_modules/signale", - ], -) - -js_library( - name = "babel_config", - srcs = [ - "babel.config.js", - ], - data = [ - ":package_json", - ], - visibility = ["//visibility:public"], - deps = [ - "//:node_modules/@babel/preset-env", - "//:node_modules/@babel/preset-react", - "//:node_modules/@babel/preset-typescript", - "//:node_modules/@babel/runtime", - "//:node_modules/semver", - "//:node_modules/signale", + "//client/testing:testing_lib", ], ) @@ -146,9 +108,9 @@ js_library( ], deps = [ "//:node_modules/abort-controller", - "//client/shared/dev:fetch-mock", "//client/shared/dev:mocha-reporter", "//client/shared/dev:suppress-polly-errors", + "//client/testing:fetch-mock", ], ) diff --git a/WORKSPACE b/WORKSPACE index 2ce398ef28c..17712c0947c 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -42,13 +42,6 @@ http_archive( url = "https://github.com/aspect-build/rules_ts/releases/download/v2.0.0/rules_ts-v2.0.0.tar.gz", ) -http_archive( - name = "aspect_rules_jest", - sha256 = "bf8f4a4d2a833e4f96f866c686c38bcee69d3bdae8a827b1c9d2fdf92212bc0b", - strip_prefix = "rules_jest-95d8f1961a9c6f3aee2929881b1b74461652e775", - url = "https://github.com/aspect-build/rules_jest/archive/95d8f1961a9c6f3aee2929881b1b74461652e775.tar.gz", -) - http_archive( name = "aspect_rules_swc", sha256 = "8eb9e42ed166f20cacedfdb22d8d5b31156352eac190fc3347db55603745a2d8", @@ -197,22 +190,6 @@ load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") rules_ts_dependencies(ts_version = "4.9.5") -# rules_jest setup ============================== -load("@aspect_rules_jest//jest:dependencies.bzl", "rules_jest_dependencies") - -rules_jest_dependencies() - -load("@aspect_rules_jest//jest:repositories.bzl", "jest_repositories") - -jest_repositories( - name = "jest", - jest_version = "v28.1.0", -) - -load("@jest//:npm_repositories.bzl", jest_npm_repositories = "npm_repositories") - -jest_npm_repositories() - # rules_swc setup ============================== load("@aspect_rules_swc//swc:dependencies.bzl", "rules_swc_dependencies") diff --git a/babel.config.jest.js b/babel.config.jest.js deleted file mode 100644 index ff9f865af27..00000000000 --- a/babel.config.jest.js +++ /dev/null @@ -1,30 +0,0 @@ -// @ts-check - -// A minimal babel config only for jest transformations. -// All typescript and react transformations are done by previous -// bazel build rules, so we only need to do jest transformations here. - -// TODO(bazel): drop when non-bazel removed. -if (!(process.env.JS_BINARY__TARGET || process.env.BAZEL_BINDIR || process.env.BAZEL_TEST)) { - throw new Error(__filename + ' is only for use with Bazel') -} - -/** @type {import('@babel/core').ConfigFunction} */ -module.exports = api => { - api.cache.forever() - - return { - presets: [ - [ - '@babel/preset-env', - { - targets: { - // We only run jest tests in node. All the browser related transformations - // are already completed on the previous transpilation step. - node: '16', - }, - }, - ], - ], - } -} diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 913fed5a8f6..00000000000 --- a/babel.config.js +++ /dev/null @@ -1,36 +0,0 @@ -// @ts-check - -/** @type {import('@babel/core').ConfigFunction} */ -module.exports = api => { - const isTest = api.env('test') - api.cache.forever() - - /** - * Do no use babel-preset-env for mocha tests transpilation in Bazel. - * This is temporary workaround to allow us to use modern language featurs in `drive.page.evaluate` calls. - */ - const disablePresetEnv = Boolean(process.env.DISABLE_PRESET_ENV && JSON.parse(process.env.DISABLE_PRESET_ENV)) - - return { - presets: [ - ...(disablePresetEnv - ? [] - : [ - [ - '@babel/preset-env', - { - // Node (used for testing) doesn't support modules, so compile to CommonJS for testing. - modules: process.env.BABEL_MODULE ?? (isTest ? 'commonjs' : false), - }, - ], - ]), - ['@babel/preset-typescript', { isTSX: true, allExtensions: true }], - [ - '@babel/preset-react', - { - runtime: 'automatic', - }, - ], - ], - } -} diff --git a/client/BUILD.bazel b/client/BUILD.bazel index 186baa7dde2..c74cedda125 100644 --- a/client/BUILD.bazel +++ b/client/BUILD.bazel @@ -5,7 +5,7 @@ # gazelle:js_files globals.d.ts # Test files, snapshots etc: -# gazelle:js_test_files **/*.{spec,test}.{ts,tsx} +# gazelle:js_test_files **/*.test.{ts,tsx} # gazelle:js_test_files **/mock*.{ts,tsx} # gazelle:js_test_files **/*.{mock,mocks}.{ts,tsx} # gazelle:js_test_files **/mocks/** @@ -16,6 +16,10 @@ # gazelle:js_test_files **/WebStory.{ts,tsx} # TODO(bazel): sveltekit tests # gazelle:exclude **/web-sveltekit/**/*.ts +# gazelle:exclude **/vitest.config.ts + +# Otherwise it gets tripped up on the `declare module 'vitest'` directives to add custom matchers. +# gazelle:js_resolve vitest //:node_modules/vitest # TODO(bazel): put fixtures + testutils + ? into own rules # js_{fixture}_files **/*.{fixture,fixtures}.{ts,tsx} diff --git a/client/app-shell/tsconfig.json b/client/app-shell/tsconfig.json index 04fa32805ef..702217803dd 100644 --- a/client/app-shell/tsconfig.json +++ b/client/app-shell/tsconfig.json @@ -2,10 +2,6 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "module": "esnext", - "baseUrl": ".", - "paths": { - "*": ["src/types/*", "../shared/src/types/*", "../common/src/types/*", "*"], - }, "jsx": "react-jsx", "rootDir": "./src", "outDir": "out", diff --git a/client/branded/BUILD.bazel b/client/branded/BUILD.bazel index 7aa0dd2c6d1..55d56c767dd 100644 --- a/client/branded/BUILD.bazel +++ b/client/branded/BUILD.bazel @@ -1,11 +1,10 @@ load("@npm//:defs.bzl", "npm_link_all_packages") -load("//dev:defs.bzl", "jest_test", "npm_package", "sass", "ts_project") +load("//dev:defs.bzl", "npm_package", "sass", "ts_project", "vitest_test") load("//client/shared/dev:tools.bzl", "module_style_typings") load("//dev:eslint.bzl", "eslint_config_and_lint_root", "eslint_test_with_types") # TODO(bazel): storybook build # gazelle:exclude **/*.story.{ts,tsx} -# gazelle:exclude **/testGlobals.d.ts # gazelle:js_resolve **/*.module.scss :module_style_typings @@ -25,7 +24,6 @@ eslint_test_with_types( ]), config = ":eslint_config", deps = [ - "//:jest_config", # required for import/extensions rule not to fail on the `jest.config.base` import. "//:node_modules/@types/node", ], ) @@ -36,8 +34,6 @@ ts_config( visibility = ["//client:__subpackages__"], deps = [ "//:tsconfig", - "//client/client-api:tsconfig", - "//client/codeintellify:tsconfig", "//client/common:tsconfig", "//client/extension-api-types:tsconfig", "//client/observability-client:tsconfig", @@ -170,7 +166,6 @@ ts_project( tsconfig = ":tsconfig", deps = [ ":module_style_typings", - ":node_modules/@sourcegraph/codeintellify", #keep ":node_modules/@sourcegraph/common", ":node_modules/@sourcegraph/http-client", ":node_modules/@sourcegraph/observability-client", @@ -191,7 +186,6 @@ ts_project( "//:node_modules/@types/react", "//:node_modules/@types/react-dom", "//:node_modules/classnames", - "//:node_modules/comlink", #keep "//:node_modules/copy-to-clipboard", "//:node_modules/date-fns", "//:node_modules/dompurify", @@ -241,7 +235,7 @@ ts_project( "src/search-ui/results/sidebar/SearchFilterSection.test.tsx", "src/search-ui/results/sidebar/helpers.test.ts", "src/search-ui/results/use-items-to-show.test.ts", - "src/testGlobals.d.ts", #keep + "src/testSetup.test.ts", ], tsconfig = ":tsconfig", deps = [ @@ -251,7 +245,6 @@ ts_project( ":node_modules/@sourcegraph/wildcard", "//:node_modules/@codemirror/autocomplete", "//:node_modules/@codemirror/state", - "//:node_modules/@jest/globals", "//:node_modules/@testing-library/jest-dom", #keep "//:node_modules/@testing-library/react", "//:node_modules/@testing-library/user-event", @@ -267,6 +260,7 @@ ts_project( "//:node_modules/react-dom", "//:node_modules/rxjs", "//:node_modules/sinon", + "//:node_modules/vitest", ], ) @@ -279,13 +273,16 @@ npm_package( ], ) -jest_test( +filegroup( + name = "snapshots", + srcs = glob(["src/**/__snapshots__/*"]), +) + +vitest_test( name = "test", timeout = "long", data = [ ":branded_tests", + ":snapshots", ], - patch_node_fs = False, - shard_count = 6, - tags = ["no-sandbox"], ) diff --git a/client/branded/jest.config.js b/client/branded/jest.config.js deleted file mode 100644 index 86b018b7fce..00000000000 --- a/client/branded/jest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @ts-check - -/** @type {import('@jest/types').Config.InitialOptions} */ -const config = require('../../jest.config.base') - -/** @type {import('@jest/types').Config.InitialOptions} */ -module.exports = { - ...config, - displayName: 'branded', - rootDir: __dirname, -} diff --git a/client/branded/package.json b/client/branded/package.json index 0abcffa7aa1..2d9c3e7c9c1 100644 --- a/client/branded/package.json +++ b/client/branded/package.json @@ -9,15 +9,13 @@ "storybook": "STORIES_GLOB='client/branded/src/**/*.story.tsx' pnpm --filter @sourcegraph/storybook run start", "lint:js": "eslint --cache '**/*.[jt]s?(x)'", "lint:css": "stylelint 'src/**/*.scss' --quiet", - "test": "jest" + "test": "vitest" }, "devDependencies": { "@sourcegraph/extension-api-types": "workspace:*", "@sourcegraph/testing": "workspace:*" }, "dependencies": { - "@sourcegraph/client-api": "workspace:*", - "@sourcegraph/codeintellify": "workspace:*", "@sourcegraph/common": "workspace:*", "@sourcegraph/observability-client": "workspace:*", "@sourcegraph/shared": "workspace:*", diff --git a/client/branded/src/components/Timestamp/Timestamp.test.tsx b/client/branded/src/components/Timestamp/Timestamp.test.tsx index 1d34d1ae295..0140b9829ad 100644 --- a/client/branded/src/components/Timestamp/Timestamp.test.tsx +++ b/client/branded/src/components/Timestamp/Timestamp.test.tsx @@ -1,5 +1,5 @@ -import { describe, expect, test } from '@jest/globals' import { render } from '@testing-library/react' +import { describe, expect, test } from 'vitest' import { Timestamp, TimestampFormat } from './Timestamp' diff --git a/client/branded/src/components/Timestamp/__snapshots__/Timestamp.test.tsx.snap b/client/branded/src/components/Timestamp/__snapshots__/Timestamp.test.tsx.snap index 4b2710a2cfa..74b60b0e6a2 100644 --- a/client/branded/src/components/Timestamp/__snapshots__/Timestamp.test.tsx.snap +++ b/client/branded/src/components/Timestamp/__snapshots__/Timestamp.test.tsx.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Timestamp absolute time with formatting 1`] = ` +exports[`Timestamp > absolute time with formatting 1`] = ` `; -exports[`Timestamp mocked current time 1`] = ` +exports[`Timestamp > mocked current time 1`] = ` - about 22 hours ago + almost 18 years ago `; -exports[`Timestamp noAbout 1`] = ` +exports[`Timestamp > noAbout 1`] = ` - 22 hours ago + almost 18 years ago `; -exports[`Timestamp noAgo 1`] = ` +exports[`Timestamp > noAgo 1`] = ` - about 22 hours + almost 18 years `; -exports[`Timestamp with time time 1`] = ` +exports[`Timestamp > with time time 1`] = ` - about 21 hours ago + almost 18 years ago `; diff --git a/client/branded/src/components/Toggle.test.tsx b/client/branded/src/components/Toggle.test.tsx index c970bb76c8c..7b52e3c90e6 100644 --- a/client/branded/src/components/Toggle.test.tsx +++ b/client/branded/src/components/Toggle.test.tsx @@ -1,7 +1,7 @@ -import { describe, expect, test } from '@jest/globals' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import sinon from 'sinon' +import { describe, expect, test } from 'vitest' import { Toggle } from './Toggle' diff --git a/client/branded/src/components/__snapshots__/Toggle.test.tsx.snap b/client/branded/src/components/__snapshots__/Toggle.test.tsx.snap index cc0fadb2dc2..18c6b0a50e7 100644 --- a/client/branded/src/components/__snapshots__/Toggle.test.tsx.snap +++ b/client/branded/src/components/__snapshots__/Toggle.test.tsx.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Toggle aria 1`] = ` +exports[`Toggle > aria 1`] = `