Skip to content

Modernise build tooling (Node 22, ESLint 9, Vitest, Vite)#271

Merged
ryanseddon merged 6 commits intomasterfrom
ryan/modernise
Feb 25, 2026
Merged

Modernise build tooling (Node 22, ESLint 9, Vitest, Vite)#271
ryanseddon merged 6 commits intomasterfrom
ryan/modernise

Conversation

@ryanseddon
Copy link
Owner

  • Upgrade to Node 22 LTS
  • Replace Karma/Mocha with Vitest (runs in real browsers via Playwright - Chromium locally, Firefox in CI)
  • Replace Webpack/Babel with Vite for library builds (outputs ESM + UMD)
  • Upgrade ESLint to v9 with flat config
  • Remove legacy config files (webpack.config.js, karma.conf.js, wallaby.conf.js)

- Add vitest.config.js with Playwright browser mode
- Install vitest, @vitest/browser-playwright, @playwright/test
- Multi-browser support: Chromium (all), Firefox (CI), Safari (Mac)
- Create test/setup.js for test utilities
- Migrate tests from chai assertions to Vitest expect
- Update test script to run vitest
- Fix legacy React API issues in tests

BREAKING CHANGE: Tests now run in real browsers instead of jsdom

Remove .ryan/ from tracking (already in global gitignore)
- Add vite.config.js for library builds (ESM + UMD)
- Add vite example dev server with react plugin
- Update package.json with proper exports (main, module, types)
- Update build script to use Vite instead of Babel
- Remove legacy webpack.config.js
- Update example/app.jsx for React 18 createRoot API
- Fix lint errors: unused imports and eslint-disable directives
fix: add Firefox to Playwright CI installation

fix: use --with-deps flag for Playwright browsers
@ryanseddon ryanseddon merged commit add9187 into master Feb 25, 2026
6 checks passed
@ryanseddon ryanseddon deleted the ryan/modernise branch February 25, 2026 09:58
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.

1 participant