Skip to content

ID-158: Frontend dependency updates#789

Merged
karlnaden merged 18 commits into
mainfrom
ID-158-frontend-dependency-updates
Jun 18, 2026
Merged

ID-158: Frontend dependency updates#789
karlnaden merged 18 commits into
mainfrom
ID-158-frontend-dependency-updates

Conversation

@karlnaden

@karlnaden karlnaden commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR updates the frontend dependencies and cleans up the associated tests, including

  • version updates: Node 20→24, Vitest 3→4,
  • Added and updated tests: tests for the API and additional updates to keep test coverage high after dependency updates
  • Several bug fixes and clean-ups
    • TestSuiteMessages plural case in error message
    • PresetsSelector dead code removal around unused confirmation modal
    • web-vitals CRA boilerplate deleted as dead code
  • Dependency updates and cleanup
    • remove unused and reclassified some dependencies
    • package.json Override: sockjs (pulled in by webpack-dev-server) declares uuid@^8, which the uuid maintainers have deprecated and no longer support. The override pins to ^11.1.1, their recommended upgrade path for CommonJS consumers.

Testing Guidance

Run the demo suite and interact with the UI to make sure that everything still works as expected.

@codecov

codecov Bot commented Jun 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.79%. Comparing base (abea5d3) to head (ebce5ec).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #789      +/-   ##
==========================================
+ Coverage   84.93%   89.79%   +4.85%     
==========================================
  Files         298      291       -7     
  Lines       14097     8365    -5732     
  Branches     1992     2004      +12     
==========================================
- Hits        11973     7511    -4462     
+ Misses       2116      799    -1317     
- Partials        8       55      +47     
Flag Coverage Δ
backend 92.50% <ø> (ø)
frontend 83.71% <100.00%> (+4.04%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@karlnaden karlnaden marked this pull request as ready for review June 15, 2026 17:07
Comment thread .github/workflows/js.yml Outdated
# The lockfile may be committed from macOS, which omits Linux-specific optional
# packages (e.g. platform-native bindings). Regenerating it here adds those
# entries so the subsequent `npm ci` can resolve them on this Linux runner.
- run: npm install --package-lock-only --ignore-scripts

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.

The workaround (npm install --package-lock-only before npm ci) has two problems:

The npm cache key is hashFiles(**/package-lock.json) on the committed lockfile. After regeneration the lock file has changed, so npm ci installs against a different lockfile than what was cached. The cache hit is partial at best.
npm ci's whole purpose is reproducible installs from a committed lockfile. Mutating the lockfile first undermines that guarantee — any dependency drift introduced by the regeneration won't be caught.

Better fix: Regenerate the lockfile once from a Linux runner and commit it. All three CI jobs have the same comment/workaround; if the root cause (macOS-committed lockfile) is addressed, all three go away.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

generated from a linux system and removed these lines. Add a note in the README on the recommended way to make these updates.

expect(screen.getByRole('combobox')).toBeInTheDocument();
});

test('selects a preset', async () => {

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.

The test only checks that the dropdown label changes. It does not assert that applyPreset was called with the right session ID and preset ID. Since the confirmation modal was removed and the preset is now applied immediately, this is the most important behavioral path — yet it's untested. The real applyPreset is called, hits jsdom's fetch (which rejects), the error is silently swallowed by the .catch() snackbar handler, and the test still passes. The other new tests (sorts presets...) correctly mock applyPreset, so the pattern is there.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

updated the test to verify that the expected calls occur after selection

@karlnaden karlnaden requested a review from ljtucker June 17, 2026 14:03
Comment thread README.md
## Running Inferno Core for Development Purposes
```
# Install dependencies
npm install

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.

should we still be running npm install?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, because you need to run it to get npm packages loaded onto your local system. But updates to package-lock.json shouldn't be committed. I think the note in the README around updating npm packages covers this.

@karlnaden karlnaden merged commit 305a21d into main Jun 18, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants