diff --git a/mailpoet/RoboFile.php b/mailpoet/RoboFile.php index 70c6e4d560..7724add45a 100644 --- a/mailpoet/RoboFile.php +++ b/mailpoet/RoboFile.php @@ -388,7 +388,7 @@ class RoboFile extends \Robo\Tasks { } public function testJavascript($xmlOutputFile = null) { - $command = './node_modules/.bin/mocha --recursive --require tests/javascript/babel-register.js tests/javascript --extension spec.js --extension spec.ts'; + $command = './node_modules/.bin/mocha --recursive --require tests/javascript/mocha-env.mjs tests/javascript --extension spec.ts'; if (!empty($xmlOutputFile)) { $command .= sprintf( diff --git a/mailpoet/package.json b/mailpoet/package.json index 28ae6537d5..2e923e8f26 100644 --- a/mailpoet/package.json +++ b/mailpoet/package.json @@ -9,7 +9,7 @@ "scss": "sass assets/css/src/:assets/dist/css/ --style compressed", "stylelint": "stylelint --fix", "stylelint-check": "stylelint", - "test": "env NODE_PATH=$NODE_PATH:./assets/js/src mocha --recursive --require tests/javascript/babel-register.js tests/javascript --extension spec.js --extension spec.ts", + "test": "env NODE_PATH=$NODE_PATH:./assets/js/src mocha --recursive --require tests/javascript/mocha-env.mjs tests/javascript --extension spec.ts", "check-types": "NODE_OPTIONS=--max_old_space_size=2048 tsc --noEmit", "storybook": "start-storybook -s ./ -p 8083", "build-storybook": "build-storybook", diff --git a/mailpoet/tests/javascript/babel-register.js b/mailpoet/tests/javascript/babel-register.js deleted file mode 100644 index 7610e62842..0000000000 --- a/mailpoet/tests/javascript/babel-register.js +++ /dev/null @@ -1 +0,0 @@ -require('@babel/register')({ extensions: ['.js', '.jsx', '.ts', '.tsx'] }); diff --git a/mailpoet/tests/javascript/form-editor/store/blocks-to-form-body.spec.ts b/mailpoet/tests/javascript/form-editor/store/blocks-to-form-body.spec.ts index 6c4d1feaa2..c6ea7ad9df 100644 --- a/mailpoet/tests/javascript/form-editor/store/blocks-to-form-body.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/blocks-to-form-body.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { partial, isEmpty, isUndefined } from 'lodash'; import { blocksToFormBodyFactory } from '../../../../assets/js/src/form-editor/store/blocks-to-form-body'; import { diff --git a/mailpoet/tests/javascript/form-editor/store/form-body-to-blocks.spec.ts b/mailpoet/tests/javascript/form-editor/store/form-body-to-blocks.spec.ts index 9354b9f9ce..836c038c6f 100644 --- a/mailpoet/tests/javascript/form-editor/store/form-body-to-blocks.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/form-body-to-blocks.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { partial, isEmpty, isUndefined } from 'lodash'; import { formBodyToBlocksFactory } from '../../../../assets/js/src/form-editor/store/form-body-to-blocks.jsx'; diff --git a/mailpoet/tests/javascript/form-editor/store/form-validator.spec.ts b/mailpoet/tests/javascript/form-editor/store/form-validator.spec.ts index cf83d83255..33755930e1 100644 --- a/mailpoet/tests/javascript/form-editor/store/form-validator.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/form-validator.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { isEmpty } from 'lodash'; import { validateForm as validate } from '../../../../assets/js/src/form-editor/store/form-validator.jsx'; diff --git a/mailpoet/tests/javascript/form-editor/store/map-form-data-after-loading.spec.ts b/mailpoet/tests/javascript/form-editor/store/map-form-data-after-loading.spec.ts index e983568037..20b66500f1 100644 --- a/mailpoet/tests/javascript/form-editor/store/map-form-data-after-loading.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/map-form-data-after-loading.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { mapFormDataAfterLoading as map } from '../../../../assets/js/src/form-editor/store/map-form-data-after-loading.jsx'; const data = { diff --git a/mailpoet/tests/javascript/form-editor/store/map-form-data-before-saving.spec.ts b/mailpoet/tests/javascript/form-editor/store/map-form-data-before-saving.spec.ts index 3f1813066e..c028c194ca 100644 --- a/mailpoet/tests/javascript/form-editor/store/map-form-data-before-saving.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/map-form-data-before-saving.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { mapFormDataBeforeSaving as map } from '../../../../assets/js/src/form-editor/store/map-form-data-before-saving.jsx'; const data = { diff --git a/mailpoet/tests/javascript/form-editor/store/reducers/create-custom-field-started.spec.ts b/mailpoet/tests/javascript/form-editor/store/reducers/create-custom-field-started.spec.ts index 1f03189fea..d27d5b0786 100644 --- a/mailpoet/tests/javascript/form-editor/store/reducers/create-custom-field-started.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/reducers/create-custom-field-started.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { createCustomFieldStartedFactory } from '../../../../../assets/js/src/form-editor/store/reducers/create-custom-field-started'; import { CustomFieldStartedAction } from '../../../../../assets/js/src/form-editor/store/actions-types'; import { createCustomFieldMock, createStateMock } from '../mocks/partial-mocks'; diff --git a/mailpoet/tests/javascript/form-editor/store/reducers/history-record.spec.ts b/mailpoet/tests/javascript/form-editor/store/reducers/history-record.spec.ts index b6effd1fe0..395a0edb95 100644 --- a/mailpoet/tests/javascript/form-editor/store/reducers/history-record.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/reducers/history-record.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { createHistoryRecord, historyRedo, diff --git a/mailpoet/tests/javascript/form-editor/store/reducers/save-form-started.spec.ts b/mailpoet/tests/javascript/form-editor/store/reducers/save-form-started.spec.ts index 647ca4cebe..5ab064d2ec 100644 --- a/mailpoet/tests/javascript/form-editor/store/reducers/save-form-started.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/reducers/save-form-started.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { identity } from 'lodash'; import { saveFormStartedFactory } from '../../../../../assets/js/src/form-editor/store/reducers/save-form-started'; import { createStateMock } from '../mocks/partial-mocks'; diff --git a/mailpoet/tests/javascript/form-editor/store/reducers/toggle-sidebar-panel.spec.ts b/mailpoet/tests/javascript/form-editor/store/reducers/toggle-sidebar-panel.spec.ts index 71a4dfdfb7..1fea1c2093 100644 --- a/mailpoet/tests/javascript/form-editor/store/reducers/toggle-sidebar-panel.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/reducers/toggle-sidebar-panel.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { toggleSidebarPanel as reducer } from '../../../../../assets/js/src/form-editor/store/reducers/toggle-sidebar-panel'; import { ToggleSidebarPanelAction } from '../../../../../assets/js/src/form-editor/store/actions-types'; import { createStateMock } from '../mocks/partial-mocks'; diff --git a/mailpoet/tests/javascript/form-editor/store/selectors.spec.ts b/mailpoet/tests/javascript/form-editor/store/selectors.spec.ts index a04ba67822..808a32b3a3 100644 --- a/mailpoet/tests/javascript/form-editor/store/selectors.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/selectors.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import { selectors } from '../../../../assets/js/src/form-editor/store/selectors'; import { createBlocksMock, diff --git a/mailpoet/tests/javascript/form-editor/store/server-value-as-num.spec.ts b/mailpoet/tests/javascript/form-editor/store/server-value-as-num.spec.ts index e55cdb92f5..c030948fd9 100644 --- a/mailpoet/tests/javascript/form-editor/store/server-value-as-num.spec.ts +++ b/mailpoet/tests/javascript/form-editor/store/server-value-as-num.spec.ts @@ -1,5 +1,3 @@ -import { expect } from 'chai'; - import { asNum } from '../../../../assets/js/src/form-editor/store/server-value-as-num'; describe('Server value as num', () => { diff --git a/mailpoet/tests/javascript/global.d.ts b/mailpoet/tests/javascript/global.d.ts new file mode 100644 index 0000000000..504992f67a --- /dev/null +++ b/mailpoet/tests/javascript/global.d.ts @@ -0,0 +1,5 @@ +import type * as chai from 'chai'; + +declare global { + const expect: typeof chai.expect; +} diff --git a/mailpoet/tests/javascript/mocha-env.mjs b/mailpoet/tests/javascript/mocha-env.mjs new file mode 100644 index 0000000000..791898bb97 --- /dev/null +++ b/mailpoet/tests/javascript/mocha-env.mjs @@ -0,0 +1,9 @@ +import * as chai from 'chai'; +import register from '@babel/register'; + +// Register Babel to transpile our tests +register({ extensions: ['.js', '.jsx', '.ts', '.tsx'] }); + +// Set up chai.expect globally due issues with ES modules +// See https://github.com/chaijs/chai/issues/1568 +global.expect = chai.expect; diff --git a/mailpoet/tests/javascript/utilities/date.spec.ts b/mailpoet/tests/javascript/utilities/date.spec.ts index 6cda193cd4..a8f18dc5ee 100644 --- a/mailpoet/tests/javascript/utilities/date.spec.ts +++ b/mailpoet/tests/javascript/utilities/date.spec.ts @@ -1,4 +1,3 @@ -import { expect } from 'chai'; import moment, { Moment } from 'moment'; import { MailPoetDate } from '../../../assets/js/src/date';