diff --git a/lms/static/scripts/bootstrap.js b/lms/static/scripts/bootstrap.js
index 3d0f427843..00b001d059 100644
--- a/lms/static/scripts/bootstrap.js
+++ b/lms/static/scripts/bootstrap.js
@@ -1,3 +1,4 @@
+import { unmountAll } from '@hypothesis/frontend-testing';
import { configure } from 'enzyme';
import { Adapter } from 'enzyme-adapter-preact-pure';
import 'preact/debug';
@@ -7,6 +8,9 @@ sinon.assert.expose(assert, { prefix: null });
// Configure Enzyme for UI tests.
configure({ adapter: new Adapter() });
+afterEach(() => {
+ unmountAll();
+});
// Ensure that uncaught exceptions between tests result in the tests failing.
// This works around an issue with mocha / karma-mocha, see
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/AllCoursesActivity-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/AllCoursesActivity-test.js
index f278b79653..0b454ece8c 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/AllCoursesActivity-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/AllCoursesActivity-test.js
@@ -3,7 +3,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import sinon from 'sinon';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/AssignmentActivity-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/AssignmentActivity-test.js
index ed6a6f999f..0d9641af6a 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/AssignmentActivity-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/AssignmentActivity-test.js
@@ -3,7 +3,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import sinon from 'sinon';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/ContentWithBadge-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/ContentWithBadge-test.js
index 93b15036ea..41636f3907 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/ContentWithBadge-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/ContentWithBadge-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import ContentWithBadge from '../ContentWithBadge';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/CourseActivity-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/CourseActivity-test.js
index 912c443e57..367674767f 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/CourseActivity-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/CourseActivity-test.js
@@ -2,7 +2,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import sinon from 'sinon';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardActivityFilters-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardActivityFilters-test.js
index fa8c8c7db9..d20dd0391f 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardActivityFilters-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardActivityFilters-test.js
@@ -3,8 +3,8 @@ import { formatDateTime } from '@hypothesis/frontend-shared';
import {
checkAccessibility,
mockImportedComponents,
+ mount,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
import sinon from 'sinon';
import { Config } from '../../../config';
@@ -64,8 +64,6 @@ describe('DashboardActivityFilters', () => {
let fakeLoadNextCoursesPage;
let fakeLoadNextAssignmentsPage;
let fakeLoadNextStudentsPage;
- let wrappers;
- let containers;
/**
* @param {object} options
@@ -109,9 +107,6 @@ describe('DashboardActivityFilters', () => {
}
beforeEach(() => {
- wrappers = [];
- containers = [];
-
fakeLoadNextCoursesPage = sinon.stub();
fakeLoadNextAssignmentsPage = sinon.stub();
fakeLoadNextStudentsPage = sinon.stub();
@@ -121,7 +116,6 @@ describe('DashboardActivityFilters', () => {
onCoursesChange = sinon.stub();
onAssignmentsChange = sinon.stub();
onStudentsChange = sinon.stub();
- wrappers = [];
fakeConfig = {
dashboard: {
@@ -147,8 +141,6 @@ describe('DashboardActivityFilters', () => {
});
afterEach(() => {
- wrappers.forEach(w => w.unmount());
- containers.forEach(c => c.remove());
$imports.$restore();
});
@@ -180,24 +172,13 @@ describe('DashboardActivityFilters', () => {
});
}
- function createContainerInDOM() {
- const container = document.createElement('div');
- containers.push(container);
- document.body.appendChild(container);
-
- return container;
- }
-
function createComponentWithProps(props) {
- const wrapper = mount(
+ return mount(
,
- { attachTo: createContainerInDOM() },
+ { connected: true },
);
- wrappers.push(wrapper);
-
- return wrapper;
}
function getSelect(wrapper, id) {
@@ -274,7 +255,7 @@ describe('DashboardActivityFilters', () => {
{select.props().renderOption(entity)}
,
- { attachTo: createContainerInDOM() },
+ { connected: true },
);
// The Select needs to be open, otherwise options are not rendered
tempSelect.find('button').simulate('click');
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardApp-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardApp-test.js
index a41863953a..fab18cf144 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardApp-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardApp-test.js
@@ -2,7 +2,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../../config';
import DashboardApp, { $imports } from '../DashboardApp';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardBreadcrumbs-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardBreadcrumbs-test.js
index 8206af2e7d..251d89db2d 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardBreadcrumbs-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardBreadcrumbs-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import DashboardBreadcrumbs from '../DashboardBreadcrumbs';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardFooter-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardFooter-test.js
index 7c323e993e..58b88a8a77 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardFooter-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/DashboardFooter-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import DashboardFooter from '../DashboardFooter';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/GradeIndicator-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/GradeIndicator-test.js
index 511ff4ed37..d41e7ca3f7 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/GradeIndicator-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/GradeIndicator-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import GradeIndicator from '../GradeIndicator';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/GradeStatusChip-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/GradeStatusChip-test.js
index 3ee559c58a..e575809f40 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/GradeStatusChip-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/GradeStatusChip-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import GradeStatusChip from '../GradeStatusChip';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/OrderableActivityTable-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/OrderableActivityTable-test.js
index 0310a8ab66..8aa1cc5eee 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/OrderableActivityTable-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/OrderableActivityTable-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import sinon from 'sinon';
import OrderableActivityTable, { $imports } from '../OrderableActivityTable';
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/PaginatedMultiSelect-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/PaginatedMultiSelect-test.js
index 0024ab4439..7556c0fe02 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/PaginatedMultiSelect-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/PaginatedMultiSelect-test.js
@@ -1,28 +1,11 @@
import { MultiSelect } from '@hypothesis/frontend-shared';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import PaginatedMultiSelect from '../PaginatedMultiSelect';
describe('PaginatedMultiSelect', () => {
- let wrappers;
- let containers;
-
- beforeEach(() => {
- wrappers = [];
- containers = [];
- });
-
- afterEach(() => {
- wrappers.forEach(w => w.unmount());
- containers.forEach(c => c.remove());
- });
-
function createComponent(props) {
- const container = document.createElement('div');
- containers.push(container);
- document.body.appendChild(container);
-
- const wrapper = mount(
+ return mount(
{
)}
{...props}
/>,
- { attachTo: container },
+ { connected: true },
);
- wrappers.push(wrapper);
-
- return wrapper;
}
function getSelect(wrapper, id = 'courses') {
diff --git a/lms/static/scripts/frontend_apps/components/dashboard/test/SyncGradesButton-test.js b/lms/static/scripts/frontend_apps/components/dashboard/test/SyncGradesButton-test.js
index c5b7bc5c00..6e7291df50 100644
--- a/lms/static/scripts/frontend_apps/components/dashboard/test/SyncGradesButton-test.js
+++ b/lms/static/scripts/frontend_apps/components/dashboard/test/SyncGradesButton-test.js
@@ -2,7 +2,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import sinon from 'sinon';
diff --git a/lms/static/scripts/frontend_apps/components/test/AppRoot-test.js b/lms/static/scripts/frontend_apps/components/test/AppRoot-test.js
index be102c7bc9..7f2439a814 100644
--- a/lms/static/scripts/frontend_apps/components/test/AppRoot-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/AppRoot-test.js
@@ -2,7 +2,7 @@ import {
mockImportedComponents,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { useConfig } from '../../config';
import { useService } from '../../services';
diff --git a/lms/static/scripts/frontend_apps/components/test/AuthButton-test.js b/lms/static/scripts/frontend_apps/components/test/AuthButton-test.js
index 74dfd4255a..3ee9b5b9d5 100644
--- a/lms/static/scripts/frontend_apps/components/test/AuthButton-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/AuthButton-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import AuthButton, { $imports } from '../AuthButton';
diff --git a/lms/static/scripts/frontend_apps/components/test/AuthorizationModal-test.js b/lms/static/scripts/frontend_apps/components/test/AuthorizationModal-test.js
index 72f11166cf..87288b1e1d 100644
--- a/lms/static/scripts/frontend_apps/components/test/AuthorizationModal-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/AuthorizationModal-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import AuthorizationModal from '../AuthorizationModal';
diff --git a/lms/static/scripts/frontend_apps/components/test/AutoGradingConfigurator-test.js b/lms/static/scripts/frontend_apps/components/test/AutoGradingConfigurator-test.js
index 583623c94b..f49f22f03c 100644
--- a/lms/static/scripts/frontend_apps/components/test/AutoGradingConfigurator-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/AutoGradingConfigurator-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import AutoGradingConfigurator from '../AutoGradingConfigurator';
diff --git a/lms/static/scripts/frontend_apps/components/test/BasicLTILaunchApp-test.js b/lms/static/scripts/frontend_apps/components/test/BasicLTILaunchApp-test.js
index 4ddd4360d0..1260d2f0e5 100644
--- a/lms/static/scripts/frontend_apps/components/test/BasicLTILaunchApp-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/BasicLTILaunchApp-test.js
@@ -5,7 +5,7 @@ import {
waitFor,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import { Config } from '../../config';
diff --git a/lms/static/scripts/frontend_apps/components/test/BookPicker-test.js b/lms/static/scripts/frontend_apps/components/test/BookPicker-test.js
index 7c083e11e6..a739fb8d49 100644
--- a/lms/static/scripts/frontend_apps/components/test/BookPicker-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/BookPicker-test.js
@@ -3,7 +3,7 @@ import {
waitFor,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import { VitalSourceService, withServices } from '../../services';
diff --git a/lms/static/scripts/frontend_apps/components/test/BookSelector-test.js b/lms/static/scripts/frontend_apps/components/test/BookSelector-test.js
index fc307b3c59..aa67112a91 100644
--- a/lms/static/scripts/frontend_apps/components/test/BookSelector-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/BookSelector-test.js
@@ -1,5 +1,4 @@
-import { waitFor, waitForElement } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount, waitFor, waitForElement } from '@hypothesis/frontend-testing';
import { VitalSourceService, withServices } from '../../services';
import BookSelector, { $imports } from '../BookSelector';
@@ -73,24 +72,13 @@ describe('BookSelector', () => {
};
describe('initial focus', () => {
- let container;
-
- beforeEach(() => {
- container = document.createElement('div');
- document.body.appendChild(container);
- });
-
- afterEach(() => {
- container.remove();
- });
-
it('focuses the URL text input element', () => {
const beforeFocused = document.activeElement;
const wrapper = mount(
,
{
- attachTo: container,
+ connected: true,
},
);
diff --git a/lms/static/scripts/frontend_apps/components/test/Breadcrumbs-test.js b/lms/static/scripts/frontend_apps/components/test/Breadcrumbs-test.js
index f9f47d1087..d1703d46d2 100644
--- a/lms/static/scripts/frontend_apps/components/test/Breadcrumbs-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/Breadcrumbs-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import Breadcrumbs from '../Breadcrumbs';
diff --git a/lms/static/scripts/frontend_apps/components/test/ContentSelector-test.js b/lms/static/scripts/frontend_apps/components/test/ContentSelector-test.js
index a1697ea315..d5c53365f8 100644
--- a/lms/static/scripts/frontend_apps/components/test/ContentSelector-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/ContentSelector-test.js
@@ -4,7 +4,7 @@ import {
waitFor,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import { Config } from '../../config';
diff --git a/lms/static/scripts/frontend_apps/components/test/DataLoader-test.js b/lms/static/scripts/frontend_apps/components/test/DataLoader-test.js
index d2fbf6c03f..bc10506b1e 100644
--- a/lms/static/scripts/frontend_apps/components/test/DataLoader-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/DataLoader-test.js
@@ -1,5 +1,5 @@
import { waitForElement } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { useState } from 'preact/hooks';
import DataLoader from '../DataLoader';
diff --git a/lms/static/scripts/frontend_apps/components/test/DocumentList-test.js b/lms/static/scripts/frontend_apps/components/test/DocumentList-test.js
index 415b7c9c90..5b675252bf 100644
--- a/lms/static/scripts/frontend_apps/components/test/DocumentList-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/DocumentList-test.js
@@ -2,7 +2,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import DocumentList, { $imports } from '../DocumentList';
diff --git a/lms/static/scripts/frontend_apps/components/test/EmailPreferences-test.js b/lms/static/scripts/frontend_apps/components/test/EmailPreferences-test.js
index c0f5beb623..2361bda49f 100644
--- a/lms/static/scripts/frontend_apps/components/test/EmailPreferences-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/EmailPreferences-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import EmailPreferences from '../EmailPreferences';
diff --git a/lms/static/scripts/frontend_apps/components/test/EmailPreferencesApp-test.js b/lms/static/scripts/frontend_apps/components/test/EmailPreferencesApp-test.js
index d89ebac01d..672fe72405 100644
--- a/lms/static/scripts/frontend_apps/components/test/EmailPreferencesApp-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/EmailPreferencesApp-test.js
@@ -1,5 +1,5 @@
import { mockImportedComponents } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../config';
import EmailPreferencesApp, { $imports } from '../EmailPreferencesApp';
diff --git a/lms/static/scripts/frontend_apps/components/test/ErrorDialogApp-test.js b/lms/static/scripts/frontend_apps/components/test/ErrorDialogApp-test.js
index 253f95a83f..7c14ef7417 100644
--- a/lms/static/scripts/frontend_apps/components/test/ErrorDialogApp-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/ErrorDialogApp-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../config';
import ErrorDialogApp from '../ErrorDialogApp';
diff --git a/lms/static/scripts/frontend_apps/components/test/ErrorDisplay-test.js b/lms/static/scripts/frontend_apps/components/test/ErrorDisplay-test.js
index 369bf6bbcd..56f76ba6cf 100644
--- a/lms/static/scripts/frontend_apps/components/test/ErrorDisplay-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/ErrorDisplay-test.js
@@ -3,7 +3,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../config';
import ErrorDisplay, { $imports } from '../ErrorDisplay';
diff --git a/lms/static/scripts/frontend_apps/components/test/ErrorModal-test.js b/lms/static/scripts/frontend_apps/components/test/ErrorModal-test.js
index e5ffe88543..6be581ca64 100644
--- a/lms/static/scripts/frontend_apps/components/test/ErrorModal-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/ErrorModal-test.js
@@ -1,5 +1,5 @@
import { mockImportedComponents } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import ErrorModal, { $imports } from '../ErrorModal';
diff --git a/lms/static/scripts/frontend_apps/components/test/FilePickerApp-test.js b/lms/static/scripts/frontend_apps/components/test/FilePickerApp-test.js
index 4bcf473814..895a29cc78 100644
--- a/lms/static/scripts/frontend_apps/components/test/FilePickerApp-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/FilePickerApp-test.js
@@ -1,10 +1,10 @@
import {
checkAccessibility,
mockImportedComponents,
+ mount,
waitFor,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
import { act } from 'preact/test-utils';
import { Config } from '../../config';
@@ -26,7 +26,6 @@ function clickButton(wrapper, testId) {
}
describe('FilePickerApp', () => {
- let container;
let fakeConfig;
const renderFilePicker = (props = {}) => {
@@ -36,7 +35,7 @@ describe('FilePickerApp', () => {
,
{
- attachTo: container,
+ connected: true,
},
);
};
@@ -56,15 +55,11 @@ describe('FilePickerApp', () => {
},
};
- container = document.createElement('div');
- document.body.appendChild(container);
-
$imports.$mock(mockImportedComponents());
});
afterEach(() => {
$imports.$restore();
- container.remove();
});
/**
diff --git a/lms/static/scripts/frontend_apps/components/test/FilePickerFormFields-test.js b/lms/static/scripts/frontend_apps/components/test/FilePickerFormFields-test.js
index a3c11fd1d9..282376b36b 100644
--- a/lms/static/scripts/frontend_apps/components/test/FilePickerFormFields-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/FilePickerFormFields-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import FilePickerFormFields from '../FilePickerFormFields';
diff --git a/lms/static/scripts/frontend_apps/components/test/GradingCommentButton-test.js b/lms/static/scripts/frontend_apps/components/test/GradingCommentButton-test.js
index 20f528e059..d583a6e52e 100644
--- a/lms/static/scripts/frontend_apps/components/test/GradingCommentButton-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/GradingCommentButton-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import GradingCommentButton from '../GradingCommentButton';
diff --git a/lms/static/scripts/frontend_apps/components/test/GradingControls-test.js b/lms/static/scripts/frontend_apps/components/test/GradingControls-test.js
index e2ca61d2a1..d4b279834a 100644
--- a/lms/static/scripts/frontend_apps/components/test/GradingControls-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/GradingControls-test.js
@@ -3,7 +3,7 @@ import {
mockImportedComponents,
waitFor,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import { Config } from '../../config';
diff --git a/lms/static/scripts/frontend_apps/components/test/GroupConfigSelector-test.js b/lms/static/scripts/frontend_apps/components/test/GroupConfigSelector-test.js
index a619d591ed..525fd5c8c5 100644
--- a/lms/static/scripts/frontend_apps/components/test/GroupConfigSelector-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/GroupConfigSelector-test.js
@@ -1,9 +1,9 @@
import { Select } from '@hypothesis/frontend-shared';
import {
mockImportedComponents,
+ mount,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
import { act } from 'preact/test-utils';
import { Config } from '../../config';
@@ -21,8 +21,6 @@ describe('GroupConfigSelector', () => {
let fakeConfig;
let fakeGroupSets;
let fakeIsAuthorizationError;
- let wrappers;
- let containers;
beforeEach(() => {
fakeGroupSets = [
@@ -35,8 +33,6 @@ describe('GroupConfigSelector', () => {
name: 'Group Set 2',
},
];
- wrappers = [];
- containers = [];
fakeAPICall = sinon.stub();
fakeAPICall.withArgs(groupSetsAPIRequest).resolves(fakeGroupSets);
@@ -70,8 +66,6 @@ describe('GroupConfigSelector', () => {
afterEach(() => {
$imports.$restore();
- wrappers.forEach(w => w.unmount());
- containers.forEach(c => c.remove());
});
// Helper that simulates GroupConfigSelector's containing component.
@@ -89,14 +83,7 @@ describe('GroupConfigSelector', () => {
}
function createComponent(props = {}) {
- const container = document.createElement('div');
- containers.push(container);
- document.body.appendChild(container);
-
- const wrapper = mount(, { attachTo: container });
- wrappers.push(wrapper);
-
- return wrapper;
+ return mount(, { connected: true });
}
function toggleCheckbox(wrapper) {
diff --git a/lms/static/scripts/frontend_apps/components/test/HiddenFormFields-test.js b/lms/static/scripts/frontend_apps/components/test/HiddenFormFields-test.js
index f065d7fc81..6ac305488a 100644
--- a/lms/static/scripts/frontend_apps/components/test/HiddenFormFields-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/HiddenFormFields-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import HiddenFormFields from '../HiddenFormFields';
diff --git a/lms/static/scripts/frontend_apps/components/test/InstructorToolbar-test.js b/lms/static/scripts/frontend_apps/components/test/InstructorToolbar-test.js
index 5d1e65a149..55f7ad8a37 100644
--- a/lms/static/scripts/frontend_apps/components/test/InstructorToolbar-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/InstructorToolbar-test.js
@@ -2,7 +2,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../config';
import InstructorToolbar, { $imports } from '../InstructorToolbar';
diff --git a/lms/static/scripts/frontend_apps/components/test/JSTORPicker-test.js b/lms/static/scripts/frontend_apps/components/test/JSTORPicker-test.js
index a9c218cbee..05909cb540 100644
--- a/lms/static/scripts/frontend_apps/components/test/JSTORPicker-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/JSTORPicker-test.js
@@ -1,5 +1,4 @@
-import { mockImportedComponents } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mockImportedComponents, mount } from '@hypothesis/frontend-testing';
import { useState } from 'preact/hooks';
import { act } from 'preact/test-utils';
@@ -100,22 +99,11 @@ describe('JSTORPicker', () => {
};
describe('initial focus', () => {
- let container;
-
- beforeEach(() => {
- container = document.createElement('div');
- document.body.appendChild(container);
- });
-
- afterEach(() => {
- container.remove();
- });
-
it('focuses the URL text input element', () => {
const beforeFocused = document.activeElement;
const wrapper = mount(, {
- attachTo: container,
+ connected: true,
});
const focused = document.activeElement;
diff --git a/lms/static/scripts/frontend_apps/components/test/LMSFilePicker-test.js b/lms/static/scripts/frontend_apps/components/test/LMSFilePicker-test.js
index 825653effb..47984f2617 100644
--- a/lms/static/scripts/frontend_apps/components/test/LMSFilePicker-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/LMSFilePicker-test.js
@@ -3,7 +3,7 @@ import {
waitFor,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import { APIError } from '../../errors';
diff --git a/lms/static/scripts/frontend_apps/components/test/LaunchErrorDialog-test.js b/lms/static/scripts/frontend_apps/components/test/LaunchErrorDialog-test.js
index 95e57b7b30..7db77f45ab 100644
--- a/lms/static/scripts/frontend_apps/components/test/LaunchErrorDialog-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/LaunchErrorDialog-test.js
@@ -1,6 +1,6 @@
import { Link } from '@hypothesis/frontend-shared';
import { mockImportedComponents } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../config';
import LaunchErrorDialog, { $imports } from '../LaunchErrorDialog';
diff --git a/lms/static/scripts/frontend_apps/components/test/OAuth2RedirectErrorApp-test.js b/lms/static/scripts/frontend_apps/components/test/OAuth2RedirectErrorApp-test.js
index af44ce07d3..ac5d7da0c9 100644
--- a/lms/static/scripts/frontend_apps/components/test/OAuth2RedirectErrorApp-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/OAuth2RedirectErrorApp-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Config } from '../../config';
import OAuth2RedirectErrorApp from '../OAuth2RedirectErrorApp';
diff --git a/lms/static/scripts/frontend_apps/components/test/RelativeTime-test.js b/lms/static/scripts/frontend_apps/components/test/RelativeTime-test.js
index c5ada6c94a..8167ae25e7 100644
--- a/lms/static/scripts/frontend_apps/components/test/RelativeTime-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/RelativeTime-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import RelativeTime, { $imports } from '../RelativeTime';
diff --git a/lms/static/scripts/frontend_apps/components/test/StudentSelector-test.js b/lms/static/scripts/frontend_apps/components/test/StudentSelector-test.js
index 149e8c5498..627d955528 100644
--- a/lms/static/scripts/frontend_apps/components/test/StudentSelector-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/StudentSelector-test.js
@@ -2,7 +2,7 @@ import {
checkAccessibility,
mockImportedComponents,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import StudentSelector, { $imports } from '../StudentSelector';
diff --git a/lms/static/scripts/frontend_apps/components/test/SubmitGradeForm-test.js b/lms/static/scripts/frontend_apps/components/test/SubmitGradeForm-test.js
index e0abd5bbf1..70f9131887 100644
--- a/lms/static/scripts/frontend_apps/components/test/SubmitGradeForm-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/SubmitGradeForm-test.js
@@ -1,10 +1,10 @@
import {
checkAccessibility,
mockImportedComponents,
+ mount,
waitFor,
waitForElement,
} from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
import { act } from 'preact/test-utils';
import { GradingService, withServices } from '../../services';
@@ -33,10 +33,9 @@ describe('SubmitGradeForm', () => {
[GradingService, fakeGradingService],
]);
- let container;
const renderForm = (props = {}) => {
return mount(, {
- attachTo: container,
+ connected: true,
});
};
@@ -51,11 +50,6 @@ describe('SubmitGradeForm', () => {
}
beforeEach(() => {
- // This extra element is necessary to test automatic `focus`-ing
- // of the component's `input` element
- container = document.createElement('div');
- document.body.appendChild(container);
-
// Reset the api grade stubs for each test because
// some tests below will change these for specific cases.
fakeGradingService = fakeGradingService = {
diff --git a/lms/static/scripts/frontend_apps/components/test/TableOfContentsPicker-test.js b/lms/static/scripts/frontend_apps/components/test/TableOfContentsPicker-test.js
index fe9f0b1042..805a11b4d8 100644
--- a/lms/static/scripts/frontend_apps/components/test/TableOfContentsPicker-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/TableOfContentsPicker-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import TableOfContentsPicker from '../TableOfContentsPicker';
@@ -33,17 +33,6 @@ describe('TableOfContentsPicker', () => {
);
describe('initial focus', () => {
- let container;
-
- beforeEach(() => {
- container = document.createElement('div');
- document.body.appendChild(container);
- });
-
- afterEach(() => {
- container.remove();
- });
-
it('focuses the URL text input element', () => {
const beforeFocused = document.activeElement;
@@ -55,7 +44,7 @@ describe('TableOfContentsPicker', () => {
onConfirmEntry={noop}
/>,
{
- attachTo: container,
+ connected: true,
},
);
diff --git a/lms/static/scripts/frontend_apps/components/test/TruncatedText-test.js b/lms/static/scripts/frontend_apps/components/test/TruncatedText-test.js
index 02bc513c37..dbc3b01c9c 100644
--- a/lms/static/scripts/frontend_apps/components/test/TruncatedText-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/TruncatedText-test.js
@@ -1,35 +1,15 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import TruncatedText from '../TruncatedText';
describe('TruncatedText', () => {
- let wrappers;
- let containers;
-
- beforeEach(() => {
- wrappers = [];
- containers = [];
- });
-
- afterEach(() => {
- wrappers.forEach(wrapper => wrapper.unmount());
- containers.forEach(container => container.remove());
- });
-
function createComponent(content, title) {
- const container = document.createElement('div');
- document.body.appendChild(container);
-
const wrapper = mount(
{content}
,
- { attachTo: container },
+ { connected: true },
);
-
- containers.push(container);
- wrappers.push(wrapper);
-
return wrapper.find('[data-testid="truncated-text"]');
}
diff --git a/lms/static/scripts/frontend_apps/components/test/UIMessage-test.js b/lms/static/scripts/frontend_apps/components/test/UIMessage-test.js
index 9197959f4c..9bfe584213 100644
--- a/lms/static/scripts/frontend_apps/components/test/UIMessage-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/UIMessage-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import UIMessage from '../UIMessage';
diff --git a/lms/static/scripts/frontend_apps/components/test/URLFormWithPreview-test.js b/lms/static/scripts/frontend_apps/components/test/URLFormWithPreview-test.js
index 697dbde922..7660c0011e 100644
--- a/lms/static/scripts/frontend_apps/components/test/URLFormWithPreview-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/URLFormWithPreview-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { createRef } from 'preact';
import URLFormWithPreview from '../URLFormWithPreview';
diff --git a/lms/static/scripts/frontend_apps/components/test/URLPicker-test.js b/lms/static/scripts/frontend_apps/components/test/URLPicker-test.js
index 5350f143c5..7c169ebf39 100644
--- a/lms/static/scripts/frontend_apps/components/test/URLPicker-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/URLPicker-test.js
@@ -1,5 +1,5 @@
import { checkAccessibility } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import URLPicker from '../URLPicker';
diff --git a/lms/static/scripts/frontend_apps/components/test/YouTubePicker-test.js b/lms/static/scripts/frontend_apps/components/test/YouTubePicker-test.js
index c5db39eed7..4868b7e445 100644
--- a/lms/static/scripts/frontend_apps/components/test/YouTubePicker-test.js
+++ b/lms/static/scripts/frontend_apps/components/test/YouTubePicker-test.js
@@ -1,5 +1,5 @@
import { mockImportedComponents } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { APIError } from '../../errors';
import YouTubePicker, { $imports } from '../YouTubePicker';
diff --git a/lms/static/scripts/frontend_apps/services/test/index-test.js b/lms/static/scripts/frontend_apps/services/test/index-test.js
index 17929bca67..8484ebf9bb 100644
--- a/lms/static/scripts/frontend_apps/services/test/index-test.js
+++ b/lms/static/scripts/frontend_apps/services/test/index-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { Services, useService, withServices } from '../index';
diff --git a/lms/static/scripts/frontend_apps/utils/dashboard/test/hooks-test.js b/lms/static/scripts/frontend_apps/utils/dashboard/test/hooks-test.js
index 48d0f0898f..041530ef39 100644
--- a/lms/static/scripts/frontend_apps/utils/dashboard/test/hooks-test.js
+++ b/lms/static/scripts/frontend_apps/utils/dashboard/test/hooks-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { useDashboardFilters, $imports } from '../hooks';
diff --git a/lms/static/scripts/frontend_apps/utils/test/api-test.js b/lms/static/scripts/frontend_apps/utils/test/api-test.js
index 082971945e..d26e9abdd4 100644
--- a/lms/static/scripts/frontend_apps/utils/test/api-test.js
+++ b/lms/static/scripts/frontend_apps/utils/test/api-test.js
@@ -1,5 +1,5 @@
import { delay, waitFor } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { useMemo } from 'preact/hooks';
import { Config } from '../../config';
diff --git a/lms/static/scripts/frontend_apps/utils/test/fetch-test.js b/lms/static/scripts/frontend_apps/utils/test/fetch-test.js
index e0c00640aa..e40780db3a 100644
--- a/lms/static/scripts/frontend_apps/utils/test/fetch-test.js
+++ b/lms/static/scripts/frontend_apps/utils/test/fetch-test.js
@@ -1,5 +1,5 @@
import { delay } from '@hypothesis/frontend-testing';
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { act } from 'preact/test-utils';
import { useFetch } from '../fetch';
diff --git a/lms/static/scripts/frontend_apps/utils/test/hooks-test.js b/lms/static/scripts/frontend_apps/utils/test/hooks-test.js
index c443b45dd7..da0fdb78b1 100644
--- a/lms/static/scripts/frontend_apps/utils/test/hooks-test.js
+++ b/lms/static/scripts/frontend_apps/utils/test/hooks-test.js
@@ -1,4 +1,4 @@
-import { mount } from 'enzyme';
+import { mount } from '@hypothesis/frontend-testing';
import { render } from 'preact';
import { useUniqueId, useDocumentTitle } from '../hooks';
diff --git a/package.json b/package.json
index 63bca90310..2930ce5ecb 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"wouter-preact": "^3.3.5"
},
"devDependencies": {
- "@hypothesis/frontend-testing": "^1.2.2",
+ "@hypothesis/frontend-testing": "^1.3.1",
"@types/gapi": "^0.0.47",
"@types/google.accounts": "^0.0.15",
"@types/google.picker": "^0.0.44",
diff --git a/yarn.lock b/yarn.lock
index 0b64392472..a327f691c2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1994,14 +1994,14 @@ __metadata:
languageName: node
linkType: hard
-"@hypothesis/frontend-testing@npm:^1.2.2":
- version: 1.2.2
- resolution: "@hypothesis/frontend-testing@npm:1.2.2"
+"@hypothesis/frontend-testing@npm:^1.3.1":
+ version: 1.3.1
+ resolution: "@hypothesis/frontend-testing@npm:1.3.1"
dependencies:
axe-core: ^4.8.2
enzyme: ^3.11.0
preact: ^10.18.1
- checksum: b3892f6f1db87387aa60a420f0d2a7c89c5031a1375273cce6777aba335f5d01b223a5fee499f1fbf418044eea6c85684d8488647e8b353d9637c05ba29d15de
+ checksum: 36f814e13d164cf55bf3f2ea21f0522fa1cbe5464a010a520de0506e9a8116a7d514807f38a257cade0ba442e0d0c00b8093658e17698b8c23a044a9f55c0be1
languageName: node
linkType: hard
@@ -7288,7 +7288,7 @@ __metadata:
"@babel/preset-typescript": ^7.26.0
"@hypothesis/frontend-build": ^3.0.0
"@hypothesis/frontend-shared": ^8.10.1
- "@hypothesis/frontend-testing": ^1.2.2
+ "@hypothesis/frontend-testing": ^1.3.1
"@rollup/plugin-babel": ^6.0.4
"@rollup/plugin-commonjs": ^28.0.1
"@rollup/plugin-node-resolve": ^15.3.0