diff --git a/package-lock.json b/package-lock.json index d23d70102b..25aa65b02b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21090,6 +21090,208 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-testing-library": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.1.1.tgz", + "integrity": "sha512-nszC833aZPwB6tik1nMkbFqmtgIXTT0sfJEYs0zMBKMlkQ4to2079yUV96SvmLh00ovSBJI4pgcBC1TiIP8mXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "^8.15.0", + "@typescript-eslint/utils": "^8.15.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0", + "pnpm": "^9.14.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", + "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", + "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", + "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", + "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", + "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/eslint-plugin-unicorn": { "version": "56.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.0.tgz", @@ -43634,6 +43836,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-unicorn": "^56.0.0", "esmock": "^2.6.7", "events": "^3.3.0", @@ -52107,6 +52310,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-unicorn": "^56.0.0", "esmock": "^2.6.7", "events": "^3.3.0", @@ -62741,6 +62945,118 @@ "dev": true, "requires": {} }, + "eslint-plugin-testing-library": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.1.1.tgz", + "integrity": "sha512-nszC833aZPwB6tik1nMkbFqmtgIXTT0sfJEYs0zMBKMlkQ4to2079yUV96SvmLh00ovSBJI4pgcBC1TiIP8mXg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "^8.15.0", + "@typescript-eslint/utils": "^8.15.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", + "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0" + } + }, + "@typescript-eslint/types": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", + "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", + "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + } + }, + "@typescript-eslint/utils": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", + "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", + "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.21.0", + "eslint-visitor-keys": "^4.2.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, + "ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "requires": {} + } + } + }, "eslint-plugin-unicorn": { "version": "56.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.0.tgz", diff --git a/services/web/.eslintrc.js b/services/web/.eslintrc.js index 193313152c..ee585fcd8b 100644 --- a/services/web/.eslintrc.js +++ b/services/web/.eslintrc.js @@ -218,6 +218,24 @@ module.exports = { ], extends: ['plugin:cypress/recommended'], }, + { + // Frontend test specific rules + files: ['**/frontend/**/*.test.{js,jsx,ts,tsx}'], + plugins: ['testing-library'], + extends: ['plugin:testing-library/react'], + rules: { + 'testing-library/no-await-sync-events': 'off', + 'testing-library/no-await-sync-queries': 'off', + 'testing-library/no-container': 'off', + 'testing-library/no-node-access': 'off', + 'testing-library/no-render-in-lifecycle': 'off', + 'testing-library/no-wait-for-multiple-assertions': 'off', + 'testing-library/no-wait-for-side-effects': 'off', + 'testing-library/prefer-query-by-disappearance': 'off', + 'testing-library/prefer-screen-queries': 'off', + 'testing-library/render-result-naming-convention': 'off', + }, + }, { // Frontend specific rules files: [ @@ -244,7 +262,6 @@ module.exports = { globals: { __webpack_public_path__: true, $: true, - angular: true, ga: true, }, rules: { diff --git a/services/web/package.json b/services/web/package.json index 78672ef6d4..e416763d0a 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -298,6 +298,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-unicorn": "^56.0.0", "esmock": "^2.6.7", "events": "^3.3.0", diff --git a/services/web/test/frontend/features/editor-left-menu/components/actions-copy-project.test.jsx b/services/web/test/frontend/features/editor-left-menu/components/actions-copy-project.test.jsx index 5ec018b489..1a239e8147 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/actions-copy-project.test.jsx +++ b/services/web/test/frontend/features/editor-left-menu/components/actions-copy-project.test.jsx @@ -1,10 +1,9 @@ -import { fireEvent, screen } from '@testing-library/dom' +import { fireEvent, screen, waitFor } from '@testing-library/react' import fetchMock from 'fetch-mock' import sinon from 'sinon' import { expect } from 'chai' import ActionsCopyProject from '../../../../../frontend/js/features/editor-left-menu/components/actions-copy-project' import { renderWithEditorContext } from '../../../helpers/render-with-context' -import { waitFor } from '@testing-library/react' import * as useLocationModule from '../../../../../frontend/js/shared/hooks/use-location' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/actions-menu.test.jsx b/services/web/test/frontend/features/editor-left-menu/components/actions-menu.test.jsx index 3459c2d514..5f1b7d790c 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/actions-menu.test.jsx +++ b/services/web/test/frontend/features/editor-left-menu/components/actions-menu.test.jsx @@ -1,4 +1,4 @@ -import { screen, waitFor } from '@testing-library/dom' +import { screen, waitFor } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import ActionsMenu from '../../../../../frontend/js/features/editor-left-menu/components/actions-menu' diff --git a/services/web/test/frontend/features/editor-left-menu/components/actions-word-count.test.jsx b/services/web/test/frontend/features/editor-left-menu/components/actions-word-count.test.jsx index d0f04dfe19..86667b8f17 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/actions-word-count.test.jsx +++ b/services/web/test/frontend/features/editor-left-menu/components/actions-word-count.test.jsx @@ -1,4 +1,4 @@ -import { screen, waitFor } from '@testing-library/dom' +import { screen, waitFor } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import ActionsWordCount from '../../../../../frontend/js/features/editor-left-menu/components/actions-word-count' diff --git a/services/web/test/frontend/features/editor-left-menu/components/download-menu.test.jsx b/services/web/test/frontend/features/editor-left-menu/components/download-menu.test.jsx index 3bd9d2f9cb..065a9316a1 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/download-menu.test.jsx +++ b/services/web/test/frontend/features/editor-left-menu/components/download-menu.test.jsx @@ -1,4 +1,4 @@ -import { screen, waitFor } from '@testing-library/dom' +import { screen, waitFor } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import DownloadMenu from '../../../../../frontend/js/features/editor-left-menu/components/download-menu' diff --git a/services/web/test/frontend/features/editor-left-menu/components/help-menu.test.jsx b/services/web/test/frontend/features/editor-left-menu/components/help-menu.test.jsx index bd6306a41c..4831939e88 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/help-menu.test.jsx +++ b/services/web/test/frontend/features/editor-left-menu/components/help-menu.test.jsx @@ -1,4 +1,4 @@ -import { screen } from '@testing-library/dom' +import { screen } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import HelpMenu from '../../../../../frontend/js/features/editor-left-menu/components/help-menu' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-close-brackets.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-close-brackets.test.tsx index f25266fd33..d8f340bc62 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-close-brackets.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-close-brackets.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsAutoCloseBrackets from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-auto-close-brackets' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-complete.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-complete.test.tsx index eb8e6a6508..82539b39f6 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-complete.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-auto-complete.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsAutoComplete from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-auto-complete' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-compiler.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-compiler.test.tsx index 306ea7d007..8dd848a1f6 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-compiler.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-compiler.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsCompiler from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-compiler' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-dictionary.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-dictionary.test.tsx index e5c9556460..4b0fe63391 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-dictionary.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-dictionary.test.tsx @@ -1,8 +1,7 @@ -import { fireEvent, screen, within } from '@testing-library/dom' +import { fireEvent, screen, within, render } from '@testing-library/react' import { expect } from 'chai' import SettingsDictionary from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-dictionary' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-document.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-document.test.tsx index c46e3a6497..f7ade270cb 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-document.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-document.test.tsx @@ -1,10 +1,9 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsDocument from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-document' import { Folder } from '../../../../../../types/folder' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-editor-theme.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-editor-theme.test.tsx index e7039afbae..2b42838a3f 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-editor-theme.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-editor-theme.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsEditorTheme from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-editor-theme' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-family.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-family.test.tsx index 7fcf8431fb..2a896982c8 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-family.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-family.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsFontFamily from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-font-family' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-size.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-size.test.tsx index a0103e74a3..964e81ac46 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-size.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-font-size.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsFontSize from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-font-size' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-image-name.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-image-name.test.tsx index 3339767971..c59a44acef 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-image-name.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-image-name.test.tsx @@ -1,10 +1,9 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsImageName from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-image-name' import type { AllowedImageName } from '../../../../../../types/project-settings' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' describe('', function () { diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-keybindings.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-keybindings.test.tsx index c9b0f2a31d..d924a64c9c 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-keybindings.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-keybindings.test.tsx @@ -1,8 +1,7 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsKeybindings from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-keybindings' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-line-height.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-line-height.test.tsx index e79e034b9f..7bc18eb028 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-line-height.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-line-height.test.tsx @@ -1,8 +1,7 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsLineHeight from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-line-height' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-math-preview.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-math-preview.test.tsx index 414e149622..0fced14737 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-math-preview.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-math-preview.test.tsx @@ -1,8 +1,7 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsMathPreview from '@/features/editor-left-menu/components/settings/settings-math-preview' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-overall-theme.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-overall-theme.test.tsx index eb7c79a47c..8a5cc00338 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-overall-theme.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-overall-theme.test.tsx @@ -1,10 +1,9 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsOverallTheme from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-overall-theme' import type { OverallThemeMeta } from '../../../../../../types/project-settings' import getMeta from '@/utils/meta' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-pdf-viewer.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-pdf-viewer.test.tsx index fb79d3d82c..388016cbb3 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-pdf-viewer.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-pdf-viewer.test.tsx @@ -1,8 +1,7 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsPdfViewer from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-pdf-viewer' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-spell-check-language.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-spell-check-language.test.tsx index 57a448d0ee..ed7e4404ed 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-spell-check-language.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-spell-check-language.test.tsx @@ -1,9 +1,8 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsSpellCheckLanguage from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-spell-check-language' import type { SpellCheckLanguage } from '../../../../../../types/project-settings' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-syntax-validation.test.tsx b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-syntax-validation.test.tsx index d6d0e1d944..1c38ca039f 100644 --- a/services/web/test/frontend/features/editor-left-menu/components/settings/settings-syntax-validation.test.tsx +++ b/services/web/test/frontend/features/editor-left-menu/components/settings/settings-syntax-validation.test.tsx @@ -1,8 +1,7 @@ -import { screen, within } from '@testing-library/dom' +import { screen, within, render } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import SettingsSyntaxValidation from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-syntax-validation' -import { render } from '@testing-library/react' import { EditorProviders } from '../../../../helpers/editor-providers' import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context' diff --git a/services/web/test/frontend/features/project-list/components/load-more.test.tsx b/services/web/test/frontend/features/project-list/components/load-more.test.tsx index b102244a13..bc99584212 100644 --- a/services/web/test/frontend/features/project-list/components/load-more.test.tsx +++ b/services/web/test/frontend/features/project-list/components/load-more.test.tsx @@ -1,4 +1,4 @@ -import { fireEvent, screen, waitFor } from '@testing-library/dom' +import { fireEvent, screen, waitFor } from '@testing-library/react' import { expect } from 'chai' import fetchMock from 'fetch-mock' import LoadMore from '../../../../../frontend/js/features/project-list/components/load-more' diff --git a/services/web/test/frontend/features/project-list/components/notifications.test.tsx b/services/web/test/frontend/features/project-list/components/notifications.test.tsx index 07e605ab59..2728a5efdf 100644 --- a/services/web/test/frontend/features/project-list/components/notifications.test.tsx +++ b/services/web/test/frontend/features/project-list/components/notifications.test.tsx @@ -137,8 +137,6 @@ describe('', function () { expect(joinBtn.disabled).to.be.true - screen.debug() - await waitForElementToBeRemoved(() => screen.getByText('Loading')) expect(acceptMock.called()).to.be.true diff --git a/services/web/test/frontend/features/project-list/components/project-list-root.test.tsx b/services/web/test/frontend/features/project-list/components/project-list-root.test.tsx index 03b20d25ee..45cfe5fad5 100644 --- a/services/web/test/frontend/features/project-list/components/project-list-root.test.tsx +++ b/services/web/test/frontend/features/project-list/components/project-list-root.test.tsx @@ -1138,7 +1138,7 @@ describe('', function () { const yourProjectFilter = screen.getAllByText('Your Projects')[0] fireEvent.click(yourProjectFilter) - screen.findByText(copiedProjectName) + await screen.findByText(copiedProjectName) }) }) diff --git a/services/web/test/frontend/features/settings/components/emails/emails-section-actions.test.tsx b/services/web/test/frontend/features/settings/components/emails/emails-section-actions.test.tsx index d70f074d37..573a2c69b2 100644 --- a/services/web/test/frontend/features/settings/components/emails/emails-section-actions.test.tsx +++ b/services/web/test/frontend/features/settings/components/emails/emails-section-actions.test.tsx @@ -92,7 +92,7 @@ describe('email actions - make primary', function () { name: /make primary/i, })) as HTMLButtonElement - userEvent.hover(button.parentElement!) + await userEvent.hover(button.parentElement!) await screen.findByText( /Please confirm your affiliation before making this the primary/i @@ -109,7 +109,7 @@ describe('email actions - make primary', function () { name: /make primary/i, })) as HTMLButtonElement - userEvent.hover(button.parentElement!) + await userEvent.hover(button.parentElement!) await screen.findByText('Make this the primary email, used to log in', { exact: false, @@ -150,7 +150,7 @@ describe('email actions - make primary', function () { name: /make primary/i, })) as HTMLButtonElement[] - userEvent.hover(buttons[1].parentElement!) + await userEvent.hover(buttons[1].parentElement!) await screen.findByText( 'Please confirm your email by linking to your institutional account before making it the primary email', diff --git a/services/web/test/frontend/features/settings/components/linking/integration-widget.test.tsx b/services/web/test/frontend/features/settings/components/linking/integration-widget.test.tsx index 168421e6c7..54c1fc54f3 100644 --- a/services/web/test/frontend/features/settings/components/linking/integration-widget.test.tsx +++ b/services/web/test/frontend/features/settings/components/linking/integration-widget.test.tsx @@ -1,6 +1,6 @@ import { expect } from 'chai' import sinon from 'sinon' -import { screen, fireEvent, render, waitFor } from '@testing-library/react' +import { screen, fireEvent, render } from '@testing-library/react' import { IntegrationLinkingWidget } from '../../../../../../frontend/js/features/settings/components/linking/integration-widget' import * as eventTracking from '@/infrastructure/event-tracking' @@ -104,9 +104,7 @@ describe('', function () { hidden: false, }) fireEvent.click(cancelBtn) - await waitFor(() => - screen.getByRole('button', { name: 'Cancel', hidden: true }) - ) + await screen.findByRole('button', { name: 'Cancel', hidden: true }) }) }) }) diff --git a/services/web/test/frontend/features/settings/components/linking/sso-widget.test.tsx b/services/web/test/frontend/features/settings/components/linking/sso-widget.test.tsx index 7f65d5ea0f..5a0705b0a7 100644 --- a/services/web/test/frontend/features/settings/components/linking/sso-widget.test.tsx +++ b/services/web/test/frontend/features/settings/components/linking/sso-widget.test.tsx @@ -61,9 +61,7 @@ describe('', function () { hidden: false, }) fireEvent.click(cancelBtn) - await waitFor(() => - screen.getByRole('button', { name: 'Cancel', hidden: true }) - ) + await screen.findByRole('button', { name: 'Cancel', hidden: true }) expect(unlinkFunction).not.to.have.been.called }) }) @@ -119,13 +117,11 @@ describe('', function () { }) it('should display an error message ', async function () { - await waitFor(() => - screen.getByText('Something went wrong. Please try again.') - ) + await screen.findByText('Something went wrong. Please try again.') }) it('should display the unlink button ', async function () { - await waitFor(() => screen.getByRole('button', { name: 'Unlink' })) + await screen.findByRole('button', { name: 'Unlink' }) }) }) })