diff --git a/templates/add-ons/frontend/cookiecutter.json b/templates/add-ons/frontend/cookiecutter.json index 89f55de4..3fd09159 100644 --- a/templates/add-ons/frontend/cookiecutter.json +++ b/templates/add-ons/frontend/cookiecutter.json @@ -20,6 +20,8 @@ "__version_mrs_developer": "^2.2.0", "__version_pnpm": "9.1.1", "__version_release_it": "^17.1.1", + "__version_testing_library_react": "^16.2.0", + "__version_vitest": "^3.1.2", "__node_version": "{{ cookiecutter.volto_version | node_version_for_volto }}", "__gha_version_node": "{{ cookiecutter.__node_version }}", "__gha_version_checkout": "v4", diff --git a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/Makefile b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/Makefile index 4df4b131..e4969032 100644 --- a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/Makefile +++ b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/Makefile @@ -98,8 +98,8 @@ test: ## Run unit tests .PHONY: ci-test ci-test: ## Run unit tests in CI # Unit Tests need the i18n to be built - VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n - CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests + VOLTOCONFIG=$(CURRENT_DIR)/volto.config.js pnpm --filter @plone/volto i18n + CI=1 pnpm test -- --passWithNoTests .PHONY: backend-docker-start backend-docker-start: ## Starts a Docker-based backend for development diff --git a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/jest-addon.config.js b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/jest-addon.config.js deleted file mode 100644 index 984c267e..00000000 --- a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/jest-addon.config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - roots: ['../../../packages'], - testMatch: ['/../../../../**/?(*.)+(spec|test).[jt]s?(x)'], - collectCoverageFrom: [ - 'src/addons/**/src/**/*.{js,jsx,ts,tsx}', - '!src/**/*.d.ts', - ], - transformIgnorePatterns: ['node_modules/(?!(volto-slate|@plone/volto)/)'], - coverageThreshold: { - global: { - branches: 5, - functions: 5, - lines: 5, - statements: 5, - }, - }, -}; diff --git a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/package.json b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/package.json index f4367a82..6df8a87c 100644 --- a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/package.json +++ b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/package.json @@ -18,7 +18,7 @@ "build": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto build", "build:deps": "pnpm --filter @plone/registry --filter @plone/components build", "i18n": "pnpm --filter {{ cookiecutter.__npm_package_name }} i18n && VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n", - "test": "RAZZLE_JEST_CONFIG=$(pwd)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests", + "test": "pnpm --filter {{ cookiecutter.__npm_package_name }} exec vitest", "lint": "VOLTOCONFIG=$(pwd)/volto.config.js eslint --max-warnings=0 'packages/**/src/**/*.{js,jsx,ts,tsx}'", "lint:fix": "VOLTOCONFIG=$(pwd)/volto.config.js eslint --fix 'packages/**/src/**/*.{js,jsx,ts,tsx}'", "prettier": "prettier --check 'packages/**/src/**/*.{js,jsx,ts,tsx}'", diff --git a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/package.json b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/package.json index b27750d5..e493fc5a 100644 --- a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/package.json +++ b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/package.json @@ -34,6 +34,8 @@ }, "devDependencies": { "@plone/scripts": "{{ cookiecutter.__version_plone_scripts }}", - "release-it": "{{ cookiecutter.__version_release_it }}" + "@testing-library/react": "{{ cookiecutter.__version_testing_library_react }}", + "release-it": "{{ cookiecutter.__version_release_it }}", + "vitest": "{{ cookiecutter.__version_vitest }}" } } diff --git a/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/vitest.config.mjs b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/vitest.config.mjs new file mode 100644 index 00000000..4c5bdb5b --- /dev/null +++ b/templates/add-ons/frontend/{{ cookiecutter.__folder_name }}/packages/{{ cookiecutter.frontend_addon_name }}/vitest.config.mjs @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitest/config'; +import voltoVitestConfig from '@plone/volto/vitest.config.mjs'; +import path from 'path'; + +export default defineConfig({ + ...voltoVitestConfig, + resolve: { + alias: { + '@plone/volto': path.resolve(__dirname, '../../core/packages/volto/src'), // Add paths accordingly + // 'promise-file-reader': require.resolve('promise-file-reader') // Add to identify dependency from package + }, + }, +}); diff --git a/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/Makefile b/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/Makefile index fcd588d8..55676ee9 100644 --- a/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/Makefile +++ b/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/Makefile @@ -96,8 +96,8 @@ test: ## Run unit tests .PHONY: ci-test ci-test: ## Run unit tests in CI # Unit Tests need the i18n to be built - VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n - CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests + VOLTOCONFIG=$(CURRENT_DIR)/volto.config.js pnpm --filter @plone/volto i18n + CI=1 pnpm test -- --passWithNoTests .PHONY: backend-docker-start backend-docker-start: ## Starts a Docker-based backend for development diff --git a/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/package.json b/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/package.json index f4367a82..6df8a87c 100644 --- a/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/package.json +++ b/templates/sub/project_settings/{{ cookiecutter.__folder_name }}/frontend/package.json @@ -18,7 +18,7 @@ "build": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto build", "build:deps": "pnpm --filter @plone/registry --filter @plone/components build", "i18n": "pnpm --filter {{ cookiecutter.__npm_package_name }} i18n && VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n", - "test": "RAZZLE_JEST_CONFIG=$(pwd)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests", + "test": "pnpm --filter {{ cookiecutter.__npm_package_name }} exec vitest", "lint": "VOLTOCONFIG=$(pwd)/volto.config.js eslint --max-warnings=0 'packages/**/src/**/*.{js,jsx,ts,tsx}'", "lint:fix": "VOLTOCONFIG=$(pwd)/volto.config.js eslint --fix 'packages/**/src/**/*.{js,jsx,ts,tsx}'", "prettier": "prettier --check 'packages/**/src/**/*.{js,jsx,ts,tsx}'", diff --git a/tests/templates/add-ons/frontend/test_frontend_cutter.py b/tests/templates/add-ons/frontend/test_frontend_cutter.py index df976149..41a56870 100644 --- a/tests/templates/add-ons/frontend/test_frontend_cutter.py +++ b/tests/templates/add-ons/frontend/test_frontend_cutter.py @@ -29,7 +29,6 @@ ".prettierrc", ".stylelintrc", "cypress.config.js", - "jest-addon.config.js", "Makefile", "mrs.developer.json", "package.json", @@ -55,6 +54,7 @@ "src/index.js", "towncrier.toml", "tsconfig.json", + "vitest.config.mjs", ] diff --git a/tests/templates/projects/monorepo/test_project_frontend.py b/tests/templates/projects/monorepo/test_project_frontend.py index 692464fb..d0d47f52 100644 --- a/tests/templates/projects/monorepo/test_project_frontend.py +++ b/tests/templates/projects/monorepo/test_project_frontend.py @@ -19,7 +19,6 @@ ".prettierrc", ".stylelintrc", "cypress.config.js", - "jest-addon.config.js", "Dockerfile", "Makefile", "mrs.developer.json",