diff --git a/__tests__/src/components/AccessTokenSender.test.js b/__tests__/src/components/AccessTokenSender.test.jsx similarity index 100% rename from __tests__/src/components/AccessTokenSender.test.js rename to __tests__/src/components/AccessTokenSender.test.jsx diff --git a/__tests__/src/components/AnnotationSettings.test.js b/__tests__/src/components/AnnotationSettings.test.jsx similarity index 100% rename from __tests__/src/components/AnnotationSettings.test.js rename to __tests__/src/components/AnnotationSettings.test.jsx diff --git a/__tests__/src/components/AnnotationsOverlay.test.js b/__tests__/src/components/AnnotationsOverlay.test.jsx similarity index 100% rename from __tests__/src/components/AnnotationsOverlay.test.js rename to __tests__/src/components/AnnotationsOverlay.test.jsx diff --git a/__tests__/src/components/App.test.js b/__tests__/src/components/App.test.jsx similarity index 100% rename from __tests__/src/components/App.test.js rename to __tests__/src/components/App.test.jsx diff --git a/__tests__/src/components/AppProviders.test.js b/__tests__/src/components/AppProviders.test.jsx similarity index 100% rename from __tests__/src/components/AppProviders.test.js rename to __tests__/src/components/AppProviders.test.jsx diff --git a/__tests__/src/components/AttributionPanel.test.js b/__tests__/src/components/AttributionPanel.test.jsx similarity index 100% rename from __tests__/src/components/AttributionPanel.test.js rename to __tests__/src/components/AttributionPanel.test.jsx diff --git a/__tests__/src/components/AudioViewer.test.js b/__tests__/src/components/AudioViewer.test.jsx similarity index 100% rename from __tests__/src/components/AudioViewer.test.js rename to __tests__/src/components/AudioViewer.test.jsx diff --git a/__tests__/src/components/BackgroundPluginArea.test.js b/__tests__/src/components/BackgroundPluginArea.test.jsx similarity index 100% rename from __tests__/src/components/BackgroundPluginArea.test.js rename to __tests__/src/components/BackgroundPluginArea.test.jsx diff --git a/__tests__/src/components/Branding.test.js b/__tests__/src/components/Branding.test.jsx similarity index 100% rename from __tests__/src/components/Branding.test.js rename to __tests__/src/components/Branding.test.jsx diff --git a/__tests__/src/components/CanvasAnnotations.test.js b/__tests__/src/components/CanvasAnnotations.test.jsx similarity index 100% rename from __tests__/src/components/CanvasAnnotations.test.js rename to __tests__/src/components/CanvasAnnotations.test.jsx diff --git a/__tests__/src/components/CanvasInfo.test.js b/__tests__/src/components/CanvasInfo.test.jsx similarity index 100% rename from __tests__/src/components/CanvasInfo.test.js rename to __tests__/src/components/CanvasInfo.test.jsx diff --git a/__tests__/src/components/CanvasLayers.test.js b/__tests__/src/components/CanvasLayers.test.jsx similarity index 100% rename from __tests__/src/components/CanvasLayers.test.js rename to __tests__/src/components/CanvasLayers.test.jsx diff --git a/__tests__/src/components/ChangeThemeDialog.test.js b/__tests__/src/components/ChangeThemeDialog.test.jsx similarity index 100% rename from __tests__/src/components/ChangeThemeDialog.test.js rename to __tests__/src/components/ChangeThemeDialog.test.jsx diff --git a/__tests__/src/components/CollapsibleSection.test.js b/__tests__/src/components/CollapsibleSection.test.jsx similarity index 100% rename from __tests__/src/components/CollapsibleSection.test.js rename to __tests__/src/components/CollapsibleSection.test.jsx diff --git a/__tests__/src/components/CollectionDialog.test.js b/__tests__/src/components/CollectionDialog.test.jsx similarity index 100% rename from __tests__/src/components/CollectionDialog.test.js rename to __tests__/src/components/CollectionDialog.test.jsx diff --git a/__tests__/src/components/CollectionInfo.test.js b/__tests__/src/components/CollectionInfo.test.jsx similarity index 100% rename from __tests__/src/components/CollectionInfo.test.js rename to __tests__/src/components/CollectionInfo.test.jsx diff --git a/__tests__/src/components/CompanionArea.test.js b/__tests__/src/components/CompanionArea.test.jsx similarity index 100% rename from __tests__/src/components/CompanionArea.test.js rename to __tests__/src/components/CompanionArea.test.jsx diff --git a/__tests__/src/components/CompanionWindow.test.js b/__tests__/src/components/CompanionWindow.test.jsx similarity index 100% rename from __tests__/src/components/CompanionWindow.test.js rename to __tests__/src/components/CompanionWindow.test.jsx diff --git a/__tests__/src/components/CompanionWindowFactory.test.js b/__tests__/src/components/CompanionWindowFactory.test.jsx similarity index 100% rename from __tests__/src/components/CompanionWindowFactory.test.js rename to __tests__/src/components/CompanionWindowFactory.test.jsx diff --git a/__tests__/src/components/ErrorContent.test.js b/__tests__/src/components/ErrorContent.test.jsx similarity index 100% rename from __tests__/src/components/ErrorContent.test.js rename to __tests__/src/components/ErrorContent.test.jsx diff --git a/__tests__/src/components/ErrorDialog.test.js b/__tests__/src/components/ErrorDialog.test.jsx similarity index 100% rename from __tests__/src/components/ErrorDialog.test.js rename to __tests__/src/components/ErrorDialog.test.jsx diff --git a/__tests__/src/components/FullScreenButton.test.js b/__tests__/src/components/FullScreenButton.test.jsx similarity index 100% rename from __tests__/src/components/FullScreenButton.test.js rename to __tests__/src/components/FullScreenButton.test.jsx diff --git a/__tests__/src/components/GalleryView.test.js b/__tests__/src/components/GalleryView.test.jsx similarity index 100% rename from __tests__/src/components/GalleryView.test.js rename to __tests__/src/components/GalleryView.test.jsx diff --git a/__tests__/src/components/GalleryViewThumbnail.test.js b/__tests__/src/components/GalleryViewThumbnail.test.jsx similarity index 100% rename from __tests__/src/components/GalleryViewThumbnail.test.js rename to __tests__/src/components/GalleryViewThumbnail.test.jsx diff --git a/__tests__/src/components/IIIFAuthentication.test.js b/__tests__/src/components/IIIFAuthentication.test.jsx similarity index 100% rename from __tests__/src/components/IIIFAuthentication.test.js rename to __tests__/src/components/IIIFAuthentication.test.jsx diff --git a/__tests__/src/components/IIIFDropTarget.test.js b/__tests__/src/components/IIIFDropTarget.test.jsx similarity index 100% rename from __tests__/src/components/IIIFDropTarget.test.js rename to __tests__/src/components/IIIFDropTarget.test.jsx diff --git a/__tests__/src/components/IIIFIFrameCommunication.test.js b/__tests__/src/components/IIIFIFrameCommunication.test.jsx similarity index 100% rename from __tests__/src/components/IIIFIFrameCommunication.test.js rename to __tests__/src/components/IIIFIFrameCommunication.test.jsx diff --git a/__tests__/src/components/IIIFThumbnail.test.js b/__tests__/src/components/IIIFThumbnail.test.jsx similarity index 100% rename from __tests__/src/components/IIIFThumbnail.test.js rename to __tests__/src/components/IIIFThumbnail.test.jsx diff --git a/__tests__/src/components/LabelValueMetadata.test.js b/__tests__/src/components/LabelValueMetadata.test.jsx similarity index 100% rename from __tests__/src/components/LabelValueMetadata.test.js rename to __tests__/src/components/LabelValueMetadata.test.jsx diff --git a/__tests__/src/components/LanguageSettings.test.js b/__tests__/src/components/LanguageSettings.test.jsx similarity index 100% rename from __tests__/src/components/LanguageSettings.test.js rename to __tests__/src/components/LanguageSettings.test.jsx diff --git a/__tests__/src/components/LayersPanel.test.js b/__tests__/src/components/LayersPanel.test.jsx similarity index 100% rename from __tests__/src/components/LayersPanel.test.js rename to __tests__/src/components/LayersPanel.test.jsx diff --git a/__tests__/src/components/LocalePicker.test.js b/__tests__/src/components/LocalePicker.test.jsx similarity index 100% rename from __tests__/src/components/LocalePicker.test.js rename to __tests__/src/components/LocalePicker.test.jsx diff --git a/__tests__/src/components/ManifestForm.test.js b/__tests__/src/components/ManifestForm.test.jsx similarity index 100% rename from __tests__/src/components/ManifestForm.test.js rename to __tests__/src/components/ManifestForm.test.jsx diff --git a/__tests__/src/components/ManifestInfo.test.js b/__tests__/src/components/ManifestInfo.test.jsx similarity index 100% rename from __tests__/src/components/ManifestInfo.test.js rename to __tests__/src/components/ManifestInfo.test.jsx diff --git a/__tests__/src/components/ManifestListItem.test.js b/__tests__/src/components/ManifestListItem.test.jsx similarity index 100% rename from __tests__/src/components/ManifestListItem.test.js rename to __tests__/src/components/ManifestListItem.test.jsx diff --git a/__tests__/src/components/ManifestListItemError.test.js b/__tests__/src/components/ManifestListItemError.test.jsx similarity index 100% rename from __tests__/src/components/ManifestListItemError.test.js rename to __tests__/src/components/ManifestListItemError.test.jsx diff --git a/__tests__/src/components/ManifestRelatedLinks.test.js b/__tests__/src/components/ManifestRelatedLinks.test.jsx similarity index 100% rename from __tests__/src/components/ManifestRelatedLinks.test.js rename to __tests__/src/components/ManifestRelatedLinks.test.jsx diff --git a/__tests__/src/components/MiradorMenuButton.test.js b/__tests__/src/components/MiradorMenuButton.test.jsx similarity index 100% rename from __tests__/src/components/MiradorMenuButton.test.js rename to __tests__/src/components/MiradorMenuButton.test.jsx diff --git a/__tests__/src/components/MosaicRenderPreview.test.js b/__tests__/src/components/MosaicRenderPreview.test.jsx similarity index 100% rename from __tests__/src/components/MosaicRenderPreview.test.js rename to __tests__/src/components/MosaicRenderPreview.test.jsx diff --git a/__tests__/src/components/NestedMenu.test.js b/__tests__/src/components/NestedMenu.test.jsx similarity index 100% rename from __tests__/src/components/NestedMenu.test.js rename to __tests__/src/components/NestedMenu.test.jsx diff --git a/__tests__/src/components/NewBrowserWindow.test.js b/__tests__/src/components/NewBrowserWindow.test.jsx similarity index 100% rename from __tests__/src/components/NewBrowserWindow.test.js rename to __tests__/src/components/NewBrowserWindow.test.jsx diff --git a/__tests__/src/components/OpenSeadragonComponent.test.js b/__tests__/src/components/OpenSeadragonComponent.test.jsx similarity index 100% rename from __tests__/src/components/OpenSeadragonComponent.test.js rename to __tests__/src/components/OpenSeadragonComponent.test.jsx diff --git a/__tests__/src/components/OpenSeadragonTileSource.test.js b/__tests__/src/components/OpenSeadragonTileSource.test.jsx similarity index 100% rename from __tests__/src/components/OpenSeadragonTileSource.test.js rename to __tests__/src/components/OpenSeadragonTileSource.test.jsx diff --git a/__tests__/src/components/OpenSeadragonViewer.test.js b/__tests__/src/components/OpenSeadragonViewer.test.jsx similarity index 100% rename from __tests__/src/components/OpenSeadragonViewer.test.js rename to __tests__/src/components/OpenSeadragonViewer.test.jsx diff --git a/__tests__/src/components/PluginHook.test.js b/__tests__/src/components/PluginHook.test.jsx similarity index 100% rename from __tests__/src/components/PluginHook.test.js rename to __tests__/src/components/PluginHook.test.jsx diff --git a/__tests__/src/components/PrimaryWindow.test.js b/__tests__/src/components/PrimaryWindow.test.jsx similarity index 100% rename from __tests__/src/components/PrimaryWindow.test.js rename to __tests__/src/components/PrimaryWindow.test.jsx diff --git a/__tests__/src/components/SanitizedHtml.test.js b/__tests__/src/components/SanitizedHtml.test.jsx similarity index 100% rename from __tests__/src/components/SanitizedHtml.test.js rename to __tests__/src/components/SanitizedHtml.test.jsx diff --git a/__tests__/src/components/ScrollIndicatedDialogContent.test.js b/__tests__/src/components/ScrollIndicatedDialogContent.test.jsx similarity index 100% rename from __tests__/src/components/ScrollIndicatedDialogContent.test.js rename to __tests__/src/components/ScrollIndicatedDialogContent.test.jsx diff --git a/__tests__/src/components/ScrollTo.test.js b/__tests__/src/components/ScrollTo.test.jsx similarity index 100% rename from __tests__/src/components/ScrollTo.test.js rename to __tests__/src/components/ScrollTo.test.jsx diff --git a/__tests__/src/components/SearchHit.test.js b/__tests__/src/components/SearchHit.test.jsx similarity index 100% rename from __tests__/src/components/SearchHit.test.js rename to __tests__/src/components/SearchHit.test.jsx diff --git a/__tests__/src/components/SearchPanel.test.js b/__tests__/src/components/SearchPanel.test.jsx similarity index 100% rename from __tests__/src/components/SearchPanel.test.js rename to __tests__/src/components/SearchPanel.test.jsx diff --git a/__tests__/src/components/SearchPanelControls.test.js b/__tests__/src/components/SearchPanelControls.test.jsx similarity index 100% rename from __tests__/src/components/SearchPanelControls.test.js rename to __tests__/src/components/SearchPanelControls.test.jsx diff --git a/__tests__/src/components/SearchPanelNavigation.test.js b/__tests__/src/components/SearchPanelNavigation.test.jsx similarity index 100% rename from __tests__/src/components/SearchPanelNavigation.test.js rename to __tests__/src/components/SearchPanelNavigation.test.jsx diff --git a/__tests__/src/components/SearchResults.test.js b/__tests__/src/components/SearchResults.test.jsx similarity index 100% rename from __tests__/src/components/SearchResults.test.js rename to __tests__/src/components/SearchResults.test.jsx diff --git a/__tests__/src/components/SidebarIndexItem.test.js b/__tests__/src/components/SidebarIndexItem.test.jsx similarity index 100% rename from __tests__/src/components/SidebarIndexItem.test.js rename to __tests__/src/components/SidebarIndexItem.test.jsx diff --git a/__tests__/src/components/SidebarIndexList.test.js b/__tests__/src/components/SidebarIndexList.test.jsx similarity index 100% rename from __tests__/src/components/SidebarIndexList.test.js rename to __tests__/src/components/SidebarIndexList.test.jsx diff --git a/__tests__/src/components/SidebarIndexTableOfContents.test.js b/__tests__/src/components/SidebarIndexTableOfContents.test.jsx similarity index 100% rename from __tests__/src/components/SidebarIndexTableOfContents.test.js rename to __tests__/src/components/SidebarIndexTableOfContents.test.jsx diff --git a/__tests__/src/components/SidebarIndexThumbnail.test.js b/__tests__/src/components/SidebarIndexThumbnail.test.jsx similarity index 100% rename from __tests__/src/components/SidebarIndexThumbnail.test.js rename to __tests__/src/components/SidebarIndexThumbnail.test.jsx diff --git a/__tests__/src/components/TextViewer.test.js b/__tests__/src/components/TextViewer.test.jsx similarity index 100% rename from __tests__/src/components/TextViewer.test.js rename to __tests__/src/components/TextViewer.test.jsx diff --git a/__tests__/src/components/ThumbnailCanvasGrouping.test.js b/__tests__/src/components/ThumbnailCanvasGrouping.test.jsx similarity index 100% rename from __tests__/src/components/ThumbnailCanvasGrouping.test.js rename to __tests__/src/components/ThumbnailCanvasGrouping.test.jsx diff --git a/__tests__/src/components/ThumbnailNavigation.test.js b/__tests__/src/components/ThumbnailNavigation.test.jsx similarity index 100% rename from __tests__/src/components/ThumbnailNavigation.test.js rename to __tests__/src/components/ThumbnailNavigation.test.jsx diff --git a/__tests__/src/components/VideoViewer.test.js b/__tests__/src/components/VideoViewer.test.jsx similarity index 100% rename from __tests__/src/components/VideoViewer.test.js rename to __tests__/src/components/VideoViewer.test.jsx diff --git a/__tests__/src/components/ViewerInfo.test.js b/__tests__/src/components/ViewerInfo.test.jsx similarity index 100% rename from __tests__/src/components/ViewerInfo.test.js rename to __tests__/src/components/ViewerInfo.test.jsx diff --git a/__tests__/src/components/ViewerNavigation.test.js b/__tests__/src/components/ViewerNavigation.test.jsx similarity index 100% rename from __tests__/src/components/ViewerNavigation.test.js rename to __tests__/src/components/ViewerNavigation.test.jsx diff --git a/__tests__/src/components/Window.test.js b/__tests__/src/components/Window.test.jsx similarity index 100% rename from __tests__/src/components/Window.test.js rename to __tests__/src/components/Window.test.jsx diff --git a/__tests__/src/components/WindowAuthenticationBar.test.js b/__tests__/src/components/WindowAuthenticationBar.test.jsx similarity index 100% rename from __tests__/src/components/WindowAuthenticationBar.test.js rename to __tests__/src/components/WindowAuthenticationBar.test.jsx diff --git a/__tests__/src/components/WindowCanvasNavigationControls.test.js b/__tests__/src/components/WindowCanvasNavigationControls.test.jsx similarity index 100% rename from __tests__/src/components/WindowCanvasNavigationControls.test.js rename to __tests__/src/components/WindowCanvasNavigationControls.test.jsx diff --git a/__tests__/src/components/WindowList.test.js b/__tests__/src/components/WindowList.test.jsx similarity index 100% rename from __tests__/src/components/WindowList.test.js rename to __tests__/src/components/WindowList.test.jsx diff --git a/__tests__/src/components/WindowListButton.test.js b/__tests__/src/components/WindowListButton.test.jsx similarity index 100% rename from __tests__/src/components/WindowListButton.test.js rename to __tests__/src/components/WindowListButton.test.jsx diff --git a/__tests__/src/components/WindowSideBar.test.js b/__tests__/src/components/WindowSideBar.test.jsx similarity index 100% rename from __tests__/src/components/WindowSideBar.test.js rename to __tests__/src/components/WindowSideBar.test.jsx diff --git a/__tests__/src/components/WindowSideBarAnnotationsPanel.test.js b/__tests__/src/components/WindowSideBarAnnotationsPanel.test.jsx similarity index 100% rename from __tests__/src/components/WindowSideBarAnnotationsPanel.test.js rename to __tests__/src/components/WindowSideBarAnnotationsPanel.test.jsx diff --git a/__tests__/src/components/WindowSideBarButtons.test.js b/__tests__/src/components/WindowSideBarButtons.test.jsx similarity index 100% rename from __tests__/src/components/WindowSideBarButtons.test.js rename to __tests__/src/components/WindowSideBarButtons.test.jsx diff --git a/__tests__/src/components/WindowSideBarCanvasPanel.test.js b/__tests__/src/components/WindowSideBarCanvasPanel.test.jsx similarity index 100% rename from __tests__/src/components/WindowSideBarCanvasPanel.test.js rename to __tests__/src/components/WindowSideBarCanvasPanel.test.jsx diff --git a/__tests__/src/components/WindowSideBarInfoPanel.test.js b/__tests__/src/components/WindowSideBarInfoPanel.test.jsx similarity index 100% rename from __tests__/src/components/WindowSideBarInfoPanel.test.js rename to __tests__/src/components/WindowSideBarInfoPanel.test.jsx diff --git a/__tests__/src/components/WindowThumbnailSettings.test.js b/__tests__/src/components/WindowThumbnailSettings.test.jsx similarity index 100% rename from __tests__/src/components/WindowThumbnailSettings.test.js rename to __tests__/src/components/WindowThumbnailSettings.test.jsx diff --git a/__tests__/src/components/WindowTopBar.test.js b/__tests__/src/components/WindowTopBar.test.jsx similarity index 100% rename from __tests__/src/components/WindowTopBar.test.js rename to __tests__/src/components/WindowTopBar.test.jsx diff --git a/__tests__/src/components/WindowTopBarPluginArea.test.js b/__tests__/src/components/WindowTopBarPluginArea.test.jsx similarity index 100% rename from __tests__/src/components/WindowTopBarPluginArea.test.js rename to __tests__/src/components/WindowTopBarPluginArea.test.jsx diff --git a/__tests__/src/components/WindowTopBarPluginMenu.test.js b/__tests__/src/components/WindowTopBarPluginMenu.test.jsx similarity index 100% rename from __tests__/src/components/WindowTopBarPluginMenu.test.js rename to __tests__/src/components/WindowTopBarPluginMenu.test.jsx diff --git a/__tests__/src/components/WindowTopBarTitle.test.js b/__tests__/src/components/WindowTopBarTitle.test.jsx similarity index 100% rename from __tests__/src/components/WindowTopBarTitle.test.js rename to __tests__/src/components/WindowTopBarTitle.test.jsx diff --git a/__tests__/src/components/WindowTopMenu.test.js b/__tests__/src/components/WindowTopMenu.test.jsx similarity index 100% rename from __tests__/src/components/WindowTopMenu.test.js rename to __tests__/src/components/WindowTopMenu.test.jsx diff --git a/__tests__/src/components/WindowTopMenuButton.test.js b/__tests__/src/components/WindowTopMenuButton.test.jsx similarity index 100% rename from __tests__/src/components/WindowTopMenuButton.test.js rename to __tests__/src/components/WindowTopMenuButton.test.jsx diff --git a/__tests__/src/components/WindowViewSettings.test.js b/__tests__/src/components/WindowViewSettings.test.jsx similarity index 100% rename from __tests__/src/components/WindowViewSettings.test.js rename to __tests__/src/components/WindowViewSettings.test.jsx diff --git a/__tests__/src/components/WindowViewer.test.js b/__tests__/src/components/WindowViewer.test.jsx similarity index 100% rename from __tests__/src/components/WindowViewer.test.js rename to __tests__/src/components/WindowViewer.test.jsx diff --git a/__tests__/src/components/Workspace.test.js b/__tests__/src/components/Workspace.test.jsx similarity index 100% rename from __tests__/src/components/Workspace.test.js rename to __tests__/src/components/Workspace.test.jsx diff --git a/__tests__/src/components/WorkspaceAdd.test.js b/__tests__/src/components/WorkspaceAdd.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceAdd.test.js rename to __tests__/src/components/WorkspaceAdd.test.jsx diff --git a/__tests__/src/components/WorkspaceAddButton.test.js b/__tests__/src/components/WorkspaceAddButton.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceAddButton.test.js rename to __tests__/src/components/WorkspaceAddButton.test.jsx diff --git a/__tests__/src/components/WorkspaceArea.test.js b/__tests__/src/components/WorkspaceArea.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceArea.test.js rename to __tests__/src/components/WorkspaceArea.test.jsx diff --git a/__tests__/src/components/WorkspaceControlPanel.test.js b/__tests__/src/components/WorkspaceControlPanel.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceControlPanel.test.js rename to __tests__/src/components/WorkspaceControlPanel.test.jsx diff --git a/__tests__/src/components/WorkspaceControlPanelButtons.test.js b/__tests__/src/components/WorkspaceControlPanelButtons.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceControlPanelButtons.test.js rename to __tests__/src/components/WorkspaceControlPanelButtons.test.jsx diff --git a/__tests__/src/components/WorkspaceElastic.test.js b/__tests__/src/components/WorkspaceElastic.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceElastic.test.js rename to __tests__/src/components/WorkspaceElastic.test.jsx diff --git a/__tests__/src/components/WorkspaceElasticWindow.test.js b/__tests__/src/components/WorkspaceElasticWindow.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceElasticWindow.test.js rename to __tests__/src/components/WorkspaceElasticWindow.test.jsx diff --git a/__tests__/src/components/WorkspaceExport.test.js b/__tests__/src/components/WorkspaceExport.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceExport.test.js rename to __tests__/src/components/WorkspaceExport.test.jsx diff --git a/__tests__/src/components/WorkspaceImport.test.js b/__tests__/src/components/WorkspaceImport.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceImport.test.js rename to __tests__/src/components/WorkspaceImport.test.jsx diff --git a/__tests__/src/components/WorkspaceMenu.test.js b/__tests__/src/components/WorkspaceMenu.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceMenu.test.js rename to __tests__/src/components/WorkspaceMenu.test.jsx diff --git a/__tests__/src/components/WorkspaceMenuButton.test.js b/__tests__/src/components/WorkspaceMenuButton.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceMenuButton.test.js rename to __tests__/src/components/WorkspaceMenuButton.test.jsx diff --git a/__tests__/src/components/WorkspaceMosaic.test.js b/__tests__/src/components/WorkspaceMosaic.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceMosaic.test.js rename to __tests__/src/components/WorkspaceMosaic.test.jsx diff --git a/__tests__/src/components/WorkspaceOptionsButton.test.js b/__tests__/src/components/WorkspaceOptionsButton.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceOptionsButton.test.js rename to __tests__/src/components/WorkspaceOptionsButton.test.jsx diff --git a/__tests__/src/components/WorkspaceOptionsMenu.test.js b/__tests__/src/components/WorkspaceOptionsMenu.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceOptionsMenu.test.js rename to __tests__/src/components/WorkspaceOptionsMenu.test.jsx diff --git a/__tests__/src/components/WorkspaceSelectionDialog.test.js b/__tests__/src/components/WorkspaceSelectionDialog.test.jsx similarity index 100% rename from __tests__/src/components/WorkspaceSelectionDialog.test.js rename to __tests__/src/components/WorkspaceSelectionDialog.test.jsx diff --git a/__tests__/src/components/ZoomControls.test.js b/__tests__/src/components/ZoomControls.test.jsx similarity index 100% rename from __tests__/src/components/ZoomControls.test.js rename to __tests__/src/components/ZoomControls.test.jsx diff --git a/__tests__/src/extend/withPlugins.test.js b/__tests__/src/extend/withPlugins.test.jsx similarity index 100% rename from __tests__/src/extend/withPlugins.test.js rename to __tests__/src/extend/withPlugins.test.jsx diff --git a/__tests__/src/lib/MiradorViewer.test.js b/__tests__/src/lib/MiradorViewer.test.jsx similarity index 100% rename from __tests__/src/lib/MiradorViewer.test.js rename to __tests__/src/lib/MiradorViewer.test.jsx diff --git a/__tests__/utils/test-utils.js b/__tests__/utils/test-utils.jsx similarity index 100% rename from __tests__/utils/test-utils.js rename to __tests__/utils/test-utils.jsx diff --git a/eslint.config.js b/eslint.config.js index c155a8610f..20617cc1b3 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -75,7 +75,7 @@ export default [ 'import/no-duplicates': 'error', 'import/no-extraneous-dependencies': 'off', 'import/no-mutable-exports': 'error', - 'import/no-unresolved': [2, { ignore: ['test-utils', '@vitejs/plugin-react'] }], + 'import/no-unresolved': [2, { ignore: ['test-utils', '@vitejs/plugin-react', 'vite'] }], 'import/prefer-default-export': 'off', 'max-depth': ['warn', 4], 'max-params': ['warn', 5], diff --git a/netlify.toml b/netlify.toml index bf2f5eb531..557192c4b9 100644 --- a/netlify.toml +++ b/netlify.toml @@ -5,10 +5,10 @@ publish = "dist/" [context.main.environment] - NODE_VERSION = "20.18.1" + NODE_VERSION = "22.12.0" [context.deploy-preview.environment] - NODE_VERSION = "20.18.1" + NODE_VERSION = "22.12.0" [[redirects]] from = "/" diff --git a/package.json b/package.json index a2d71a1c0f..75e785efa5 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.4.3", - "@vitejs/plugin-react": "^5.2.0", + "@vitejs/plugin-react": "^6.0.1", "@vitest/coverage-v8": "^4.1.2", "@vitest/ui": "^4.1.2", "bundlewatch": "^0.4.0", @@ -112,7 +112,7 @@ "react-i18next": "^13.0.0 || ^14.0.0 || ^15.0.0", "redux-mock-store": "^1.5.1", "redux-saga-test-plan": "^4.0.0-rc.3", - "vite": "^7.3.1", + "vite": "^8.0.3", "vitest": "^4.1.2", "vitest-fetch-mock": "^0.4.2" }, diff --git a/vite.config.js b/vite.config.js index ce4fd98a2f..dba101f9ed 100644 --- a/vite.config.js +++ b/vite.config.js @@ -6,6 +6,8 @@ import { fileURLToPath } from 'url'; import { globSync } from 'glob'; import * as packageJson from './package.json'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + /** * Vite configuration */ @@ -13,7 +15,7 @@ export default defineConfig({ ...( process.env.NETLIFY ? { build: { - rollupOptions: { + rolldownOptions: { external: ['__tests__/*', '__mocks__/*'], input: Object.fromEntries( globSync('./demo/*.html').map((file) => [ @@ -39,11 +41,11 @@ export default defineConfig({ formats: ['es'], name: 'Mirador', }, - rollupOptions: { + rolldownOptions: { external: (id, parentId) => { const peers = Object.keys(packageJson.peerDependencies); return peers.indexOf(id) > -1 - || peers.find((peer) => id.startsWith(`${peer}/`)) + || peers.some((peer) => id.startsWith(`${peer}/`)) || id.startsWith('__tests__/') || id.startsWith('__mocks__/'); }, diff --git a/vitest.config.ts b/vitest.config.ts index d8959d6e16..d93069e8b1 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,30 +1,11 @@ /// -import { defineConfig } from 'vite'; +import { defineConfig } from 'vitest/config'; import react from '@vitejs/plugin-react'; import { fileURLToPath } from 'url'; -import fs from 'fs/promises'; - export default defineConfig({ - esbuild: { + oxc: { exclude: [], include: /(src|__tests__)\/.*\.jsx?$/, - loader: 'jsx', - }, - optimizeDeps: { - esbuildOptions: { - plugins: [ - { - name: 'load-js-files-as-jsx', - /** */ - setup(build) { - build.onLoad({ filter: /(src|__tests__)\/.*\.js$/ }, async (args) => ({ - contents: await fs.readFile(args.path, 'utf8'), - loader: 'jsx', - })); - }, - }, - ], - }, }, plugins: [react()], resolve: {