Skip to content

Bump @tootallnate/once, jest-environment-jsdom and jest-preset-angular in /gui-js#618

Open
dependabot[bot] wants to merge 4 commits intomasterfrom
dependabot/npm_and_yarn/gui-js/multi-abb24384e2
Open

Bump @tootallnate/once, jest-environment-jsdom and jest-preset-angular in /gui-js#618
dependabot[bot] wants to merge 4 commits intomasterfrom
dependabot/npm_and_yarn/gui-js/multi-abb24384e2

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Mar 5, 2026

Removes @tootallnate/once. It's no longer used after updating ancestor dependencies @tootallnate/once, jest-environment-jsdom and jest-preset-angular. These dependencies need to be updated together.

Removes @tootallnate/once

Updates jest-environment-jsdom from 29.7.0 to 30.2.0

Release notes

Sourced from jest-environment-jsdom's releases.

30.2.0

Chore & Maintenance

  • [*] Update example repo for testing React Native projects (#15832)
  • [*] Update jest-watch-typeahead to v3 (#15830)

Features

  • [jest-environment-jsdom-abstract] Add support for JSDOM v27 (#15834)

Fixes

  • [babel-jest] Export the TransformerConfig interface (#15820)
  • [jest-config] Fix jest.config.ts with TS loader specified in docblock pragma (#15839)

30.1.3

Fixes

  • Fix unstable_mockModule with node: prefixed core modules.

30.1.2

Fixes

  • [jest-snapshot-utils] Correct snapshot header regexp to work with newline across OSes (#15803)

30.1.1

Fixes

  • [jest-snapshot-utils] Fix deprecated goo.gl snapshot warning not handling Windows end-of-line sequences (#15800)

30.1.0

Features

  • [jest-leak-detector] Configurable GC aggressiveness regarding to V8 heap snapshot generation (#15793)
  • [jest-runtime] Reduce redundant ReferenceError messages
  • [jest-core] Include test modules that failed to load when --onlyFailures is active

Fixes

  • `[jest-snapshot-utils] Fix deprecated goo.gl snapshot guide link not getting replaced with fully canonical URL (#15787)
  • [jest-circus] Fix it.concurrent not working with describe.skip (#15765)
  • [jest-snapshot] Fix mangled inline snapshot updates when used with Prettier 3 and CRLF line endings
  • [jest-runtime] Importing from @jest/globals in more than one file no longer breaks relative paths (#15772)

Chore

  • [expect] Update docblock for toContain() to display info on substring check (#15789)

30.0.2

What's Changed

... (truncated)

Changelog

Sourced from jest-environment-jsdom's changelog.

30.2.0

Chore & Maintenance

  • [*] Update example repo for testing React Native projects (#15832)
  • [*] Update jest-watch-typeahead to v3 (#15830)

Features

  • [jest-environment-jsdom-abstract] Add support for JSDOM v27 (#15834)

Fixes

  • [jest-matcher-utils] Fix infinite recursion with self-referential getters in deepCyclicCopyReplaceable (#15831)
  • [babel-jest] Export the TransformerConfig interface (#15820)
  • [jest-config] Fix jest.config.ts with TS loader specified in docblock pragma (#15839)

30.1.3

Fixes

  • Fix unstable_mockModule with node: prefixed core modules.

30.1.2

Fixes

  • [jest-snapshot-utils] Correct snapshot header regexp to work with newline across OSes (#15803)

30.1.1

Fixes

  • [jest-snapshot-utils] Fix deprecated goo.gl snapshot warning not handling Windows end-of-line sequences (#15800)
  • [jest-snapshot-utils] Improve messaging about goo.gl snapshot link change (#15821)

30.1.0

Features

  • [jest-leak-detector] Configurable GC aggressiveness regarding to V8 heap snapshot generation (#15793)
  • [jest-runtime] Reduce redundant ReferenceError messages
  • [jest-core] Include test modules that failed to load when --onlyFailures is active

Fixes

  • [jest-snapshot-utils] Fix deprecated goo.gl snapshot guide link not getting replaced with fully canonical URL (#15787)
  • [jest-circus] Fix it.concurrent not working with describe.skip (#15765)
  • [jest-snapshot] Fix mangled inline snapshot updates when used with Prettier 3 and CRLF line endings
  • [jest-runtime] Importing from @jest/globals in more than one file no longer breaks relative paths (#15772)

... (truncated)

Commits

Updates jest-preset-angular from 14.6.2 to 16.1.1

Release notes

Sourced from jest-preset-angular's releases.

v16.1.1

Please refer to CHANGELOG.md for details.

v16.1.0

Please refer to CHANGELOG.md for details.

v16.0.0

Please refer to CHANGELOG.md for details.

v15.0.3

Please refer to CHANGELOG.md for details.

v15.0.2

Please refer to CHANGELOG.md for details.

v15.0.1

Please refer to CHANGELOG.md for details.

v15.0.0

Please refer to CHANGELOG.md for details.

v15.0.0-next.0

Please refer to CHANGELOG.md for details.

Changelog

Sourced from jest-preset-angular's changelog.

16.1.1 (2026-02-28)

Bug Fixes

  • make snapshot serializer compatible with Signal Forms (#3572) (7010730), closes #3560

16.1.0 (2026-02-27)

Features

  • allow configuring platform providers for TestBed from setup env (d11d79d), closes #3590

16.0.0 (2025-12-04)

Features

  • add support for Angular 21 (8d4d11f)

BREAKING CHANGES

  • Drop support for Angular 18

15.0.3 (2025-10-17)

Bug Fixes

  • handle processWithEsbuild transform option (6779107)

15.0.2 (2025-10-01)

Bug Fixes

  • add dynamic-import support flag into esbuild invocation (#3369) (fa25060), closes #3368

... (truncated)

Commits
  • 0051cbd chore(release): 16.1.1
  • 7010730 fix: make snapshot serializer compatible with Signal Forms (#3572)
  • f965bd2 build(deps): update dependency globals to ^17.3.0
  • 343177a build(deps): update dependency @​angular/core [security]
  • 3425e70 chore(release): 16.1.0
  • d11d79d feat: allow configuring platform providers for TestBed from setup env
  • c2d55e6 build(deps): update google/osv-scanner-action action to v2.3.3
  • 5eddf95 build(deps): update commitlint monorepo to ^20.4.2
  • 5f783b7 build(deps): update dependency glob to ^13.0.6
  • 7e6b79b build(deps): update dependency zone.js to ~0.16.1
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

This change is Reviewable

Summary by CodeRabbit

  • Improvements

    • Enhanced loading spinner behavior to stop immediately after successful initial page navigation.
  • Chores

    • Upgraded Angular framework packages to v21.2.1, TypeScript to v5.9.0, and Jest to v30.2.0.
    • Refined test environment configuration for improved initialization.

Removes [@tootallnate/once](https://github.com/TooTallNate/once). It's no longer used after updating ancestor dependencies [@tootallnate/once](https://github.com/TooTallNate/once), [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) and [jest-preset-angular](https://github.com/thymikee/jest-preset-angular). These dependencies need to be updated together.


Removes `@tootallnate/once`

Updates `jest-environment-jsdom` from 29.7.0 to 30.2.0
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v30.2.0/packages/jest-environment-jsdom)

Updates `jest-preset-angular` from 14.6.2 to 16.1.1
- [Release notes](https://github.com/thymikee/jest-preset-angular/releases)
- [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md)
- [Commits](thymikee/jest-preset-angular@v14.6.2...v16.1.1)

---
updated-dependencies:
- dependency-name: "@tootallnate/once"
  dependency-version: 
  dependency-type: indirect
- dependency-name: jest-environment-jsdom
  dependency-version: 30.2.0
  dependency-type: direct:development
- dependency-name: jest-preset-angular
  dependency-version: 16.1.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Mar 5, 2026
@highperformancecoder
Copy link
Owner

@CodeRabbit review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 6, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 6, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2836d093-3654-4522-969c-8fe99e19b879

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR updates dependencies (Angular 20→21, TypeScript 5.8.3→5.9.0, Jest 29→30), refactors loading spinner logic to stop after first navigation, updates test environment setup to use zone-based Jest preset, removes redundant HttpClientModule, and adds TypeScript bundler module resolution configuration.

Changes

Cohort / File(s) Summary
Loading Spinner Logic
gui-js/apps/minsky-web/src/app/app.component.ts
Changed spinner control from ngDoCheck condition to router.events subscription that fires on first NavigationEnd event, disabling publication tab updates and change detection after initial navigation.
Bootstrap Configuration
gui-js/apps/minsky-web/src/main.ts
Removed redundant HttpClientModule import and provider entry; HttpClient remains available via provideHttpClient(withInterceptorsFromDi()).
Test Setup
gui-js/apps/minsky-web/src/test-setup.ts, gui-js/libs/shared/src/test-setup.ts
Replaced jest-preset-angular/setup-jest import with setup-env/zone and added explicit TestBed.initTestEnvironment() initialization using BrowserDynamicTestingModule.
TypeScript Configuration
gui-js/apps/minsky-web/tsconfig.app.json, gui-js/apps/minsky-web/tsconfig.spec.json
Added moduleResolution: "bundler" compiler option to both application and spec TypeScript configurations.
Dependency Updates
gui-js/package.json
Updated Angular framework packages, angular-devkit/build-angular from ^20.3.17 to ^21.2.1; TypeScript 5.8.3 to ^5.9.0; Jest suite from ^29.x to ^30.2.0; minor JSON formatting adjustments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Through navigation flows we hop,
Loading spinners learn to stop,
Jest and TypeScript climb up high,
Dependencies reach for the sky!
Angular twenty-one arrives with cheer! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main changes: it identifies the specific dependencies being bumped (@tootallnate/once, jest-environment-jsdom, jest-preset-angular) and the scope (/gui-js), which aligns with the primary commit message and the core intent of the dependency update PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dependabot/npm_and_yarn/gui-js/multi-abb24384e2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
gui-js/package.json (2)

169-176: ⚠️ Potential issue | 🟠 Major

Finish the Jest 30 migration across the remaining projects.

Line 169 still pins @types/jest to 29 while Lines 174-176 move the runtime stack to 30. The repo also still has legacy setup-jest / globals['ts-jest'] config in gui-js/apps/minsky-electron/src/test-setup.ts and gui-js/libs/menu/jest.config.ts. Jest 30 already ships TypeScript declarations, @types/jest 30 exists, and the current jest-preset-angular 16.x docs use setupZoneTestEnv() plus preset/transform helpers, so this upgrade is still only partially migrated. (npmjs.com)

Run this to confirm the remaining legacy Jest config:

#!/bin/bash
set -euo pipefail

echo "Legacy setup-jest imports:"
rg -n "jest-preset-angular/setup-jest" gui-js

echo
echo "Jest configs still using globals['ts-jest']:"
rg -n -C2 "globals\\s*:\\s*\\{|['\"]ts-jest['\"]" gui-js -g 'jest.config.*'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gui-js/package.json` around lines 169 - 176, Update the pinned `@types/jest` in
package.json to the v30 range (e.g. ^30.0.0) and remove legacy
setup-jest/ts-jest globals across the GUI project; specifically, delete or stop
importing "jest-preset-angular/setup-jest" in
gui-js/apps/minsky-electron/src/test-setup.ts and remove any globals['ts-jest']
or ts-jest entries in gui-js/libs/menu/jest.config.ts (and other jest.config.*
files), then adopt the Jest-30 / jest-preset-angular-16 migration pattern by
using setupZoneTestEnv() in your test setup and switching to the
preset/transform helpers recommended by the preset docs so runtime and types are
consistently using Jest 30.

158-205: ⚠️ Potential issue | 🟠 Major

Raise the Node engine floor to match Angular 21's compatibility requirements.

The current engines.node specification of >=20.11.1 permits Node versions that Angular 21 no longer supports. Angular 21 requires Node ^20.19.0 || ^22.12.0 || ^24.0.0, making any Node version from 20.11.1 through 20.18.x incompatible with the framework.

Suggested fix
  "engines": {
-    "node": ">=20.11.1"
+    "node": "^20.19.0 || ^22.12.0 || ^24.0.0"
  },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gui-js/package.json` around lines 158 - 205, The engines.node field in
package.json currently allows ">=20.11.1", which permits Node versions
incompatible with Angular 21; update the engines.node value to match Angular
21's supported range (e.g. "^20.19.0 || ^22.12.0 || ^24.0.0") so that the
package.json enforces only compatible Node versions; locate and change the
"engines": { "node": ... } entry in package.json accordingly and run your usual
install/CI to verify no version conflicts.
gui-js/apps/minsky-web/src/test-setup.ts (1)

1-19: ⚠️ Potential issue | 🟠 Major

Use the supported jest-preset-angular 16 setup API.

The project uses jest-preset-angular ^16.1.1, which documents setupZoneTestEnv() as the standard way to initialize the Angular test environment. The current code mixes three distinct patterns (manual globalThis.ngJest assignment, side-effect import, and explicit TestBed.initTestEnvironment() call), which is inconsistent with the 16.x recommended approach. Consolidate on setupZoneTestEnv(), which accepts the test environment options directly.

Suggested fix
-globalThis.ngJest = {
-    testEnvironmentOptions: {
-      errorOnUnknownElements: true,
-      errorOnUnknownProperties: true,
-    },
-  };
-import 'jest-preset-angular/setup-env/zone';
+import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';
 import '../../../libs/shared/src/test-setup';
-
-import { TestBed } from '@angular/core/testing';
-import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
-
-// Initialize the Angular testing environment for Jest.
-// Without this, TestBed.configureTestingModule() throws:
-// "Need to call TestBed.initTestEnvironment() first"
-TestBed.initTestEnvironment(
-  BrowserDynamicTestingModule,
-  platformBrowserDynamicTesting(),
-);
+setupZoneTestEnv({
+  errorOnUnknownElements: true,
+  errorOnUnknownProperties: true,
+});
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gui-js/apps/minsky-web/src/test-setup.ts` around lines 1 - 19, Replace the
mixed/legacy test init pattern with the jest-preset-angular v16 API: remove the
manual globalThis.ngJest assignment, drop the direct side-effect import
'jest-preset-angular/setup-env/zone', and remove the explicit
TestBed.initTestEnvironment(...) call; instead call setupZoneTestEnv(...) from
'jest-preset-angular' passing the testEnvironmentOptions
(errorOnUnknownElements, errorOnUnknownProperties) and
BrowserDynamicTestingModule/platformBrowserDynamicTesting as needed so the
Angular TestBed is initialized through setupZoneTestEnv; update imports to
reference setupZoneTestEnv and remove unused symbols (globalThis.ngJest,
TestBed.initTestEnvironment, setup-env/zone).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@gui-js/apps/minsky-web/src/app/app.component.ts`:
- Around line 58-62: The ngDoCheck method currently clears this.loading too
early, so remove the line "this.loading = false;" from ngDoCheck and let the
NavigationEnd subscription (where you already set this.loading to false) be the
single owner of the spinner state; keep updatePubTabs() and
this.cdRef.detectChanges() in ngDoCheck but ensure only the NavigationEnd
handler sets this.loading to false so the loader closes after successful
navigation (refer to ngDoCheck, updatePubTabs, cdRef.detectChanges and the
NavigationEnd subscription).

---

Outside diff comments:
In `@gui-js/apps/minsky-web/src/test-setup.ts`:
- Around line 1-19: Replace the mixed/legacy test init pattern with the
jest-preset-angular v16 API: remove the manual globalThis.ngJest assignment,
drop the direct side-effect import 'jest-preset-angular/setup-env/zone', and
remove the explicit TestBed.initTestEnvironment(...) call; instead call
setupZoneTestEnv(...) from 'jest-preset-angular' passing the
testEnvironmentOptions (errorOnUnknownElements, errorOnUnknownProperties) and
BrowserDynamicTestingModule/platformBrowserDynamicTesting as needed so the
Angular TestBed is initialized through setupZoneTestEnv; update imports to
reference setupZoneTestEnv and remove unused symbols (globalThis.ngJest,
TestBed.initTestEnvironment, setup-env/zone).

In `@gui-js/package.json`:
- Around line 169-176: Update the pinned `@types/jest` in package.json to the v30
range (e.g. ^30.0.0) and remove legacy setup-jest/ts-jest globals across the GUI
project; specifically, delete or stop importing "jest-preset-angular/setup-jest"
in gui-js/apps/minsky-electron/src/test-setup.ts and remove any
globals['ts-jest'] or ts-jest entries in gui-js/libs/menu/jest.config.ts (and
other jest.config.* files), then adopt the Jest-30 / jest-preset-angular-16
migration pattern by using setupZoneTestEnv() in your test setup and switching
to the preset/transform helpers recommended by the preset docs so runtime and
types are consistently using Jest 30.
- Around line 158-205: The engines.node field in package.json currently allows
">=20.11.1", which permits Node versions incompatible with Angular 21; update
the engines.node value to match Angular 21's supported range (e.g. "^20.19.0 ||
^22.12.0 || ^24.0.0") so that the package.json enforces only compatible Node
versions; locate and change the "engines": { "node": ... } entry in package.json
accordingly and run your usual install/CI to verify no version conflicts.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 837a9942-2ced-4111-a222-b64fd38ff841

📥 Commits

Reviewing files that changed from the base of the PR and between b43e041 and 166c423.

⛔ Files ignored due to path filters (1)
  • gui-js/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (7)
  • gui-js/apps/minsky-web/src/app/app.component.ts
  • gui-js/apps/minsky-web/src/main.ts
  • gui-js/apps/minsky-web/src/test-setup.ts
  • gui-js/apps/minsky-web/tsconfig.app.json
  • gui-js/apps/minsky-web/tsconfig.spec.json
  • gui-js/libs/shared/src/test-setup.ts
  • gui-js/package.json

Comment on lines 58 to 62
async ngDoCheck() {
if(this.loading && this.router.url !== '/') {
if(this.loading) {
this.loading = false;
this.updatePubTabs();
this.cdRef.detectChanges();
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Keep loading owned by the router.

At Line 60, loading is still cleared inside ngDoCheck, so the new NavigationEnd subscription at Lines 99-103 never actually controls the spinner. That means the loader still disappears on the first change-detection pass instead of after the first successful navigation.

Suggested fix
   loading = true;
   publicationTabs = [];
+  private initialized = false;
   private windowUtilityService: WindowUtilityService;
   private resizeTimeout;
@@
   async ngDoCheck() {
-    if(this.loading) {
-      this.loading = false;
+    if(!this.initialized) {
+      this.initialized = true;
       this.updatePubTabs();
       this.cdRef.detectChanges();

Keep this.loading = false; only in the NavigationEnd subscription.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gui-js/apps/minsky-web/src/app/app.component.ts` around lines 58 - 62, The
ngDoCheck method currently clears this.loading too early, so remove the line
"this.loading = false;" from ngDoCheck and let the NavigationEnd subscription
(where you already set this.loading to false) be the single owner of the spinner
state; keep updatePubTabs() and this.cdRef.detectChanges() in ngDoCheck but
ensure only the NavigationEnd handler sets this.loading to false so the loader
closes after successful navigation (refer to ngDoCheck, updatePubTabs,
cdRef.detectChanges and the NavigationEnd subscription).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant