From 8224799b3a046b82ac110149dd9616648db351fa Mon Sep 17 00:00:00 2001 From: Syed Ali Abbas Zaidi Date: Mon, 1 Jan 2024 17:17:12 +0500 Subject: [PATCH] feat: migrate enzyme to rtl --- enzyme.config.js | 8 - jest.config.js | 2 +- package-lock.json | 755 ++++---- package.json | 4 +- setupTest.js | 1 + .../tests/EmailSettingsModal.test.jsx | 40 +- .../tests/BaseCourseCard.test.jsx | 14 +- .../tests/CourseEnrollments.test.jsx | 93 +- .../CourseEnrollments.test.jsx.snap | 165 +- .../program/hero/tests/Hero.test.jsx | 14 +- .../tests/__snapshots__/Hero.test.jsx.snap | 88 +- .../program/sidebar/tests/Links.test.jsx | 22 +- .../sidebar/tests/ProgramSidebar.test.jsx | 20 +- .../ProgramSidebar.test.jsx.snap | 105 +- .../tests/ProgramListPage.test.jsx | 72 +- .../ProgramListPage.test.jsx.snap | 1608 ++++++++--------- src/components/site-header/Header.test.jsx | 10 +- .../__snapshots__/Header.test.jsx.snap | 276 ++- 18 files changed, 1633 insertions(+), 1664 deletions(-) delete mode 100644 enzyme.config.js create mode 100644 setupTest.js diff --git a/enzyme.config.js b/enzyme.config.js deleted file mode 100644 index f2784d3c..00000000 --- a/enzyme.config.js +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ - -import { configure } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; - -configure({ adapter: new Adapter() }); - -process.env.LMS_BASE_URL = 'http://localhost:18000'; diff --git a/jest.config.js b/jest.config.js index 2fa09757..51c25a54 100644 --- a/jest.config.js +++ b/jest.config.js @@ -16,5 +16,5 @@ module.exports = { __PATH_PREFIX__: '', }, testURL: 'http://localhost', - setupFiles: ['/enzyme.config.js'], + setupFiles: ['/setupTest.js'], }; diff --git a/package-lock.json b/package-lock.json index eb0183ea..a849f4bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,11 +59,10 @@ "@babel/eslint-parser": "^7.18.2", "@babel/preset-react": "^7.17.12", "@edx/eslint-config": "^3.1.0", - "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", + "@testing-library/react": "^12.1.5", "autoprefixer": "^9.4.5", "axios": "^0.21.1", "axios-mock-adapter": "^1.19.0", - "enzyme": "^3.9.0", "es-check": "^5.0.0", "eslint": "^8.18.0", "eslint-config-airbnb": "^19.0.4", @@ -75,7 +74,6 @@ "identity-obj-proxy": "^3.0.0", "jest": "^24.5.0", "prettier": "^1.16.4", - "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.1", "sass": "^1.49.9" } @@ -7139,6 +7137,195 @@ "node": ">=10" } }, + "node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "<18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "<18.0.0", + "react-dom": "<18.0.0" + } + }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", @@ -7185,6 +7372,12 @@ "@types/estree": "*" } }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, "node_modules/@types/babel__core": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", @@ -7592,6 +7785,26 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-dom": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz", + "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==", + "dev": true, + "dependencies": { + "@types/react": "^17" + } + }, + "node_modules/@types/react-dom/node_modules/@types/react": { + "version": "17.0.74", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.74.tgz", + "integrity": "sha512-nBtFGaeTMzpiL/p73xbmCi00SiCQZDTJUk9ZuHOLtil3nI+y7l269LHkHIAYpav99ZwGnPJzuJsJpfLXjiQ52g==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, "node_modules/@types/react-redux": { "version": "7.1.25", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.25.tgz", @@ -8074,46 +8287,6 @@ } } }, - "node_modules/@wojtekmaj/enzyme-adapter-react-17": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.8.0.tgz", - "integrity": "sha512-zeUGfQRziXW7R7skzNuJyi01ZwuKCH8WiBNnTgUJwdS/CURrJwAhWsfW7nG7E30ak8Pu3ZwD9PlK9skBfAoOBw==", - "dev": true, - "dependencies": { - "@wojtekmaj/enzyme-adapter-utils": "^0.2.0", - "enzyme-shallow-equal": "^1.0.0", - "has": "^1.0.0", - "prop-types": "^15.7.0", - "react-is": "^17.0.0", - "react-test-renderer": "^17.0.0" - }, - "funding": { - "url": "https://github.com/wojtekmaj/enzyme-adapter-react-17?sponsor=1" - }, - "peerDependencies": { - "enzyme": "^3.0.0", - "react": "^17.0.0-0", - "react-dom": "^17.0.0-0" - } - }, - "node_modules/@wojtekmaj/enzyme-adapter-utils": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.2.0.tgz", - "integrity": "sha512-ZvZm9kZxZEKAbw+M1/Q3iDuqQndVoN8uLnxZ8bzxm7KgGTBejrGRoJAp8f1EN8eoO3iAjBNEQnTDW/H4Ekb0FQ==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.0", - "has": "^1.0.0", - "object.fromentries": "^2.0.0", - "prop-types": "^15.7.0" - }, - "funding": { - "url": "https://github.com/wojtekmaj/enzyme-adapter-utils?sponsor=1" - }, - "peerDependencies": { - "react": "^17.0.0-0" - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -8624,25 +8797,6 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.filter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.2.tgz", - "integrity": "sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -10278,12 +10432,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10464,44 +10619,6 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/child_process": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", @@ -12242,6 +12359,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "peer": true, "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -12661,6 +12779,19 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -12937,12 +13068,6 @@ "node": ">=8" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", - "dev": true - }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -12982,6 +13107,12 @@ "node": ">=6.0.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -13003,6 +13134,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "peer": true, "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -13036,6 +13168,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "peer": true, "dependencies": { "domelementtype": "^2.3.0" }, @@ -13050,6 +13183,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "peer": true, "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -13328,6 +13462,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "peer": true, "engines": { "node": ">=0.12" }, @@ -13346,52 +13481,6 @@ "node": ">=4" } }, - "node_modules/enzyme": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", - "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", - "dev": true, - "dependencies": { - "array.prototype.flat": "^1.2.3", - "cheerio": "^1.0.0-rc.3", - "enzyme-shallow-equal": "^1.0.1", - "function.prototype.name": "^1.1.2", - "has": "^1.0.3", - "html-element-map": "^1.2.0", - "is-boolean-object": "^1.0.1", - "is-callable": "^1.1.5", - "is-number-object": "^1.0.4", - "is-regex": "^1.0.5", - "is-string": "^1.0.5", - "is-subset": "^0.1.1", - "lodash.escape": "^4.0.1", - "lodash.isequal": "^4.5.0", - "object-inspect": "^1.7.0", - "object-is": "^1.0.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1", - "object.values": "^1.1.1", - "raf": "^3.4.1", - "rst-selector-parser": "^2.2.3", - "string.prototype.trim": "^1.2.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/enzyme-shallow-equal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", - "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", - "dev": true, - "dependencies": { - "has": "^1.0.3", - "object-is": "^1.1.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/eol": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", @@ -13500,6 +13589,32 @@ "node": ">= 4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/es-module-lexer": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", @@ -15511,9 +15626,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -19374,14 +19492,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20014,6 +20132,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -20144,19 +20273,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/html-element-map": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", - "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", - "dev": true, - "dependencies": { - "array.prototype.filter": "^1.0.0", - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -20349,25 +20465,6 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -21319,8 +21416,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -21619,6 +21715,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -21805,6 +21910,15 @@ "node": ">=6" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -21849,12 +21963,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", - "dev": true - }, "node_modules/is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", @@ -21934,6 +22042,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -21945,6 +22062,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -23896,7 +24026,8 @@ "node_modules/lodash.escape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "peer": true }, "node_modules/lodash.every": { "version": "4.6.0", @@ -23929,12 +24060,6 @@ "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", "peer": true }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -24165,6 +24290,15 @@ "es5-ext": "~0.10.2" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/mailto-link": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", @@ -25483,12 +25617,6 @@ "node": "*" } }, - "node_modules/moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "dev": true - }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -25658,34 +25786,6 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" - }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" - } - }, - "node_modules/nearley/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -26904,31 +27004,6 @@ "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/parseqs": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", @@ -28438,34 +28513,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dev": true, - "dependencies": { - "performance-now": "^2.1.0" - } - }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", - "dev": true - }, - "node_modules/randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dev": true, - "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -29142,19 +29189,6 @@ "react": ">=15" } }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-side-effect": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", @@ -29197,21 +29231,6 @@ "react": "^16.8.3 || ^17.0.0-0 || ^18.0.0" } }, - "node_modules/react-test-renderer": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", - "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^17.0.2", - "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -29520,13 +29539,13 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -30432,16 +30451,6 @@ "rimraf": "bin.js" } }, - "node_modules/rst-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", - "integrity": "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==", - "dev": true, - "dependencies": { - "lodash.flattendeep": "^4.4.0", - "nearley": "^2.7.10" - } - }, "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -31046,6 +31055,33 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -32114,6 +32150,18 @@ "node": ">=0.10.0" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", @@ -35172,18 +35220,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" diff --git a/package.json b/package.json index 2e4806a5..6dcbac95 100644 --- a/package.json +++ b/package.json @@ -55,11 +55,10 @@ "@babel/eslint-parser": "^7.18.2", "@babel/preset-react": "^7.17.12", "@edx/eslint-config": "^3.1.0", - "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", + "@testing-library/react": "^12.1.5", "autoprefixer": "^9.4.5", "axios": "^0.21.1", "axios-mock-adapter": "^1.19.0", - "enzyme": "^3.9.0", "es-check": "^5.0.0", "eslint": "^8.18.0", "eslint-config-airbnb": "^19.0.4", @@ -71,7 +70,6 @@ "identity-obj-proxy": "^3.0.0", "jest": "^24.5.0", "prettier": "^1.16.4", - "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.1", "sass": "^1.49.9" }, diff --git a/setupTest.js b/setupTest.js new file mode 100644 index 00000000..56948dcf --- /dev/null +++ b/setupTest.js @@ -0,0 +1 @@ +process.env.LMS_BASE_URL = 'http://localhost:18000'; diff --git a/src/components/course-enrollments/course-cards/email-settings/tests/EmailSettingsModal.test.jsx b/src/components/course-enrollments/course-cards/email-settings/tests/EmailSettingsModal.test.jsx index b1b96b92..91026b2b 100644 --- a/src/components/course-enrollments/course-cards/email-settings/tests/EmailSettingsModal.test.jsx +++ b/src/components/course-enrollments/course-cards/email-settings/tests/EmailSettingsModal.test.jsx @@ -1,8 +1,7 @@ import React from 'react'; -import { mount } from 'enzyme'; +import { fireEvent, render, screen } from '@testing-library/react'; import thunk from 'redux-thunk'; import configureMockStore from 'redux-mock-store'; -import { StatefulButton } from '@edx/paragon'; import { EmailSettingsModal } from '../EmailSettingsModal'; @@ -18,7 +17,7 @@ describe('', () => { data: {}, }); - wrapper = mount(( + wrapper = render(( ', () => { // is initially `false` until the modal is opened, at which point it's // set to whatever the correct value is for that particular course run. // Setting the `hasEmailsEnabled` prop here simulates that behavior. - wrapper.setProps({ - hasEmailsEnabled: true, - }); + wrapper.rerender(( + {}} + courseRunId="my+course+key" + updateEmailSettings={mockUpdateEmailSettings} + hasEmailsEnabled + /> + )); }); it('statefulbutton component state is initially set to default and disabled', () => { - const defaultState = 'default'; - expect(wrapper.find(StatefulButton).prop('state')).toEqual(defaultState); - expect(wrapper.find(StatefulButton).prop('disabledStates')).toContain(defaultState); + const buttonElement = screen.getAllByRole('button'); + + expect(buttonElement[buttonElement.length - 1].getAttribute('aria-disabled')).toEqual('true'); + expect(buttonElement[buttonElement.length - 1].disabled).toEqual(false); + expect(screen.getByText('Save')).toBeTruthy(); }); it('statefulbutton component state is set to complete after click event', async () => { // Note: The following line is needed to properly resolve the // `updateEmailSettings` promise. const flushPromises = () => new Promise(setImmediate); + const buttonElement = screen.getAllByRole('button'); + + expect(screen.getByText('Save')).toBeTruthy(); + expect(screen.queryByText('Saved')).toBeFalsy(); - expect(wrapper.find(StatefulButton).prop('state')).toEqual('default'); - wrapper.find('input[type="checkbox"]').simulate('change', { target: { checked: false } }); - wrapper.find(StatefulButton).simulate('click'); + fireEvent.click(screen.getByRole('checkbox')); + fireEvent.click(buttonElement[buttonElement.length - 1]); await flushPromises(); - wrapper.update(); + expect(mockUpdateEmailSettings.mock.calls.length).toBe(1); - expect(wrapper.find(StatefulButton).prop('state')).toEqual('complete'); + expect(screen.getByText('Saved')).toBeTruthy(); + expect(screen.queryByText('Save')).toBeFalsy(); }); }); diff --git a/src/components/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx b/src/components/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx index 02a2139a..8a4eb2fd 100644 --- a/src/components/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx +++ b/src/components/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx @@ -1,6 +1,6 @@ /* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; -import { mount } from 'enzyme'; +import { fireEvent, render, screen } from '@testing-library/react'; import thunk from 'redux-thunk'; import { Provider } from 'react-redux'; import configureMockStore from 'redux-mock-store'; @@ -26,7 +26,7 @@ describe('', () => { const pageContext = { enterpriseName: 'test-enterprise-name', }; - wrapper = mount(( + wrapper = render(( ', () => { )); // open email settings modal - wrapper.find('Dropdown').find('button.dropdown-toggle').simulate('click'); - wrapper.find('Dropdown').find('button.dropdown-item').simulate('click'); - expect(wrapper.find('BaseCourseCard').state('modals').emailSettings.open).toBeTruthy(); + fireEvent.click(wrapper.container.querySelector('button.dropdown-toggle')); + fireEvent.click(wrapper.container.querySelector('button.dropdown-item')); + expect(screen.getByText('Email Settings for edX Demonstration Course')).toBeTruthy(); }); it('test modal close/cancel', () => { - wrapper.find('EmailSettingsModal').find('.modal-footer .btn-link').first().simulate('click'); - expect(wrapper.find('BaseCourseCard').state('modals').emailSettings.open).toBeFalsy(); + fireEvent.click(screen.getAllByText('Close')[1]); + expect(screen.queryByText('Email Settings for edX Demonstration Course')).toBeFalsy(); }); }); }); diff --git a/src/components/course-enrollments/tests/CourseEnrollments.test.jsx b/src/components/course-enrollments/tests/CourseEnrollments.test.jsx index 7cfd15b3..1bb2e82c 100644 --- a/src/components/course-enrollments/tests/CourseEnrollments.test.jsx +++ b/src/components/course-enrollments/tests/CourseEnrollments.test.jsx @@ -1,8 +1,7 @@ /* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { Provider } from 'react-redux'; -import { mount } from 'enzyme'; -import renderer from 'react-test-renderer'; +import { fireEvent, render } from '@testing-library/react'; import configureMockStore from 'redux-mock-store'; import thunk from 'redux-thunk'; import { breakpoints } from '@edx/paragon'; @@ -38,12 +37,12 @@ describe('', () => { describe('renders course enrollments correctly', () => { it('with no course enrollments', () => { const pageContext = {}; - const wrapper = mount(( + const wrapper = render(( )); - expect(wrapper.exists('.course-section')).toBeFalsy(); + expect(wrapper.container.querySelector('.course-section')).toBeFalsy(); }); it('with valid course enrollments', () => { @@ -86,7 +85,7 @@ describe('', () => { data: null, }, }); - const wrapper = mount(( + const wrapper = render(( ', () => { )); - expect(wrapper.html()).not.toBeNull(); - expect(wrapper.find('.course-section').length).toEqual(2); - expect(wrapper.find('.course-section').first().find('.course').length).toEqual(1); - expect(wrapper.find('.course-section').last().find('.course').length).toEqual(1); + const courseSection = wrapper.container.querySelectorAll('.course-section'); + + expect(wrapper.container.children).not.toBeNull(); + expect(courseSection.length).toEqual(2); + expect(courseSection[0].querySelectorAll('.course').length).toEqual(1); + expect(courseSection[courseSection.length - 1].querySelectorAll('.course').length).toEqual(1); }); it('with error', () => { const pageContext = {}; - const tree = renderer - .create(( - - - - )) - .toJSON(); + const { container: tree } = render( + + + , + ); expect(tree).toMatchSnapshot(); }); it('with loading', () => { const pageContext = {}; - const tree = renderer - .create(( + const { container: tree } = render( + + + , + ); + expect(tree).toMatchSnapshot(); + }); + + it('with mark course as complete success status alert', () => { + const pageContext = {}; + const { container: tree } = render( + - )) - .toJSON(); - expect(tree).toMatchSnapshot(); - }); + , + ); - it('with mark course as complete success status alert', () => { - const pageContext = {}; - const tree = renderer - .create(( - - - - - - )) - .toJSON(); - // TODO: why is this an array? - expect(tree[0]).toMatchSnapshot(); + expect(tree).toMatchSnapshot(); }); }); @@ -157,26 +152,26 @@ describe('', () => { it('is not shown at screen widths greater than or equal to large breakpoint', () => { const pageContext = {}; - wrapper = mount(( + wrapper = render(( )); - expect(wrapper.find('.sidebar-example').exists()).toBeFalsy(); + expect(wrapper.container.querySelector('.sidebar-example')).toBeFalsy(); }); it('is shown at screen widths less than large breakpoint', () => { const pageContext = {}; - wrapper = mount(( + wrapper = render(( )); - expect(wrapper.find('.sidebar-example').exists()).toBeTruthy(); + expect(wrapper.container.querySelector('.sidebar-example')).toBeTruthy(); }); }); @@ -189,7 +184,7 @@ describe('', () => { it('for program page', () => { const programUUID = 'test-program-uuid'; const pageContext = { programUUID }; - mount(( + render(( @@ -205,7 +200,7 @@ describe('', () => { const pageContext = { enterpriseUUID: 'test-enterprise-uuid', }; - const wrapper = mount(( + const wrapper = render(( ', () => { )); - wrapper.find('.alert-success .btn').simulate('click'); + fireEvent.click(wrapper.container.querySelector('.alert-success .btn')); expect(mockModifyIsMarkCourseCompleteSuccess).toBeCalledTimes(1); }); }); diff --git a/src/components/course-enrollments/tests/__snapshots__/CourseEnrollments.test.jsx.snap b/src/components/course-enrollments/tests/__snapshots__/CourseEnrollments.test.jsx.snap index 704a405f..5ebe4eab 100644 --- a/src/components/course-enrollments/tests/__snapshots__/CourseEnrollments.test.jsx.snap +++ b/src/components/course-enrollments/tests/__snapshots__/CourseEnrollments.test.jsx.snap @@ -1,39 +1,41 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[` renders course enrollments correctly with error 1`] = ` -
- - - - - +
@@ -41,73 +43,82 @@ exports[` renders course enrollments correctly with error 1 `; exports[` renders course enrollments correctly with loading 1`] = ` -
+
- - loading course enrollments - + + loading course enrollments + +
`; exports[` renders course enrollments correctly with mark course as complete success status alert 1`] = ` -
- - - - - +
+
+
`; diff --git a/src/components/program/hero/tests/Hero.test.jsx b/src/components/program/hero/tests/Hero.test.jsx index dcbcd50c..2fe79498 100644 --- a/src/components/program/hero/tests/Hero.test.jsx +++ b/src/components/program/hero/tests/Hero.test.jsx @@ -1,6 +1,6 @@ /* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; -import renderer from 'react-test-renderer'; +import { render } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import Hero from '../Hero'; @@ -19,13 +19,11 @@ describe('', () => { }, }; - const tree = renderer - .create(( - - - - )) - .toJSON(); + const { container: tree } = render( + + + , + ); expect(tree).toMatchSnapshot(); }); }); diff --git a/src/components/program/hero/tests/__snapshots__/Hero.test.jsx.snap b/src/components/program/hero/tests/__snapshots__/Hero.test.jsx.snap index 2f67b983..5aaec169 100644 --- a/src/components/program/hero/tests/__snapshots__/Hero.test.jsx.snap +++ b/src/components/program/hero/tests/__snapshots__/Hero.test.jsx.snap @@ -1,74 +1,58 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[` renders correctly 1`] = ` -
+
-
-
-
+ class="background d-flex" + > +
+
+
-

- Example Title -

+

+ Example Title +

+
-
-
- Avengers logo +
diff --git a/src/components/program/sidebar/tests/Links.test.jsx b/src/components/program/sidebar/tests/Links.test.jsx index 42828639..ad76a532 100644 --- a/src/components/program/sidebar/tests/Links.test.jsx +++ b/src/components/program/sidebar/tests/Links.test.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { shallow } from 'enzyme'; +import { fireEvent, render } from '@testing-library/react'; import Links from '../Links'; @@ -17,7 +17,7 @@ describe('', () => { let wrapper; beforeEach(() => { - wrapper = shallow(( + wrapper = render(( ', () => { }); it('renders at most 5 links by default', () => { - const listItems = wrapper.find('li'); + const listItems = wrapper.container.querySelectorAll('li'); expect(listItems).toHaveLength(5); - expect(wrapper.find('.toggle-show-all-btn').exists()).toBeTruthy(); - expect(wrapper.find('.toggle-show-all-btn').find('span').text()).toEqual('show all 8'); + expect(wrapper.container.querySelector('.toggle-show-all-btn')).toBeTruthy(); + expect(wrapper.container.querySelector('.toggle-show-all-btn').querySelector('span').textContent).toEqual('show all 8'); }); it('renders all links when toggled', () => { - wrapper.find('.toggle-show-all-btn').simulate('click'); - const listItems = wrapper.find('li'); + fireEvent.click(wrapper.container.querySelector('.toggle-show-all-btn')); + const listItems = wrapper.container.querySelectorAll('li'); expect(listItems).toHaveLength(8); - expect(wrapper.find('.toggle-show-all-btn').find('span').text()).toEqual('show less'); + expect(wrapper.container.querySelector('.toggle-show-all-btn').querySelector('span').textContent).toEqual('show less'); }); it('renders less than 5 links correctly', () => { const links = linksData.links.slice(0, 3); - wrapper = shallow(( + wrapper = render(( )); - const listItems = wrapper.find('li'); + const listItems = wrapper.container.querySelectorAll('li'); expect(listItems).toHaveLength(3); - expect(wrapper.find('.toggle-show-all-btn').exists()).toBeFalsy(); + expect(wrapper.container.querySelector('.toggle-show-all-btn')).toBeFalsy(); }); }); diff --git a/src/components/program/sidebar/tests/ProgramSidebar.test.jsx b/src/components/program/sidebar/tests/ProgramSidebar.test.jsx index d4fb08eb..7bcb51c6 100644 --- a/src/components/program/sidebar/tests/ProgramSidebar.test.jsx +++ b/src/components/program/sidebar/tests/ProgramSidebar.test.jsx @@ -1,6 +1,6 @@ /* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; -import renderer from 'react-test-renderer'; +import { render } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import ProgramSidebar from '../ProgramSidebar'; @@ -11,13 +11,11 @@ describe('', () => { programDocuments: null, externalProgramWebsite: 'https://edx.org', }; - const tree = renderer - .create(( - - - - )) - .toJSON(); + const { container: tree } = render( + + + , + ); expect(tree).toMatchSnapshot(); }); @@ -43,11 +41,11 @@ describe('', () => { }, externalProgramWebsite: 'https://edx.org', }; - const tree = renderer.create(( + const { container: tree } = render( - - )).toJSON(); + , + ); expect(tree).toMatchSnapshot(); }); }); diff --git a/src/components/program/sidebar/tests/__snapshots__/ProgramSidebar.test.jsx.snap b/src/components/program/sidebar/tests/__snapshots__/ProgramSidebar.test.jsx.snap index 81a5be9a..f598d86f 100644 --- a/src/components/program/sidebar/tests/__snapshots__/ProgramSidebar.test.jsx.snap +++ b/src/components/program/sidebar/tests/__snapshots__/ProgramSidebar.test.jsx.snap @@ -2,49 +2,48 @@ exports[` renders correctly 1`] = `
-

- Get Technical Support -

-

- +

- Go to edX help center - +

+ - - - -

+ Go to edX help center + + + + +

+

`; exports[` renders correctly with links 1`] = ` -Array [ +

Program Documents

@@ -52,32 +51,29 @@ Array [ aria-label="program documents" > -
, +
, -] +
+
`; diff --git a/src/components/programs-list/tests/ProgramListPage.test.jsx b/src/components/programs-list/tests/ProgramListPage.test.jsx index 2587ed5f..0638c1ce 100644 --- a/src/components/programs-list/tests/ProgramListPage.test.jsx +++ b/src/components/programs-list/tests/ProgramListPage.test.jsx @@ -1,7 +1,5 @@ import React from 'react'; -import renderer from 'react-test-renderer'; -import { shallow } from 'enzyme'; -import { Alert } from '@edx/paragon'; +import { render, screen } from '@testing-library/react'; import { IntlProvider } from 'react-intl'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { ProgramListPage } from '../ProgramListPage'; @@ -31,33 +29,29 @@ describe('ProgramListPage', () => { }; it('correctly renders the loading page', () => { - const tree = renderer - .create(( - - - - )) - .toJSON(); + const { container: tree } = render( + + + , + ); expect(tree).toMatchSnapshot(); }); it('renders fetching program error page when there are issues fetching the user programs', () => { - const tree = renderer - .create(( - - - - )) - .toJSON(); + const { container: tree } = render( + + + , + ); expect(tree).toMatchSnapshot(); }); @@ -75,7 +69,7 @@ describe('ProgramListPage', () => { }, ]; - const wrapper = shallow(( + const wrapper = render(( { /> )); - wrapper.setProps({ enrolledPrograms: data }); + wrapper.rerender(); - expect(wrapper.find('.table-responsive').exists()).toBeTruthy(); - expect(wrapper.find('tbody tr').length).toEqual(2); + expect(wrapper.container.querySelector('.table-responsive')).toBeTruthy(); + expect(wrapper.container.querySelectorAll('tbody tr').length).toEqual(2); }); it('renders error page when there are no valid programs', () => { @@ -103,7 +102,7 @@ describe('ProgramListPage', () => { }, ]; - const wrapper = shallow(( + const wrapper = render(( { /> )); - wrapper.setProps({ enrolledPrograms: data }); + wrapper.rerender(); - expect(wrapper.find('.table-responsive').exists()).toBeFalsy(); - expect(wrapper.find(Alert).exists()).toBeTruthy(); + expect(wrapper.container.querySelector('.table-responsive')).toBeFalsy(); + expect(screen.getByRole('alert')).toBeTruthy(); }); }); diff --git a/src/components/programs-list/tests/__snapshots__/ProgramListPage.test.jsx.snap b/src/components/programs-list/tests/__snapshots__/ProgramListPage.test.jsx.snap index 35561d52..3b20a6a6 100644 --- a/src/components/programs-list/tests/__snapshots__/ProgramListPage.test.jsx.snap +++ b/src/components/programs-list/tests/__snapshots__/ProgramListPage.test.jsx.snap @@ -2,887 +2,837 @@ exports[`ProgramListPage correctly renders the loading page 1`] = `
-
-
+
- - loading program enrollments - + + loading program enrollments + +
-
- -
- + +
`; exports[`ProgramListPage renders fetching program error page when there are issues fetching the user programs 1`] = `
-
-
+
-
-
-
- + +
`; diff --git a/src/components/site-header/Header.test.jsx b/src/components/site-header/Header.test.jsx index 09156478..17eb0b91 100644 --- a/src/components/site-header/Header.test.jsx +++ b/src/components/site-header/Header.test.jsx @@ -1,7 +1,7 @@ /* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { IntlProvider } from '@edx/frontend-platform/i18n'; -import renderer from 'react-test-renderer'; +import { render } from '@testing-library/react'; import { Context as ResponsiveContext } from 'react-responsive'; import { AppContext } from '@edx/frontend-platform/react'; @@ -53,9 +53,9 @@ describe('
', () => { ); - const wrapper = renderer.create(component); + const { container: wrapper } = render(component); - expect(wrapper.toJSON()).toMatchSnapshot(); + expect(wrapper).toMatchSnapshot(); }); it('renders correctly for authenticated mobile', () => { @@ -85,8 +85,8 @@ describe('
', () => { ); - const wrapper = renderer.create(component); + const { container: wrapper } = render(component); - expect(wrapper.toJSON()).toMatchSnapshot(); + expect(wrapper).toMatchSnapshot(); }); }); diff --git a/src/components/site-header/__snapshots__/Header.test.jsx.snap b/src/components/site-header/__snapshots__/Header.test.jsx.snap index 58bbe587..18095ab6 100644 --- a/src/components/site-header/__snapshots__/Header.test.jsx.snap +++ b/src/components/site-header/__snapshots__/Header.test.jsx.snap @@ -1,183 +1,159 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`
renders correctly for authenticated desktop 1`] = ` -
- - Skip to main content - -
+
+ + Skip to main content +
- - + mysite + +
+ +
- -
+
+ `; exports[`
renders correctly for authenticated mobile 1`] = ` -
- - Skip to main content - - -
-
+
- - -
-
+ + + + + +
+ `;