diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 67cf02dd..d0285b3b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,6 +3,8 @@ name: CI
on:
pull_request:
push:
+ branches:
+ - master
permissions:
contents: read
@@ -65,7 +67,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v7
with:
- node-version: '22'
+ node-version: '24'
- name: Install Cypress system dependencies
run: |
@@ -135,7 +137,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v7
with:
- node-version: '22'
+ node-version: '24'
- name: Install Composer dependencies
run: composer update --no-interaction --prefer-dist --no-progress
diff --git a/AGENTS.md b/AGENTS.md
index fa2c4384..920012d7 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -39,8 +39,8 @@ Local path: `/Volumes/SRC/JsFormValidatorBundle`
## Nix Development Environment
- Prefer `nix develop` from the repository root when Nix is available.
-- The Nix shell provides the latest PHP available in pinned nixpkgs with Xdebug coverage support, Composer, Node.js 22, npm, zip/unzip, and Linux Cypress runtime libraries. It currently resolves to PHP 8.5.
-- The Docker `php-fpm` development image is maintained for vendor installation and ad hoc commands. It uses PHP 8.5, Composer 2, Node.js 22, and the PHP extensions required by the Symfony 8 fixture.
+- The Nix shell provides the latest PHP available in pinned nixpkgs with Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and Linux Cypress runtime libraries. It currently resolves to PHP 8.5.
+- The Docker `php-fpm` development image is maintained for vendor installation and ad hoc commands. It uses PHP 8.5, Composer 2, Node.js 24, and the PHP extensions required by the Symfony 8 fixture.
- Run one-off commands with `nix develop -c `, for example:
- `nix develop -c composer validate --strict`
- `nix develop -c composer test`
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 643d59fe..c873e2e4 100755
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -8,7 +8,7 @@ Prefer the Nix development shell from the repository root:
nix develop
```
-The shell provides PHP 8.5, Xdebug coverage support, Composer, Node.js 22, npm,
+The shell provides PHP 8.5, Xdebug coverage support, Composer, Node.js 24, npm,
zip/unzip, and the Linux runtime libraries needed by Cypress. It also keeps
Composer, npm, and Cypress caches under `.cache/`.
@@ -36,7 +36,7 @@ If Cypress reports that its binary is missing, install it into the local cache:
npx cypress install
```
-Without Nix, install PHP 8.4 or newer, Composer, Node.js 22, npm, and the
+Without Nix, install PHP 8.4 or newer, Composer, Node.js 24, npm, and the
Cypress system dependencies locally before running the same commands.
## Install Vendors Via Docker
@@ -50,7 +50,7 @@ docker compose run --rm --no-deps -u "$(id -u):$(id -g)" php-fpm composer update
docker compose run --rm --no-deps -u "$(id -u):$(id -g)" php-fpm npm install
```
-The image uses PHP 8.5, Composer 2, Node.js 22, and the PHP extensions needed by
+The image uses PHP 8.5, Composer 2, Node.js 24, and the PHP extensions needed by
the Symfony 8 test fixture. It also stores Composer, npm, and Cypress caches
under `.cache/`.
diff --git a/README.md b/README.md
index 88f97ae4..7a15bd80 100644
--- a/README.md
+++ b/README.md
@@ -191,7 +191,7 @@ nix develop
```
It provides the latest PHP available in the pinned nixpkgs input, currently
-PHP 8.5, with Xdebug coverage support, Composer, Node.js 22, npm, zip/unzip,
+PHP 8.5, with Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip,
and Cypress runtime libraries. If flakes are not enabled globally, prefix Nix
commands with `nix --extra-experimental-features "nix-command flakes"`.
@@ -215,7 +215,7 @@ nix develop -c composer test
nix develop -c npm test
```
-Without Nix, install PHP 8.4 or newer, Composer, Node.js 22, npm, and the
+Without Nix, install PHP 8.4 or newer, Composer, Node.js 24, npm, and the
Cypress system dependencies locally before running the same commands.
To install vendors via Docker instead of host PHP/Composer:
@@ -273,6 +273,6 @@ The same maintained test, static-analysis, and coverage checks are also run by
GitHub Actions on pushes and pull requests. Coverage runs generate Cobertura
reports and upload them to GitHub Code Quality when workflow permissions allow.
-The Docker stack uses PHP 8.5, Composer 2, and Node.js 22. It is maintained for
+The Docker stack uses PHP 8.5, Composer 2, and Node.js 24. It is maintained for
dependency installation and ad hoc local commands; Nix remains the preferred
environment for exact local parity with the documented checks.
diff --git a/Tests/app/package.json b/Tests/app/package.json
index 706ac59d..9bd400b7 100644
--- a/Tests/app/package.json
+++ b/Tests/app/package.json
@@ -1,7 +1,12 @@
{
"devDependencies": {
+ "@babel/core": "^8.0.1",
+ "@babel/preset-env": "^8.0.2",
+ "@symfony/webpack-encore": "^7.2.0",
+ "babel-plugin-polyfill-corejs3": "^1.0.0",
"core-js": "^3.50.0",
- "@symfony/webpack-encore": "^6.0.0"
+ "webpack": "^5.102.0",
+ "webpack-cli": "^7.0.2"
},
"dependencies": {
"jquery": "^4.0.0"
diff --git a/Tests/app/webpack.config.js b/Tests/app/webpack.config.mjs
similarity index 67%
rename from Tests/app/webpack.config.js
rename to Tests/app/webpack.config.mjs
index 1e6f23a1..84ca12ca 100755
--- a/Tests/app/webpack.config.js
+++ b/Tests/app/webpack.config.mjs
@@ -4,7 +4,7 @@
//
// Read https://symfony.com/doc/current/frontend.html to learn more about how
// to manage CSS and JavaScript files in Symfony applications.
-var Encore = require('@symfony/webpack-encore');
+import Encore from '@symfony/webpack-encore';
Encore
.setOutputPath('public/build/')
@@ -19,10 +19,17 @@ Encore
.splitEntryChunks()
.enableSingleRuntimeChunk()
.enableIntegrityHashes(Encore.isProduction())
- .configureBabel(null, {
- useBuiltIns: 'usage',
- corejs: 3,
+ // Babel 8 removed the "useBuiltIns"/"corejs" options from @babel/preset-env,
+ // so core-js polyfills are now injected by babel-plugin-polyfill-corejs3.
+ .configureBabel((babelConfig) => {
+ babelConfig.plugins.push([
+ 'babel-plugin-polyfill-corejs3',
+ {
+ method: 'usage-global',
+ version: '3.50',
+ },
+ ]);
})
;
-module.exports = Encore.getWebpackConfig();
+export default await Encore.getWebpackConfig();
diff --git a/flake.nix b/flake.nix
index 7a734b46..456ebcd5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -56,7 +56,7 @@
packages = with pkgs; [
composer
git
- nodejs_22
+ nodejs_24
php
unzip
zip
diff --git a/phpdocker/README.html b/phpdocker/README.html
index d4aca85d..b80eab36 100755
--- a/phpdocker/README.html
+++ b/phpdocker/README.html
@@ -11,7 +11,7 @@ PHP Docker Development Image
and run ad hoc local commands without host PHP or Composer.
The php-fpm image provides PHP 8.5 FPM, Composer 2,
- Node.js 22, npm, the PHP extensions used by the Symfony 8 fixture, and the
+ Node.js 24, npm, the PHP extensions used by the Symfony 8 fixture, and the
Linux libraries needed by Cypress.
Build
diff --git a/phpdocker/README.md b/phpdocker/README.md
index e3262150..77f83876 100755
--- a/phpdocker/README.md
+++ b/phpdocker/README.md
@@ -8,7 +8,7 @@ The `php-fpm` image provides:
* PHP 8.5 FPM
* Composer 2
-* Node.js 22 and npm
+* Node.js 24 and npm
* PHP extensions used by the Symfony 8 fixture: `intl`, `pdo_mysql`,
`pdo_sqlite`, and `zip`
* Linux libraries needed by the Cypress binary
diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile
index 1b4400c8..2c295a05 100755
--- a/phpdocker/php-fpm/Dockerfile
+++ b/phpdocker/php-fpm/Dockerfile
@@ -29,7 +29,7 @@ RUN set -eux; \
mkdir -p /etc/apt/keyrings; \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
- echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" \
+ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" \
> /etc/apt/sources.list.d/nodesource.list; \
apt-get update; \
apt-get install -y --no-install-recommends nodejs; \