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