Skip to content

chore: bring dependencies and CI up to date (24.7) - #25677

Open
totally-not-ai[bot] wants to merge 6 commits into
24.7from
chore/update-dependencies-24.7
Open

chore: bring dependencies and CI up to date (24.7)#25677
totally-not-ai[bot] wants to merge 6 commits into
24.7from
chore/update-dependencies-24.7

Conversation

@totally-not-ai

Copy link
Copy Markdown
Contributor

Related to #25675

build failure · whole build · anyone building or releasing 24.7

The branch has not been touched since January and no longer builds: the
dev-server bundle is compiled with whatever TypeScript npm resolves, and
TypeScript 7 removed the API the Rollup plugin calls. Libraries, build
plugins and frontend packages are months behind as well, so this brings
them to what 24.10 ships without crossing a major, and makes the
validation workflow runnable again.

Risks:

  • ⚠️ Behaviour change: applications get newer frontend packages (Vite
    6.4.3, Lit 3.3.3, React 19.3.0, react-router 7.18.3, TypeScript 5.9.3)
    and Flow now installs Node v22.23.2 and pnpm 8.15.9 by default.
  • ⚠️ Public API: DevToolsWrapper.close() added in flow-test-util.
  • 🔒 Security: Jackson, jsoup, Guava, slf4j and Spring Boot move to their
    current patch releases on the lines this branch ships.
  • ❓ Open question: the integration tests have not been run here, because
    they need the TestBench license. CI has to confirm them.
  • ✅ No signature removals, no serialization, threading or memory changes.

Context. 24.7 is commercially supported again, so the branch has to
build and release. Its validation workflow started every job with a
write-access check that fails for bots and outside contributors, which is
why the breakage went unnoticed, and pull requests ran through
pull_request_target, which executes the base branch workflow with
secrets against the pull request code.

  • Pinned typescript to ^5.9.3 in vaadin-dev-server, the same fix
    24.10 got in build(vaadin-dev-server): align TypeScript version (24.10) #24959, which is what makes the build pass again.
  • Updated libraries and build plugins to their latest patch releases:
    Spring Boot 3.4.13, Jackson 2.21.5, jsoup 1.23.1, Guava 33.7.1, slf4j
    2.0.17, Jetty 12.0.27, TestBench 9.6.3, Surefire/Failsafe 3.5.3.
  • Pinned maven-install-plugin to 3.1.4, as on 24.10, so parallel installs
    cannot corrupt local repository metadata.
  • Updated the frontend dependency manifests with
    scripts/update-frontend-dependencies.sh, which caps every non-main
    branch at minor releases, and raised the default Node and pnpm versions.
  • Replaced the generated Selenium CDP classes in DevToolsWrapper with
    hand-built Network and Target commands, as 24.10 does: the generated
    ones only work for the Chrome versions a Selenium release bundles.
  • Refreshed the validation workflow: dropped the write-access gate and the
    archived stCarolas/setup-maven, moved pull requests to
    pull_request, guarded the TestBench license check for fork pull
    requests, pinned every action to a commit, and listed the branches that
    are maintained today.
  • Adjusted two ElementTest expectations to jsoup's current pretty
    printing and the NodeUpdaterTest glob version to the manifest.

@rollup/plugin-typescript resolves its TypeScript peer dependency freely,
so the dev-server bundle now builds against TypeScript 7, where
ts.ScriptTarget.ES2015 no longer exists and the vite build fails with
"Cannot read properties of undefined (reading 'ES2015')". Pinning the
same 5.x range the other branches use keeps the build working.
The branch had not been updated since January, so libraries, build
plugins and frontend packages are behind the versions 24.10 ships.
Everything stays within its current major, and Spring Boot stays on the
3.4 line the branch was released with.
Builds were only allowed for actors with write access, which fails for
bots and outside contributors and left the branch without a way to run
CI at all. Pull requests also ran through pull_request_target, which
executes the base branch workflow with secrets against the pull request
code.

Also brings in the frontend dependency update script so the branch can
be added to the weekly update workflow.
TestBench 9.6.3 ships a Selenium whose generated CDP package no longer
matches the v136 classes this used, and the generated classes only work
for the Chrome versions a Selenium release happens to bundle. Building
the few Network and Target commands by hand, as 24.10 does, keeps the
offline and cache tests working with any Chrome.
jsoup no longer breaks the line before a nested element when pretty
printing, and the default dev dependency test states the glob version
the frontend manifest now pins.
@totally-not-ai

Copy link
Copy Markdown
Contributor Author

Type of change

  • Internal change

How to test

  1. ./scripts/computeMatrix.js set-version --version=999.99-SNAPSHOT
  2. mvn install -B -ntp -DskipTests -pl '!flow-plugins/flow-gradle-plugin' — fails on master/this branch's base in the vaadin-dev-server npm build with TypeError: Cannot read properties of undefined (reading 'ES2015'), passes with this branch.
  3. mvn verify -B -ntp -fae -Dmaven.javadoc.skip=false for the unit test modules — all 24 modules pass.

Verified locally on JDK 17 with the same commands CI runs: full install
build green, and the unit test modules from both CI shards green (4010
tests in flow-server, no failures). The integration tests were not
run locally — they need the TestBench license, so the offline/cache tests
that use the rewritten DevToolsWrapper are only covered once CI runs
them here.

API changes

Compared to origin/24.7:

  • Added public void DevToolsWrapper.close() (flow-test-util)
  • FrontendTools.DEFAULT_NODE_VERSION value v22.17.0v22.23.2
  • FrontendTools.DEFAULT_PNPM_VERSION value 8.6.118.15.9

No removals or signature changes.

Why the build broke by itself

@rollup/plugin-typescript declares TypeScript as a peer dependency, and
vaadin-dev-server never pinned it, so every npm install picks the
newest release. TypeScript 7 dropped ts.ScriptTarget.ES2015, which the
plugin reads at load time, so the vite config fails to load. 24.10 hit the
same thing in July and pinned ^5.9.3 in #24959.

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Test Results

1 090 files   - 106  1 090 suites   - 106   1h 2m 42s ⏱️ - 11m 36s
7 792 tests  -  52  7 738 ✅  -  10  53 💤  - 3  1 ❌ +1 
8 067 runs   - 179  8 008 ✅  - 129  58 💤  - 7  1 ❌ +1 

For more details on these failures, see this check.

Results for commit ed0f38c. ± Comparison against base commit cffb87c.

♻️ This comment has been updated with latest results.

TestBench 9.5 and later need the license checker 2.x and 3.x APIs, which
are a major step from the 1.x this branch ships, so every integration
test failed to initialise with NoClassDefFoundError. 9.4.5 is the newest
release that still runs against the 1.x checker, and its Selenium only
has the single argument CDP connection factory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant