From e60885aa8816092c69b4b4c1cb60932787bb6bd8 Mon Sep 17 00:00:00 2001
From: Tim Down <158919+timdown@users.noreply.github.com>
Date: Wed, 24 Jul 2024 14:40:24 +0100
Subject: [PATCH] Merge pull request #19347 from overleaf/td-bs5-cypress-css
Move CSS loading in Cypress to individual test spec files
GitOrigin-RevId: 92bb5167cfa81b0bd54acc724efb23b397421ccb
---
services/web/cypress/support/component.ts | 1 -
.../js/features/settings/components/emails/email.tsx | 2 +-
.../settings/components/emails/reconfirmation-info.tsx | 2 +-
.../components/bootstrap-5/bootstrap-version-switcher.tsx | 2 +-
services/web/frontend/js/features/utils/bootstrap-5.ts | 6 ++++--
.../components/editor-left-menu/editor-left-menu.spec.tsx | 1 +
.../components/pdf-preview/detach-compile-button.spec.tsx | 1 +
.../frontend/components/pdf-preview/pdf-js-viewer.spec.tsx | 1 +
.../components/pdf-preview/pdf-logs-entries.spec.tsx | 1 +
.../pdf-preview/pdf-preview-detached-root.spec.tsx | 1 +
.../pdf-preview/pdf-preview-hybrid-toolbar.spec.tsx | 1 +
.../frontend/components/pdf-preview/pdf-preview.spec.tsx | 1 +
.../components/pdf-preview/pdf-synctex-controls.spec.tsx | 1 +
.../project-list/notifications/group-invitation.spec.tsx | 1 +
.../frontend/components/shared/accessible-modal.spec.tsx | 1 +
.../web/test/frontend/components/shared/beta-badge.spec.tsx | 1 +
.../web/test/frontend/components/shared/select.spec.tsx | 1 +
.../web/test/frontend/components/shared/split-menu.spec.tsx | 1 +
.../frontend/components/shared/split-test-badge.spec.tsx | 1 +
.../components/shared/start-free-trial-button.spec.tsx | 1 +
.../web/test/frontend/components/shared/tooltip.spec.tsx | 1 +
.../components/token-access/token-access-page.spec.tsx | 1 +
.../file-tree-create/file-tree-create-name-input.spec.tsx | 1 +
.../file-tree-create/file-tree-modal-create-file.spec.tsx | 1 +
.../features/file-tree/components/file-tree-doc.spec.tsx | 1 +
.../file-tree/components/file-tree-folder-list.spec.tsx | 1 +
.../features/file-tree/components/file-tree-folder.spec.tsx | 1 +
.../components/file-tree-item/file-tree-item-inner.spec.tsx | 1 +
.../components/file-tree-item/file-tree-item-name.spec.tsx | 1 +
.../features/file-tree/components/file-tree-root.spec.tsx | 1 +
.../file-tree/components/file-tree-toolbar.spec.tsx | 1 +
.../frontend/features/file-tree/flows/context-menu.spec.tsx | 1 +
.../features/file-tree/flows/create-folder.spec.tsx | 1 +
.../features/file-tree/flows/delete-entity.spec.tsx | 1 +
.../features/file-tree/flows/rename-entity.spec.tsx | 1 +
.../group-management/components/group-managers.spec.tsx | 1 +
.../group-management/components/group-members.spec.tsx | 1 +
.../components/institution-managers.spec.tsx | 1 +
.../components/managed-group-members.spec.tsx | 1 +
.../components/members-table/dropdown-button.spec.tsx | 1 +
.../components/members-table/managed-user-status.spec.tsx | 1 +
.../components/members-table/member-row.spec.tsx | 1 +
.../components/members-table/members-list.spec.tsx | 1 +
.../members-table/offboard-managed-user-modal.spec.tsx | 1 +
.../group-management/components/publisher-managers.spec.tsx | 1 +
.../features/history/components/change-list.spec.tsx | 1 +
.../history/components/document-diff-viewer.spec.tsx | 1 +
.../frontend/features/history/components/toolbar.spec.tsx | 1 +
.../layout/components/switch-to-editor-button.spec.tsx | 1 +
.../layout/components/switch-to-pdf-button.spec.tsx | 1 +
.../features/outline/components/outline-item.spec.tsx | 1 +
.../features/outline/components/outline-list.spec.tsx | 1 +
.../features/outline/components/outline-pane.spec.tsx | 1 +
.../features/outline/components/outline-root.spec.tsx | 1 +
.../new-project-button/upload-project-modal.spec.tsx | 1 +
.../frontend/features/review-panel/review-panel.spec.tsx | 1 +
.../components/codemirror-editor-autocomplete.spec.tsx | 1 +
.../components/codemirror-editor-close-brackets.spec.tsx | 1 +
.../components/codemirror-editor-cursor.spec.tsx | 1 +
.../components/codemirror-editor-figure-modal.spec.tsx | 1 +
.../components/codemirror-editor-fundamentals.spec.tsx | 1 +
.../components/codemirror-editor-shortcuts.spec.tsx | 1 +
.../components/codemirror-editor-spellchecker.spec.tsx | 1 +
.../components/codemirror-editor-table-generator.spec.tsx | 1 +
.../codemirror-editor-visual-command-tooltip.spec.tsx | 1 +
.../components/codemirror-editor-visual-floats.spec.tsx | 1 +
.../components/codemirror-editor-visual-list.spec.tsx | 1 +
.../components/codemirror-editor-visual-paste-html.spec.tsx | 1 +
.../components/codemirror-editor-visual-readonly.spec.tsx | 1 +
.../components/codemirror-editor-visual-toolbar.spec.tsx | 1 +
.../components/codemirror-editor-visual-tooltips.spec.tsx | 1 +
.../components/codemirror-editor-visual.spec.tsx | 1 +
.../source-editor/components/codemirror-editor.spec.tsx | 1 +
services/web/test/frontend/helpers/bootstrap-3.ts | 5 +++++
services/web/test/frontend/helpers/bootstrap-5.ts | 5 +++++
services/web/test/frontend/infrastructure/i18n.spec.tsx | 1 +
.../test/frontend/shared/hooks/use-detach-action.spec.tsx | 1 +
.../test/frontend/shared/hooks/use-detach-layout.spec.tsx | 1 +
.../test/frontend/shared/hooks/use-detach-state.spec.tsx | 1 +
.../web/test/frontend/shared/hooks/use-recaptcha.spec.tsx | 1 +
services/web/test/frontend/shared/hooks/use-resize.spec.tsx | 1 +
81 files changed, 91 insertions(+), 6 deletions(-)
create mode 100644 services/web/test/frontend/helpers/bootstrap-3.ts
create mode 100644 services/web/test/frontend/helpers/bootstrap-5.ts
diff --git a/services/web/cypress/support/component.ts b/services/web/cypress/support/component.ts
index 0f246c392a..93ae407185 100644
--- a/services/web/cypress/support/component.ts
+++ b/services/web/cypress/support/component.ts
@@ -1,5 +1,4 @@
import 'cypress-plugin-tab'
-import '../../frontend/stylesheets/main-style.less'
import { resetMeta } from './ct/window' // needs to be before i18n
import '../../frontend/js/i18n'
import './shared/commands'
diff --git a/services/web/frontend/js/features/settings/components/emails/email.tsx b/services/web/frontend/js/features/settings/components/emails/email.tsx
index 3b16aafe93..e46dc5b76f 100644
--- a/services/web/frontend/js/features/settings/components/emails/email.tsx
+++ b/services/web/frontend/js/features/settings/components/emails/email.tsx
@@ -40,7 +40,7 @@ function Email({ userEmailData }: EmailProps) {
)}
{hasBadges && (
-
+
{isPrimary && (
<>
Primary{' '}
diff --git a/services/web/frontend/js/features/settings/components/emails/reconfirmation-info.tsx b/services/web/frontend/js/features/settings/components/emails/reconfirmation-info.tsx
index 0b0fc499ef..4eae46e670 100644
--- a/services/web/frontend/js/features/settings/components/emails/reconfirmation-info.tsx
+++ b/services/web/frontend/js/features/settings/components/emails/reconfirmation-info.tsx
@@ -97,7 +97,7 @@ function ReconfirmationInfo({ userEmailData }: ReconfirmationInfoProps) {
return (
- {isBootstrap5 ? (
+ {isBootstrap5() ? (
{isBootstrap5 ? bs5 : bs3}>
+ return <>{isBootstrap5() ? bs5 : bs3}>
}
export default BootstrapVersionSwitcher
diff --git a/services/web/frontend/js/features/utils/bootstrap-5.ts b/services/web/frontend/js/features/utils/bootstrap-5.ts
index 2723ea458e..371cc7fee4 100644
--- a/services/web/frontend/js/features/utils/bootstrap-5.ts
+++ b/services/web/frontend/js/features/utils/bootstrap-5.ts
@@ -1,9 +1,11 @@
import getMeta from '@/utils/meta'
-export const isBootstrap5 = getMeta('ol-bootstrapVersion') === 5
+// The reason this is a function to ensure that meta tag is read before any
+// isBootstrap5 check is performed
+export const isBootstrap5 = () => getMeta('ol-bootstrapVersion') === 5
export const bsVersion = ({ bs5, bs3 }: { bs5?: string; bs3?: string }) => {
- return isBootstrap5 ? bs5 : bs3
+ return isBootstrap5() ? bs5 : bs3
}
// get all `aria-*` and `data-*` attributes
diff --git a/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx b/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx
index 31f5ecac10..2c9ca2c308 100644
--- a/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx
+++ b/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import EditorLeftMenu from '../../../../frontend/js/features/editor-left-menu/components/editor-left-menu'
import {
AllowedImageName,
diff --git a/services/web/test/frontend/components/pdf-preview/detach-compile-button.spec.tsx b/services/web/test/frontend/components/pdf-preview/detach-compile-button.spec.tsx
index 3591bca742..e14f1bd727 100644
--- a/services/web/test/frontend/components/pdf-preview/detach-compile-button.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/detach-compile-button.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { EditorProviders } from '../../helpers/editor-providers'
import DetachCompileButtonWrapper from '../../../../frontend/js/features/pdf-preview/components/detach-compile-button-wrapper'
import { mockScope } from './scope'
diff --git a/services/web/test/frontend/components/pdf-preview/pdf-js-viewer.spec.tsx b/services/web/test/frontend/components/pdf-preview/pdf-js-viewer.spec.tsx
index ab68364fb6..bd133e7f51 100644
--- a/services/web/test/frontend/components/pdf-preview/pdf-js-viewer.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/pdf-js-viewer.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { EditorProviders } from '../../helpers/editor-providers'
import PdfJsViewer from '../../../../frontend/js/features/pdf-preview/components/pdf-js-viewer'
import { mockScope } from './scope'
diff --git a/services/web/test/frontend/components/pdf-preview/pdf-logs-entries.spec.tsx b/services/web/test/frontend/components/pdf-preview/pdf-logs-entries.spec.tsx
index 1756065203..5e8ca5c4b3 100644
--- a/services/web/test/frontend/components/pdf-preview/pdf-logs-entries.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/pdf-logs-entries.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { EditorProviders } from '../../helpers/editor-providers'
import PdfLogsEntries from '../../../../frontend/js/features/pdf-preview/components/pdf-logs-entries'
import { detachChannel, testDetachChannel } from '../../helpers/detach-channel'
diff --git a/services/web/test/frontend/components/pdf-preview/pdf-preview-detached-root.spec.tsx b/services/web/test/frontend/components/pdf-preview/pdf-preview-detached-root.spec.tsx
index cbb65861f9..17f8d95074 100644
--- a/services/web/test/frontend/components/pdf-preview/pdf-preview-detached-root.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/pdf-preview-detached-root.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import PdfPreviewDetachedRoot from '../../../../frontend/js/features/pdf-preview/components/pdf-preview-detached-root'
import { detachChannel, testDetachChannel } from '../../helpers/detach-channel'
diff --git a/services/web/test/frontend/components/pdf-preview/pdf-preview-hybrid-toolbar.spec.tsx b/services/web/test/frontend/components/pdf-preview/pdf-preview-hybrid-toolbar.spec.tsx
index a7bc15441c..88e118f224 100644
--- a/services/web/test/frontend/components/pdf-preview/pdf-preview-hybrid-toolbar.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/pdf-preview-hybrid-toolbar.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { EditorProviders } from '../../helpers/editor-providers'
import PdfPreviewHybridToolbar from '../../../../frontend/js/features/pdf-preview/components/pdf-preview-hybrid-toolbar'
import { testDetachChannel } from '../../helpers/detach-channel'
diff --git a/services/web/test/frontend/components/pdf-preview/pdf-preview.spec.tsx b/services/web/test/frontend/components/pdf-preview/pdf-preview.spec.tsx
index 2295232019..1f46407f6e 100644
--- a/services/web/test/frontend/components/pdf-preview/pdf-preview.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/pdf-preview.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import localStorage from '../../../../frontend/js/infrastructure/local-storage'
import PdfPreview from '../../../../frontend/js/features/pdf-preview/components/pdf-preview'
import { EditorProviders } from '../../helpers/editor-providers'
diff --git a/services/web/test/frontend/components/pdf-preview/pdf-synctex-controls.spec.tsx b/services/web/test/frontend/components/pdf-preview/pdf-synctex-controls.spec.tsx
index 210814af1a..c5dcf20cc6 100644
--- a/services/web/test/frontend/components/pdf-preview/pdf-synctex-controls.spec.tsx
+++ b/services/web/test/frontend/components/pdf-preview/pdf-synctex-controls.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import PdfSynctexControls from '../../../../frontend/js/features/pdf-preview/components/pdf-synctex-controls'
import { cloneDeep } from 'lodash'
import { useDetachCompileContext as useCompileContext } from '../../../../frontend/js/shared/context/detach-compile-context'
diff --git a/services/web/test/frontend/components/project-list/notifications/group-invitation.spec.tsx b/services/web/test/frontend/components/project-list/notifications/group-invitation.spec.tsx
index 5767302fed..93fbbad19b 100644
--- a/services/web/test/frontend/components/project-list/notifications/group-invitation.spec.tsx
+++ b/services/web/test/frontend/components/project-list/notifications/group-invitation.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import GroupInvitationNotification from '@/features/project-list/components/notifications/groups/group-invitation/group-invitation'
import { NotificationGroupInvitation } from '../../../../../types/project/dashboard/notification'
diff --git a/services/web/test/frontend/components/shared/accessible-modal.spec.tsx b/services/web/test/frontend/components/shared/accessible-modal.spec.tsx
index 38fb995275..ab8d24de3f 100644
--- a/services/web/test/frontend/components/shared/accessible-modal.spec.tsx
+++ b/services/web/test/frontend/components/shared/accessible-modal.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { Modal } from 'react-bootstrap'
import AccessibleModal from '../../../../frontend/js/shared/components/accessible-modal'
diff --git a/services/web/test/frontend/components/shared/beta-badge.spec.tsx b/services/web/test/frontend/components/shared/beta-badge.spec.tsx
index ad767bf8f3..8db49ad8a0 100644
--- a/services/web/test/frontend/components/shared/beta-badge.spec.tsx
+++ b/services/web/test/frontend/components/shared/beta-badge.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import BetaBadge from '../../../../frontend/js/shared/components/beta-badge'
describe('beta badge', function () {
diff --git a/services/web/test/frontend/components/shared/select.spec.tsx b/services/web/test/frontend/components/shared/select.spec.tsx
index afde06e525..9d95441aea 100644
--- a/services/web/test/frontend/components/shared/select.spec.tsx
+++ b/services/web/test/frontend/components/shared/select.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { useCallback, FormEvent } from 'react'
import { Button, Form, FormControl } from 'react-bootstrap'
import {
diff --git a/services/web/test/frontend/components/shared/split-menu.spec.tsx b/services/web/test/frontend/components/shared/split-menu.spec.tsx
index 44a72be1af..8279a6cd11 100644
--- a/services/web/test/frontend/components/shared/split-menu.spec.tsx
+++ b/services/web/test/frontend/components/shared/split-menu.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import SplitMenu from '../../../../frontend/js/shared/components/split-menu'
describe('SplitMenu', function () {
diff --git a/services/web/test/frontend/components/shared/split-test-badge.spec.tsx b/services/web/test/frontend/components/shared/split-test-badge.spec.tsx
index 125f45829e..8fa09fa44c 100644
--- a/services/web/test/frontend/components/shared/split-test-badge.spec.tsx
+++ b/services/web/test/frontend/components/shared/split-test-badge.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import SplitTestBadge from '../../../../frontend/js/shared/components/split-test-badge'
import { EditorProviders } from '../../helpers/editor-providers'
diff --git a/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx b/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx
index b0fa816819..5d494fbbd5 100644
--- a/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx
+++ b/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import StartFreeTrialButton from '../../../../frontend/js/shared/components/start-free-trial-button'
import getMeta from '@/utils/meta'
diff --git a/services/web/test/frontend/components/shared/tooltip.spec.tsx b/services/web/test/frontend/components/shared/tooltip.spec.tsx
index 764f05b891..cbfd5599ae 100644
--- a/services/web/test/frontend/components/shared/tooltip.spec.tsx
+++ b/services/web/test/frontend/components/shared/tooltip.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import Tooltip from '../../../../frontend/js/shared/components/tooltip'
describe('', function () {
diff --git a/services/web/test/frontend/components/token-access/token-access-page.spec.tsx b/services/web/test/frontend/components/token-access/token-access-page.spec.tsx
index 2db9bd9723..96def25aa8 100644
--- a/services/web/test/frontend/components/token-access/token-access-page.spec.tsx
+++ b/services/web/test/frontend/components/token-access/token-access-page.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import TokenAccessPage from '@/features/token-access/components/token-access-root'
import { location } from '@/shared/components/location'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-create-name-input.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-create-name-input.spec.tsx
index be721e86f4..bc20c16156 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-create-name-input.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-create-name-input.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import FileTreeCreateNameInput from '../../../../../../frontend/js/features/file-tree/components/file-tree-create/file-tree-create-name-input'
import FileTreeCreateNameProvider from '../../../../../../frontend/js/features/file-tree/contexts/file-tree-create-name'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-modal-create-file.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-modal-create-file.spec.tsx
index 6ef921598e..41e09ea1b6 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-modal-create-file.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-create/file-tree-modal-create-file.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import { useEffect } from 'react'
import FileTreeModalCreateFile from '../../../../../../frontend/js/features/file-tree/components/modals/file-tree-modal-create-file'
import { useFileTreeActionable } from '../../../../../../frontend/js/features/file-tree/contexts/file-tree-actionable'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-doc.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-doc.spec.tsx
index 38a8734826..534ebef667 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-doc.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-doc.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeDoc from '../../../../../frontend/js/features/file-tree/components/file-tree-doc'
import { EditorProviders } from '../../../helpers/editor-providers'
import { FileTreeProvider } from '../helpers/file-tree-provider'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-folder-list.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-folder-list.spec.tsx
index f2c70b1955..2cf8e31fc8 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-folder-list.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-folder-list.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeFolderList from '../../../../../frontend/js/features/file-tree/components/file-tree-folder-list'
import { EditorProviders } from '../../../helpers/editor-providers'
import { FileTreeProvider } from '../helpers/file-tree-provider'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-folder.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-folder.spec.tsx
index 24dc139de7..9f8bc3e222 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-folder.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-folder.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeFolder from '../../../../../frontend/js/features/file-tree/components/file-tree-folder'
import { EditorProviders } from '../../../helpers/editor-providers'
import { FileTreeProvider } from '../helpers/file-tree-provider'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-inner.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-inner.spec.tsx
index cff92684ae..85a6708b57 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-inner.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-inner.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import FileTreeitemInner from '../../../../../../frontend/js/features/file-tree/components/file-tree-item/file-tree-item-inner'
import FileTreeContextMenu from '../../../../../../frontend/js/features/file-tree/components/file-tree-context-menu'
import { EditorProviders } from '../../../../helpers/editor-providers'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-name.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-name.spec.tsx
index c699e07468..12efa12b05 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-name.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-item/file-tree-item-name.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import FileTreeItemName from '../../../../../../frontend/js/features/file-tree/components/file-tree-item/file-tree-item-name'
import { EditorProviders } from '../../../../helpers/editor-providers'
import { FileTreeProvider } from '../../helpers/file-tree-provider'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-root.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-root.spec.tsx
index 6021f60083..d997e3abe3 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-root.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-root.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeRoot from '../../../../../frontend/js/features/file-tree/components/file-tree-root'
import { EditorProviders } from '../../../helpers/editor-providers'
import { SocketIOMock } from '@/ide/connection/SocketIoShim'
diff --git a/services/web/test/frontend/features/file-tree/components/file-tree-toolbar.spec.tsx b/services/web/test/frontend/features/file-tree/components/file-tree-toolbar.spec.tsx
index 70dad331a2..0ed84baf2f 100644
--- a/services/web/test/frontend/features/file-tree/components/file-tree-toolbar.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/components/file-tree-toolbar.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeToolbar from '../../../../../frontend/js/features/file-tree/components/file-tree-toolbar'
import { EditorProviders } from '../../../helpers/editor-providers'
import { FileTreeProvider } from '../helpers/file-tree-provider'
diff --git a/services/web/test/frontend/features/file-tree/flows/context-menu.spec.tsx b/services/web/test/frontend/features/file-tree/flows/context-menu.spec.tsx
index 11eb1a97b6..34ede7e1bb 100644
--- a/services/web/test/frontend/features/file-tree/flows/context-menu.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/flows/context-menu.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeRoot from '../../../../../frontend/js/features/file-tree/components/file-tree-root'
import { EditorProviders } from '../../../helpers/editor-providers'
diff --git a/services/web/test/frontend/features/file-tree/flows/create-folder.spec.tsx b/services/web/test/frontend/features/file-tree/flows/create-folder.spec.tsx
index a7ccca400b..f86ebf1743 100644
--- a/services/web/test/frontend/features/file-tree/flows/create-folder.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/flows/create-folder.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeRoot from '../../../../../frontend/js/features/file-tree/components/file-tree-root'
import { EditorProviders } from '../../../helpers/editor-providers'
import { SocketIOMock } from '@/ide/connection/SocketIoShim'
diff --git a/services/web/test/frontend/features/file-tree/flows/delete-entity.spec.tsx b/services/web/test/frontend/features/file-tree/flows/delete-entity.spec.tsx
index d074476374..ebf26a5aee 100644
--- a/services/web/test/frontend/features/file-tree/flows/delete-entity.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/flows/delete-entity.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeRoot from '../../../../../frontend/js/features/file-tree/components/file-tree-root'
import { EditorProviders } from '../../../helpers/editor-providers'
import { SocketIOMock } from '@/ide/connection/SocketIoShim'
diff --git a/services/web/test/frontend/features/file-tree/flows/rename-entity.spec.tsx b/services/web/test/frontend/features/file-tree/flows/rename-entity.spec.tsx
index f63ae301c2..f69a669e4e 100644
--- a/services/web/test/frontend/features/file-tree/flows/rename-entity.spec.tsx
+++ b/services/web/test/frontend/features/file-tree/flows/rename-entity.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import FileTreeRoot from '../../../../../frontend/js/features/file-tree/components/file-tree-root'
import { EditorProviders } from '../../../helpers/editor-providers'
import { SocketIOMock } from '@/ide/connection/SocketIoShim'
diff --git a/services/web/test/frontend/features/group-management/components/group-managers.spec.tsx b/services/web/test/frontend/features/group-management/components/group-managers.spec.tsx
index 99d06c05d1..464e6878c7 100644
--- a/services/web/test/frontend/features/group-management/components/group-managers.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/group-managers.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import GroupManagers from '@/features/group-management/components/group-managers'
const JOHN_DOE = {
diff --git a/services/web/test/frontend/features/group-management/components/group-members.spec.tsx b/services/web/test/frontend/features/group-management/components/group-members.spec.tsx
index a55d8362f3..4bc7d2ab9d 100644
--- a/services/web/test/frontend/features/group-management/components/group-members.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/group-members.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import GroupMembers from '@/features/group-management/components/group-members'
import { GroupMembersProvider } from '@/features/group-management/context/group-members-context'
import { User } from '../../../../../types/group-management/user'
diff --git a/services/web/test/frontend/features/group-management/components/institution-managers.spec.tsx b/services/web/test/frontend/features/group-management/components/institution-managers.spec.tsx
index 89d46e8db0..56eeb85e07 100644
--- a/services/web/test/frontend/features/group-management/components/institution-managers.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/institution-managers.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import InstitutionManagers from '@/features/group-management/components/institution-managers'
const JOHN_DOE = {
diff --git a/services/web/test/frontend/features/group-management/components/managed-group-members.spec.tsx b/services/web/test/frontend/features/group-management/components/managed-group-members.spec.tsx
index e648c714ba..f5f867d155 100644
--- a/services/web/test/frontend/features/group-management/components/managed-group-members.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/managed-group-members.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import GroupMembers from '@/features/group-management/components/group-members'
import { GroupMembersProvider } from '@/features/group-management/context/group-members-context'
import { User } from '../../../../../types/group-management/user'
diff --git a/services/web/test/frontend/features/group-management/components/members-table/dropdown-button.spec.tsx b/services/web/test/frontend/features/group-management/components/members-table/dropdown-button.spec.tsx
index 2e37fca39b..9963777bcb 100644
--- a/services/web/test/frontend/features/group-management/components/members-table/dropdown-button.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/members-table/dropdown-button.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import type { PropsWithChildren } from 'react'
import sinon from 'sinon'
import DropdownButton from '@/features/group-management/components/members-table/dropdown-button'
diff --git a/services/web/test/frontend/features/group-management/components/members-table/managed-user-status.spec.tsx b/services/web/test/frontend/features/group-management/components/members-table/managed-user-status.spec.tsx
index 49cadfe0c9..4e350ff133 100644
--- a/services/web/test/frontend/features/group-management/components/members-table/managed-user-status.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/members-table/managed-user-status.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import ManagedUserStatus from '@/features/group-management/components/members-table/managed-user-status'
import { User } from '../../../../../../types/group-management/user'
diff --git a/services/web/test/frontend/features/group-management/components/members-table/member-row.spec.tsx b/services/web/test/frontend/features/group-management/components/members-table/member-row.spec.tsx
index 8a3c85855e..ef25588c13 100644
--- a/services/web/test/frontend/features/group-management/components/members-table/member-row.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/members-table/member-row.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import sinon from 'sinon'
import MemberRow from '@/features/group-management/components/members-table/member-row'
import { GroupMembersProvider } from '@/features/group-management/context/group-members-context'
diff --git a/services/web/test/frontend/features/group-management/components/members-table/members-list.spec.tsx b/services/web/test/frontend/features/group-management/components/members-table/members-list.spec.tsx
index abcc50ab67..06f4e64dd1 100644
--- a/services/web/test/frontend/features/group-management/components/members-table/members-list.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/members-table/members-list.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import MembersList from '@/features/group-management/components/members-table/members-list'
import { GroupMembersProvider } from '@/features/group-management/context/group-members-context'
import { User } from '../../../../../../types/group-management/user'
diff --git a/services/web/test/frontend/features/group-management/components/members-table/offboard-managed-user-modal.spec.tsx b/services/web/test/frontend/features/group-management/components/members-table/offboard-managed-user-modal.spec.tsx
index 2db12d822c..d940d7bf8c 100644
--- a/services/web/test/frontend/features/group-management/components/members-table/offboard-managed-user-modal.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/members-table/offboard-managed-user-modal.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import OffboardManagedUserModal from '@/features/group-management/components/members-table/offboard-managed-user-modal'
import sinon from 'sinon'
diff --git a/services/web/test/frontend/features/group-management/components/publisher-managers.spec.tsx b/services/web/test/frontend/features/group-management/components/publisher-managers.spec.tsx
index 13b71b09e8..deb23b0bef 100644
--- a/services/web/test/frontend/features/group-management/components/publisher-managers.spec.tsx
+++ b/services/web/test/frontend/features/group-management/components/publisher-managers.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import PublisherManagers from '@/features/group-management/components/publisher-managers'
const JOHN_DOE = {
diff --git a/services/web/test/frontend/features/history/components/change-list.spec.tsx b/services/web/test/frontend/features/history/components/change-list.spec.tsx
index 3b9d2efbca..9087c1a616 100644
--- a/services/web/test/frontend/features/history/components/change-list.spec.tsx
+++ b/services/web/test/frontend/features/history/components/change-list.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { useState } from 'react'
import ToggleSwitch from '../../../../../frontend/js/features/history/components/change-list/toggle-switch'
import ChangeList from '../../../../../frontend/js/features/history/components/change-list/change-list'
diff --git a/services/web/test/frontend/features/history/components/document-diff-viewer.spec.tsx b/services/web/test/frontend/features/history/components/document-diff-viewer.spec.tsx
index 940626b39c..669327b033 100644
--- a/services/web/test/frontend/features/history/components/document-diff-viewer.spec.tsx
+++ b/services/web/test/frontend/features/history/components/document-diff-viewer.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import DocumentDiffViewer from '../../../../../frontend/js/features/history/components/diff-view/document-diff-viewer'
import { Highlight } from '../../../../../frontend/js/features/history/services/types/doc'
import { FC } from 'react'
diff --git a/services/web/test/frontend/features/history/components/toolbar.spec.tsx b/services/web/test/frontend/features/history/components/toolbar.spec.tsx
index 18b8b929e8..f935c1aa3e 100644
--- a/services/web/test/frontend/features/history/components/toolbar.spec.tsx
+++ b/services/web/test/frontend/features/history/components/toolbar.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import Toolbar from '../../../../../frontend/js/features/history/components/diff-view/toolbar/toolbar'
import { HistoryProvider } from '../../../../../frontend/js/features/history/context/history-context'
import { HistoryContextValue } from '../../../../../frontend/js/features/history/context/types/history-context-value'
diff --git a/services/web/test/frontend/features/layout/components/switch-to-editor-button.spec.tsx b/services/web/test/frontend/features/layout/components/switch-to-editor-button.spec.tsx
index 3cb8ea2fee..9dc3b0f872 100644
--- a/services/web/test/frontend/features/layout/components/switch-to-editor-button.spec.tsx
+++ b/services/web/test/frontend/features/layout/components/switch-to-editor-button.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import SwitchToEditorButton from '@/features/pdf-preview/components/switch-to-editor-button'
diff --git a/services/web/test/frontend/features/layout/components/switch-to-pdf-button.spec.tsx b/services/web/test/frontend/features/layout/components/switch-to-pdf-button.spec.tsx
index 43fc1cabfc..e4d601e4d8 100644
--- a/services/web/test/frontend/features/layout/components/switch-to-pdf-button.spec.tsx
+++ b/services/web/test/frontend/features/layout/components/switch-to-pdf-button.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import SwitchToPDFButton from '@/features/source-editor/components/switch-to-pdf-button'
import { EditorProviders } from '../../../helpers/editor-providers'
diff --git a/services/web/test/frontend/features/outline/components/outline-item.spec.tsx b/services/web/test/frontend/features/outline/components/outline-item.spec.tsx
index b30ba59e8f..990f11f708 100644
--- a/services/web/test/frontend/features/outline/components/outline-item.spec.tsx
+++ b/services/web/test/frontend/features/outline/components/outline-item.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import OutlineItem from '../../../../../frontend/js/features/outline/components/outline-item'
describe('', function () {
diff --git a/services/web/test/frontend/features/outline/components/outline-list.spec.tsx b/services/web/test/frontend/features/outline/components/outline-list.spec.tsx
index 88912a944a..67be419cda 100644
--- a/services/web/test/frontend/features/outline/components/outline-list.spec.tsx
+++ b/services/web/test/frontend/features/outline/components/outline-list.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import OutlineList from '../../../../../frontend/js/features/outline/components/outline-list'
describe('', function () {
diff --git a/services/web/test/frontend/features/outline/components/outline-pane.spec.tsx b/services/web/test/frontend/features/outline/components/outline-pane.spec.tsx
index 06f536518e..b981c44272 100644
--- a/services/web/test/frontend/features/outline/components/outline-pane.spec.tsx
+++ b/services/web/test/frontend/features/outline/components/outline-pane.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import OutlinePane from '@/features/outline/components/outline-pane'
import { EditorProviders, PROJECT_ID } from '../../../helpers/editor-providers'
import { useState } from 'react'
diff --git a/services/web/test/frontend/features/outline/components/outline-root.spec.tsx b/services/web/test/frontend/features/outline/components/outline-root.spec.tsx
index 2bf11511cc..14583e00e4 100644
--- a/services/web/test/frontend/features/outline/components/outline-root.spec.tsx
+++ b/services/web/test/frontend/features/outline/components/outline-root.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import OutlineRoot from '../../../../../frontend/js/features/outline/components/outline-root'
describe('', function () {
diff --git a/services/web/test/frontend/features/project-list/components/new-project-button/upload-project-modal.spec.tsx b/services/web/test/frontend/features/project-list/components/new-project-button/upload-project-modal.spec.tsx
index 9b44a374ea..e5a66a3bd1 100644
--- a/services/web/test/frontend/features/project-list/components/new-project-button/upload-project-modal.spec.tsx
+++ b/services/web/test/frontend/features/project-list/components/new-project-button/upload-project-modal.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../../helpers/bootstrap-3'
import UploadProjectModal from '../../../../../../frontend/js/features/project-list/components/new-project-button/upload-project-modal'
describe('', function () {
diff --git a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
index 59e6d45675..ccd6f3aa1a 100644
--- a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
+++ b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import CodeMirrorEditor from '../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { EditorProviders } from '../../helpers/editor-providers'
import { mockScope } from '../source-editor/helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx
index ab05c9958e..ce518a9b50 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { Folder } from '../../../../../types/folder'
import { docId, mockDocContent } from '../helpers/mock-doc'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx
index 39712d0b85..7b8f4482c5 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { mockScope } from '../helpers/mock-scope'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodeMirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx
index ac02f8f8c1..67c59db308 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-figure-modal.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-figure-modal.spec.tsx
index 253c76f042..12827414a3 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-figure-modal.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-figure-modal.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { EditorProviders } from '../../../helpers/editor-providers'
import { mockScope, rootFolderId } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx
index 40e37d965e..08413216a2 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx
index bd369b0e1b..aae9b594c3 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { mockScope } from '../helpers/mock-scope'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodeMirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx
index 906120177e..effca6af26 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { mockScope } from '../helpers/mock-scope'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodeMirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-table-generator.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-table-generator.spec.tsx
index ec7b1a0f28..2740c32187 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-table-generator.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-table-generator.spec.tsx
@@ -1,5 +1,6 @@
// Needed since eslint gets confused by mocha-each
/* eslint-disable mocha/prefer-arrow-callback */
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-command-tooltip.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-command-tooltip.spec.tsx
index cbe5d38a6b..7d2ac0ddff 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-command-tooltip.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-command-tooltip.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-floats.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-floats.spec.tsx
index 87f66cb07c..a93b8568de 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-floats.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-floats.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx
index 7d891b8d10..f066a936ed 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx
index b0debaf8c9..a6b5ff54fe 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx
index c57e260498..89165870e1 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { mockScope } from '../helpers/mock-scope'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx
index 241afea606..9191187f7f 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-tooltips.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-tooltips.spec.tsx
index 470c2253b7..b7c27525db 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-tooltips.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-tooltips.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import { mockScope } from '../helpers/mock-scope'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx
index dacd99b248..047b9f21b1 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx
@@ -1,5 +1,6 @@
// Needed since eslint gets confused by mocha-each
/* eslint-disable mocha/prefer-arrow-callback */
+import '../../../helpers/bootstrap-3'
import { FC } from 'react'
import { EditorProviders } from '../../../helpers/editor-providers'
import CodemirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx
index 707444d87d..988ad2a8b0 100644
--- a/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx
+++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx
@@ -1,3 +1,4 @@
+import '../../../helpers/bootstrap-3'
import CodeMirrorEditor from '../../../../../frontend/js/features/source-editor/components/codemirror-editor'
import { EditorProviders } from '../../../helpers/editor-providers'
import { mockScope } from '../helpers/mock-scope'
diff --git a/services/web/test/frontend/helpers/bootstrap-3.ts b/services/web/test/frontend/helpers/bootstrap-3.ts
new file mode 100644
index 0000000000..c651ed9900
--- /dev/null
+++ b/services/web/test/frontend/helpers/bootstrap-3.ts
@@ -0,0 +1,5 @@
+import '../../../frontend/stylesheets/main-style.less'
+
+beforeEach(function () {
+ window.metaAttributesCache.set('ol-bootstrapVersion', 3)
+})
diff --git a/services/web/test/frontend/helpers/bootstrap-5.ts b/services/web/test/frontend/helpers/bootstrap-5.ts
new file mode 100644
index 0000000000..a5a0c0a97e
--- /dev/null
+++ b/services/web/test/frontend/helpers/bootstrap-5.ts
@@ -0,0 +1,5 @@
+import '../../../frontend/stylesheets/bootstrap-5/main-style.scss'
+
+beforeEach(function () {
+ window.metaAttributesCache.set('ol-bootstrapVersion', 5)
+})
diff --git a/services/web/test/frontend/infrastructure/i18n.spec.tsx b/services/web/test/frontend/infrastructure/i18n.spec.tsx
index f8760b1ad5..56948884dd 100644
--- a/services/web/test/frontend/infrastructure/i18n.spec.tsx
+++ b/services/web/test/frontend/infrastructure/i18n.spec.tsx
@@ -1,3 +1,4 @@
+import '../helpers/bootstrap-3'
import { Trans, useTranslation } from 'react-i18next'
describe('i18n', function () {
diff --git a/services/web/test/frontend/shared/hooks/use-detach-action.spec.tsx b/services/web/test/frontend/shared/hooks/use-detach-action.spec.tsx
index a7c024fda1..08fc0320b0 100644
--- a/services/web/test/frontend/shared/hooks/use-detach-action.spec.tsx
+++ b/services/web/test/frontend/shared/hooks/use-detach-action.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { FC } from 'react'
import useDetachAction from '../../../../frontend/js/shared/hooks/use-detach-action'
import { detachChannel, testDetachChannel } from '../../helpers/detach-channel'
diff --git a/services/web/test/frontend/shared/hooks/use-detach-layout.spec.tsx b/services/web/test/frontend/shared/hooks/use-detach-layout.spec.tsx
index 3d9b0085a2..58a3c2ed55 100644
--- a/services/web/test/frontend/shared/hooks/use-detach-layout.spec.tsx
+++ b/services/web/test/frontend/shared/hooks/use-detach-layout.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import useDetachLayout from '../../../../frontend/js/shared/hooks/use-detach-layout'
import { detachChannel, testDetachChannel } from '../../helpers/detach-channel'
import { EditorProviders } from '../../helpers/editor-providers'
diff --git a/services/web/test/frontend/shared/hooks/use-detach-state.spec.tsx b/services/web/test/frontend/shared/hooks/use-detach-state.spec.tsx
index cd06f86165..4a11d02611 100644
--- a/services/web/test/frontend/shared/hooks/use-detach-state.spec.tsx
+++ b/services/web/test/frontend/shared/hooks/use-detach-state.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { FC } from 'react'
import useDetachState from '../../../../frontend/js/shared/hooks/use-detach-state'
import { EditorProviders } from '../../helpers/editor-providers'
diff --git a/services/web/test/frontend/shared/hooks/use-recaptcha.spec.tsx b/services/web/test/frontend/shared/hooks/use-recaptcha.spec.tsx
index acc3f09465..eca9d8d8bb 100644
--- a/services/web/test/frontend/shared/hooks/use-recaptcha.spec.tsx
+++ b/services/web/test/frontend/shared/hooks/use-recaptcha.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import { useRecaptcha } from '@/shared/hooks/use-recaptcha'
import * as ReactGoogleRecaptcha from 'react-google-recaptcha'
diff --git a/services/web/test/frontend/shared/hooks/use-resize.spec.tsx b/services/web/test/frontend/shared/hooks/use-resize.spec.tsx
index 4116eb862a..ae3d36f8ab 100644
--- a/services/web/test/frontend/shared/hooks/use-resize.spec.tsx
+++ b/services/web/test/frontend/shared/hooks/use-resize.spec.tsx
@@ -1,3 +1,4 @@
+import '../../helpers/bootstrap-3'
import {
usePersistedResize,
useResize,