Skip to content

Bump pnpm in E2E tests - #179063

Merged
edenhaus merged 2 commits into
devfrom
bump-pnpm
Aug 13, 2026
Merged

Bump pnpm in E2E tests#179063
edenhaus merged 2 commits into
devfrom
bump-pnpm

Conversation

@bramkragten

Copy link
Copy Markdown
Member

Proposed change

The E2E test workflow is currently failing on every run, before a single test executes:

[ERR_PNPM_BROKEN_PNPM_RELEASE] pnpm v11.13.0 is a broken release and cannot be installed
Its "@pnpm/exe" build shipped without a binary and does not run.
##[error]Something went wrong, self-installer exits with code 1

pnpm/action-setup takes its version from the packageManager field in tests/e2e/package.json, which was pinned to pnpm@11.13.0. pnpm has since marked that release as broken, so its self-installer now refuses to install it and every E2E job dies at the "Set up pnpm" step.

This bumps the pin to pnpm@11.21.0 (current latest on npm). pnpm install --frozen-lockfile was verified locally against 11.21.0: the lockfile is already up to date, so tests/e2e/pnpm-lock.yaml needs no changes.

The second part of this PR makes sure we do not end up on a stale pin again. Neither Renovate (npm was not in enabledManagers) nor Dependabot (GitHub Actions only) was watching this version, so it could only ever be bumped by hand. Renovate now maintains it:

  • npm added to enabledManagers, scoped with managerFilePatterns to tests/e2e/package.json only.
  • A packageRule allowlisting pnpm, narrowed to matchDepTypes: ["packageManager"] so it can only ever touch this one pin (the config denies everything by default).
  • ignorePaths narrowed to **/node_modules/**. This one is easy to miss: config:recommended pulls in :ignoreModulesAndTests, whose ignore list contains **/tests/**, which made tests/e2e/package.json invisible to Renovate. Without this change the npm manager extracts zero files. Every enabled manager is already explicitly scoped through managerFilePatterns, so nothing else widens as a result.

@playwright/test deliberately stays unmanaged, since Playwright bumps also need the browser download and the lockfile to move with them.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:
  • Link to documentation pull request:
  • Link to developer documentation pull request:
  • Link to frontend pull request:

Failing run this fixes: https://github.com/home-assistant/core/actions/runs/31662509044/job/94331534669

Verification performed locally, all against Renovate 44.27.0 (note that npx renovate-config-validator resolves to the maint/42.x tag by default, which falsely rejects our pre-existing homeassistant-manifest manager):

  • renovate-config-validator — validated successfully.
  • renovate --platform=local --dry-run=extractnpm: {fileCount: 1, depCount: 2}, with every other manager's counts byte-identical to before the change (dockerfile 3/9, homeassistant-manifest 1098/1219, pep621 2/56, pip_requirements 6/1384, pre-commit 1/7, regex 4/4). The relaxed ignorePaths pulls in exactly the one intended file.
  • renovate --platform=local --dry-run=lookup — Renovate queries the registry for pnpm and logs Dependency: @playwright/test, is disabled, confirming the allowlist gate behaves as intended. No pnpm PR would open right now, since 11.21.0 is already latest.
  • pnpm@11.21.0 install --frozen-lockfile in tests/e2e — succeeds against the unchanged lockfile.

The global minimumReleaseAge: "7 days" applies to pnpm as well, which gives some cushion against picking up another release that gets flagged broken shortly after publish.

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

Copilot AI balanced review requested due to automatic review settings August 13, 2026 11:01
@bramkragten
bramkragten requested a review from a team as a code owner August 13, 2026 11:01
@home-assistant home-assistant Bot added cla-signed core dependency Pull requests marked as a dependency upgrade small-pr PRs with less than 30 lines. labels Aug 13, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the pnpm pin to restore E2E test execution and adds Renovate automation for future updates.

Changes:

  • Bumps pnpm from 11.13.0 to 11.21.0.
  • Enables Renovate management of the E2E pnpm pin.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
tests/e2e/package.json Updates the pnpm version.
.github/renovate.json Adds npm extraction and a pnpm allowlist.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/renovate.json
"pip_requirements",
"pre-commit",
"dockerfile",
"npm",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, but I'll let the author decide.

Comment thread .github/renovate.json
@MartinHjelmare

Copy link
Copy Markdown
Member

One comment to look at, at least.

@MartinHjelmare
MartinHjelmare marked this pull request as draft August 13, 2026 11:09
managerFilePatterns is additive to the npm manager's default patterns
rather than restrictive, so the npm block did not limit anything: a
future package.json elsewhere in the repo would have had its pnpm
packageManager pin managed too. Drop the no-op block and enforce the
scope with matchFileNames on the allowlist rule instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 13, 2026 11:22
@bramkragten
bramkragten marked this pull request as ready for review August 13, 2026 11:23
@bramkragten bramkragten changed the title Bump pnmp in E2E tests Bump pnpm in E2E tests Aug 13, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@edenhaus
edenhaus merged commit 24a15d3 into dev Aug 13, 2026
43 checks passed
@edenhaus
edenhaus deleted the bump-pnpm branch August 13, 2026 11:25
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cla-signed core dependency Pull requests marked as a dependency upgrade small-pr PRs with less than 30 lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants