This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@vitest/coverage-v8](https://vitest.dev/guide/coverage) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)) | [`4.0.18` → `4.1.1`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/4.0.18/4.1.1) |  |  | | [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.0.18` → `4.1.1`](https://renovatebot.com/diffs/npm/vitest/4.0.18/4.1.1) |  |  | --- ### Release Notes <details> <summary>vitest-dev/vitest (@​vitest/coverage-v8)</summary> ### [`v4.1.1`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.1) [Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.0...v4.1.1) ##### 🚀 Features - **experimental**: - Expose `matchesTags` to test if the current filter matches tags - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9913](https://github.com/vitest-dev/vitest/issues/9913) [<samp>(eec53)</samp>](https://github.com/vitest-dev/vitest/commit/eec53d9f5) - Introduce `experimental.vcsProvider` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9928](https://github.com/vitest-dev/vitest/issues/9928) [<samp>(56115)</samp>](https://github.com/vitest-dev/vitest/commit/561150036) ##### 🐞 Bug Fixes - Mark `TestProject.testFilesList` internal properly - by [@​sapphi-red](https://github.com/sapphi-red) in [#​9867](https://github.com/vitest-dev/vitest/issues/9867) [<samp>(54f26)</samp>](https://github.com/vitest-dev/vitest/commit/54f2660f5) - Detect fixture that returns without calling `use` - by [@​oilater](https://github.com/oilater) in [#​9831](https://github.com/vitest-dev/vitest/issues/9831) and [#​9861](https://github.com/vitest-dev/vitest/issues/9861) [<samp>(633ae)</samp>](https://github.com/vitest-dev/vitest/commit/633ae2303) - Drop vite 8.beta support - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9862](https://github.com/vitest-dev/vitest/issues/9862) [<samp>(b78f5)</samp>](https://github.com/vitest-dev/vitest/commit/b78f5389d) - Type regression in vi.mocked() static class methods - by [@​purepear](https://github.com/purepear) and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9857](https://github.com/vitest-dev/vitest/issues/9857) [<samp>(90926)</samp>](https://github.com/vitest-dev/vitest/commit/90926641b) - Properly re-evaluate actual modules of mocked external - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9898](https://github.com/vitest-dev/vitest/issues/9898) [<samp>(ae5ec)</samp>](https://github.com/vitest-dev/vitest/commit/ae5ec03ef) - Preserve coverage report when html reporter overlaps - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9889](https://github.com/vitest-dev/vitest/issues/9889) [<samp>(2d81a)</samp>](https://github.com/vitest-dev/vitest/commit/2d81ad897) - Provide `vi.advanceTimers` to the preview provider - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9891](https://github.com/vitest-dev/vitest/issues/9891) [<samp>(1bc3e)</samp>](https://github.com/vitest-dev/vitest/commit/1bc3e63be) - Don't leak event listener in playwright provider - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9910](https://github.com/vitest-dev/vitest/issues/9910) [<samp>(d9355)</samp>](https://github.com/vitest-dev/vitest/commit/d93550ff7) - Open browser in `--standalone` mode without running tests - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9911](https://github.com/vitest-dev/vitest/issues/9911) [<samp>(e78ad)</samp>](https://github.com/vitest-dev/vitest/commit/e78adcf97) - Guard disposable and optional `body` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9912](https://github.com/vitest-dev/vitest/issues/9912) [<samp>(6fdb2)</samp>](https://github.com/vitest-dev/vitest/commit/6fdb2ba61) - Resolve `retry.condition` RegExp serialization issue - by [@​nstepien](https://github.com/nstepien) and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9942](https://github.com/vitest-dev/vitest/issues/9942) [<samp>(7b605)</samp>](https://github.com/vitest-dev/vitest/commit/7b6054328) - **collect**: - Don't treat extra props on `test` return as tests - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9871](https://github.com/vitest-dev/vitest/issues/9871) [<samp>(141e7)</samp>](https://github.com/vitest-dev/vitest/commit/141e72aa1) - **coverage**: - Simplify provider types - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9931](https://github.com/vitest-dev/vitest/issues/9931) [<samp>(aaf9f)</samp>](https://github.com/vitest-dev/vitest/commit/aaf9f18ae) - Load built-in provider without module runner - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9939](https://github.com/vitest-dev/vitest/issues/9939) [<samp>(bf892)</samp>](https://github.com/vitest-dev/vitest/commit/bf8920817) - **expect**: - Soft assertions continue after .resolves/.rejects promise errors - by [@​mixelburg](https://github.com/mixelburg), **Maks Pikov**, **Claude Opus 4.6 (1M context)** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9843](https://github.com/vitest-dev/vitest/issues/9843) [<samp>(6d74b)</samp>](https://github.com/vitest-dev/vitest/commit/6d74b4948) - Fix sinon-chai style API - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9943](https://github.com/vitest-dev/vitest/issues/9943) [<samp>(0f08d)</samp>](https://github.com/vitest-dev/vitest/commit/0f08dda2c) - **pretty-format**: - Limit output for large object - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6 (1M context)** in [#​9949](https://github.com/vitest-dev/vitest/issues/9949) [<samp>(0d5f9)</samp>](https://github.com/vitest-dev/vitest/commit/0d5f9d6ef) ##### [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.0...v4.1.1) ### [`v4.1.0`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.0) [Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.18...v4.1.0) Vitest 4.1 is out! This release page lists all changes made to the project during the 4.1 beta. To get a review of all the new features, read our [blog post](https://vitest.dev/blog/vitest-4-1). ##### 🚀 Features - Return a disposable from doMock() - by [@​kirkwaiblinger](https://github.com/kirkwaiblinger) in [#​9332](https://github.com/vitest-dev/vitest/issues/9332) [<samp>(e3e65)</samp>](https://github.com/vitest-dev/vitest/commit/e3e659a96) - Added chai style assertions - by [@​ronnakamoto](https://github.com/ronnakamoto) and [@​sheremet-va](https://github.com/sheremet-va) in [#​8842](https://github.com/vitest-dev/vitest/issues/8842) [<samp>(841df)</samp>](https://github.com/vitest-dev/vitest/commit/841df9ac5) - Update to sinon/fake-timers v15 and add `setTickMode` to timer controls - by [@​atscott](https://github.com/atscott) and [@​sheremet-va](https://github.com/sheremet-va) in [#​8726](https://github.com/vitest-dev/vitest/issues/8726) [<samp>(4b480)</samp>](https://github.com/vitest-dev/vitest/commit/4b480aaed) - Expose matcher types - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9448](https://github.com/vitest-dev/vitest/issues/9448) [<samp>(3e4b9)</samp>](https://github.com/vitest-dev/vitest/commit/3e4b913b1) - Add `toTestSpecification` to reported tasks - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9464](https://github.com/vitest-dev/vitest/issues/9464) [<samp>(1a470)</samp>](https://github.com/vitest-dev/vitest/commit/1a4705da9) - Show a warning if `vi.mock` or `vi.hoisted` are declared outside of top level of the module - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9387](https://github.com/vitest-dev/vitest/issues/9387) [<samp>(5db54)</samp>](https://github.com/vitest-dev/vitest/commit/5db54a468) - Track and display expectedly failed tests (.fails) in UI and CLI - by [@​Copilot](https://github.com/Copilot), **sheremet-va** and [@​sheremet-va](https://github.com/sheremet-va) in [#​9476](https://github.com/vitest-dev/vitest/issues/9476) [<samp>(77d75)</samp>](https://github.com/vitest-dev/vitest/commit/77d75fd34) - Support tags - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9478](https://github.com/vitest-dev/vitest/issues/9478) [<samp>(de7c8)</samp>](https://github.com/vitest-dev/vitest/commit/de7c8a521) - Implement `aroundEach` and `aroundAll` hooks - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9450](https://github.com/vitest-dev/vitest/issues/9450) [<samp>(2a8cb)</samp>](https://github.com/vitest-dev/vitest/commit/2a8cb9dc2) - Stabilize experimental features - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9529](https://github.com/vitest-dev/vitest/issues/9529) [<samp>(b5fd2)</samp>](https://github.com/vitest-dev/vitest/commit/b5fd2a16a) - Accept `new` or `all` in `--update` flag - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9543](https://github.com/vitest-dev/vitest/issues/9543) [<samp>(a5acf)</samp>](https://github.com/vitest-dev/vitest/commit/a5acf28a5) - Support `meta` in test options - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9535](https://github.com/vitest-dev/vitest/issues/9535) [<samp>(7d622)</samp>](https://github.com/vitest-dev/vitest/commit/7d622e3d1) - Support type inference with a new `test.extend` syntax - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9550](https://github.com/vitest-dev/vitest/issues/9550) [<samp>(e5385)</samp>](https://github.com/vitest-dev/vitest/commit/e53854fcc) - Support vite 8 beta, fix type issues in the config with different vite versions - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9587](https://github.com/vitest-dev/vitest/issues/9587) [<samp>(99028)</samp>](https://github.com/vitest-dev/vitest/commit/990281dfd) - Add assertion helper to hide internal stack traces - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9594](https://github.com/vitest-dev/vitest/issues/9594) [<samp>(eeb0a)</samp>](https://github.com/vitest-dev/vitest/commit/eeb0ae2f8) - Store failure screenshots using artifacts API - by [@​macarie](https://github.com/macarie) in [#​9588](https://github.com/vitest-dev/vitest/issues/9588) [<samp>(24603)</samp>](https://github.com/vitest-dev/vitest/commit/24603e3c4) - Allow `vitest list` to statically collect tests instead of running files to collect them - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9630](https://github.com/vitest-dev/vitest/issues/9630) [<samp>(7a8e7)</samp>](https://github.com/vitest-dev/vitest/commit/7a8e7fc20) - Add `--detect-async-leaks` - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9528](https://github.com/vitest-dev/vitest/issues/9528) [<samp>(c594d)</samp>](https://github.com/vitest-dev/vitest/commit/c594d4af3) - Implement `mockThrow` and `mockThrowOnce` - by [@​thor-juhasz](https://github.com/thor-juhasz) and [@​sheremet-va](https://github.com/sheremet-va) in [#​9512](https://github.com/vitest-dev/vitest/issues/9512) [<samp>(61917)</samp>](https://github.com/vitest-dev/vitest/commit/619179fb7) - Support `update: "none"` and add docs about snapshots behavior on CI - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9700](https://github.com/vitest-dev/vitest/issues/9700) [<samp>(05f18)</samp>](https://github.com/vitest-dev/vitest/commit/05f1854e2) - Support playwright `launchOptions` with `connectOptions` - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9702](https://github.com/vitest-dev/vitest/issues/9702) [<samp>(f0ff1)</samp>](https://github.com/vitest-dev/vitest/commit/f0ff1b2a0) - Add `page/locator.mark` API to enhance playwright trace - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9652](https://github.com/vitest-dev/vitest/issues/9652) [<samp>(d0ee5)</samp>](https://github.com/vitest-dev/vitest/commit/d0ee546fe) - **api**: - Support tests starting or ending with `test` in `experimental_parseSpecification` - by [@​jgillick](https://github.com/jgillick) and **Jeremy Gillick** in [#​9235](https://github.com/vitest-dev/vitest/issues/9235) [<samp>(2f367)</samp>](https://github.com/vitest-dev/vitest/commit/2f367fad3) - Add filters to `createSpecification` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9336](https://github.com/vitest-dev/vitest/issues/9336) [<samp>(c8e6c)</samp>](https://github.com/vitest-dev/vitest/commit/c8e6c7fbf) - Expose `runTestFiles` as alternative to `runTestSpecifications` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9443](https://github.com/vitest-dev/vitest/issues/9443) [<samp>(43d76)</samp>](https://github.com/vitest-dev/vitest/commit/43d761821) - Add `allowWrite` and `allowExec` options to `api` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9350](https://github.com/vitest-dev/vitest/issues/9350) [<samp>(20e00)</samp>](https://github.com/vitest-dev/vitest/commit/20e00ef78) - Allow passing down test cases to `toTestSpecification` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9627](https://github.com/vitest-dev/vitest/issues/9627) [<samp>(6f17d)</samp>](https://github.com/vitest-dev/vitest/commit/6f17d5ddf) - **browser**: - Add `userEvent.wheel` API - by [@​macarie](https://github.com/macarie) in [#​9188](https://github.com/vitest-dev/vitest/issues/9188) [<samp>(66080)</samp>](https://github.com/vitest-dev/vitest/commit/660801979) - Add `filterNode` option to prettyDOM for filtering browser assertion error output - by [@​Copilot](https://github.com/Copilot), **sheremet-va** and [@​sheremet-va](https://github.com/sheremet-va) in [#​9475](https://github.com/vitest-dev/vitest/issues/9475) [<samp>(d3220)</samp>](https://github.com/vitest-dev/vitest/commit/d3220fcd8) - Support playwright persistent context - by [@​hi-ogawa](https://github.com/hi-ogawa), **Claude Opus 4.6** and [@​sheremet-va](https://github.com/sheremet-va) in [#​9229](https://github.com/vitest-dev/vitest/issues/9229) [<samp>(f865d)</samp>](https://github.com/vitest-dev/vitest/commit/f865d2ba4) - Added `detailsPanelPosition` option and button - by [@​shairez](https://github.com/shairez) in [#​9525](https://github.com/vitest-dev/vitest/issues/9525) [<samp>(c8a31)</samp>](https://github.com/vitest-dev/vitest/commit/c8a31147c) - Use BlazeDiff instead of pixelmatch - by [@​macarie](https://github.com/macarie) in [#​9514](https://github.com/vitest-dev/vitest/issues/9514) [<samp>(30936)</samp>](https://github.com/vitest-dev/vitest/commit/309362089) - Add `findElement` and enable strict mode in webdriverio and preview - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9677](https://github.com/vitest-dev/vitest/issues/9677) [<samp>(c3f37)</samp>](https://github.com/vitest-dev/vitest/commit/c3f37721c) - **cli**: - Add [@​bomb](https://github.com/bomb).sh/tab completions - by [@​AmirSa12](https://github.com/AmirSa12) and [@​sheremet-va](https://github.com/sheremet-va) in [#​8639](https://github.com/vitest-dev/vitest/issues/8639) [<samp>(200f3)</samp>](https://github.com/vitest-dev/vitest/commit/200f31704) - **coverage**: - Support `ignore start/stop` ignore hints - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9204](https://github.com/vitest-dev/vitest/issues/9204) [<samp>(e59c9)</samp>](https://github.com/vitest-dev/vitest/commit/e59c94ba6) - Add `coverage.changed` option to report only changed files - by [@​kykim00](https://github.com/kykim00) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9521](https://github.com/vitest-dev/vitest/issues/9521) [<samp>(1d939)</samp>](https://github.com/vitest-dev/vitest/commit/1d9392c67) - **experimental**: - Add `onModuleRunner` hook to `worker.init` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9286](https://github.com/vitest-dev/vitest/issues/9286) [<samp>(e977f)</samp>](https://github.com/vitest-dev/vitest/commit/e977f3deb) - Option to disable the module runner - by [@​sheremet-va](https://github.com/sheremet-va) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9210](https://github.com/vitest-dev/vitest/issues/9210) [<samp>(9be61)</samp>](https://github.com/vitest-dev/vitest/commit/9be6121ee) - Add `importDurations: { limit, print }` options - by [@​hi-ogawa](https://github.com/hi-ogawa), **Claude Opus 4.6** and [@​sheremet-va](https://github.com/sheremet-va) in [#​9401](https://github.com/vitest-dev/vitest/issues/9401) [<samp>(7e10f)</samp>](https://github.com/vitest-dev/vitest/commit/7e10fb356) - Add print and fail thresholds for `importDurations` - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9533](https://github.com/vitest-dev/vitest/issues/9533) [<samp>(3f7a5)</samp>](https://github.com/vitest-dev/vitest/commit/3f7a5f8f8) - **fixtures**: - Pass down file context to `beforeAll`/`afterAll` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9572](https://github.com/vitest-dev/vitest/issues/9572) [<samp>(c8339)</samp>](https://github.com/vitest-dev/vitest/commit/c83395f2c) - **reporters**: - Add `agent` reporter to reduce ai agent token usage - by [@​cpojer](https://github.com/cpojer) in [#​9779](https://github.com/vitest-dev/vitest/issues/9779) [<samp>(3e9e0)</samp>](https://github.com/vitest-dev/vitest/commit/3e9e096a2) - **runner**: - Enhance `retry` options - by [@​MazenSamehR](https://github.com/MazenSamehR), **Matan Shavit**, [@​AriPerkkio](https://github.com/AriPerkkio) and [@​sheremet-va](https://github.com/sheremet-va) in [#​9370](https://github.com/vitest-dev/vitest/issues/9370) [<samp>(9e4cf)</samp>](https://github.com/vitest-dev/vitest/commit/9e4cfd295) - **ui**: - Allow run individual test/suites - by [@​userquin](https://github.com/userquin) in [#​9465](https://github.com/vitest-dev/vitest/issues/9465) [<samp>(73b10)</samp>](https://github.com/vitest-dev/vitest/commit/73b10f1b9) - Add project filter/sort support - by [@​userquin](https://github.com/userquin) in [#​8689](https://github.com/vitest-dev/vitest/issues/8689) [<samp>(0c7ea)</samp>](https://github.com/vitest-dev/vitest/commit/0c7eaac16) - Add duration sorting to explorer - by [@​julianhahn](https://github.com/julianhahn) and [@​cursoragent](https://github.com/cursoragent) in [#​9603](https://github.com/vitest-dev/vitest/issues/9603) [<samp>(209b1)</samp>](https://github.com/vitest-dev/vitest/commit/209b1b0e1) - Implement filter for slow tests - by [@​DerYeger](https://github.com/DerYeger) and [@​userquin](https://github.com/userquin) in [#​9705](https://github.com/vitest-dev/vitest/issues/9705) [<samp>(8880c)</samp>](https://github.com/vitest-dev/vitest/commit/8880c907a) - **vitest**: - Add run summary in GitHub Actions Reporter - by [@​macarie](https://github.com/macarie) and **jhnance** in [#​9579](https://github.com/vitest-dev/vitest/issues/9579) [<samp>(96bfc)</samp>](https://github.com/vitest-dev/vitest/commit/96bfc8345) ##### 🐞 Bug Fixes - Deprecate several vitest/\* entry points - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9347](https://github.com/vitest-dev/vitest/issues/9347) [<samp>(fd459)</samp>](https://github.com/vitest-dev/vitest/commit/fd45928be) - Use `meta.url` in `createRequire` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9441](https://github.com/vitest-dev/vitest/issues/9441) [<samp>(e3422)</samp>](https://github.com/vitest-dev/vitest/commit/e34225563) - Preact browser mode init example of render function not async - by [@​WuMingDao](https://github.com/WuMingDao) in [#​9375](https://github.com/vitest-dev/vitest/issues/9375) [<samp>(2bea5)</samp>](https://github.com/vitest-dev/vitest/commit/2bea549c7) - Deprecate unused types in matcher context - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9449](https://github.com/vitest-dev/vitest/issues/9449) [<samp>(20f87)</samp>](https://github.com/vitest-dev/vitest/commit/20f8753a2) - Handle `external/noExternal` during `configEnvironment` hook - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9508](https://github.com/vitest-dev/vitest/issues/9508) [<samp>(59ea2)</samp>](https://github.com/vitest-dev/vitest/commit/59ea27c1c) - Replace default ssr environment runner with Vitest server module runner - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9506](https://github.com/vitest-dev/vitest/issues/9506) [<samp>(cd5db)</samp>](https://github.com/vitest-dev/vitest/commit/cd5db660c) - Propagate experimental CLI options to child projects - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9531](https://github.com/vitest-dev/vitest/issues/9531) [<samp>(b624f)</samp>](https://github.com/vitest-dev/vitest/commit/b624fae53) - Show a warning when `browser.isolate` is used - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9410](https://github.com/vitest-dev/vitest/issues/9410) [<samp>(3d48e)</samp>](https://github.com/vitest-dev/vitest/commit/3d48ebcb9) - Fix `vi.mock({ spy: true })` node v8 coverage - by [@​hi-ogawa](https://github.com/hi-ogawa), **hi-ogawa** and **Claude Opus 4.6** in [#​9541](https://github.com/vitest-dev/vitest/issues/9541) [<samp>(687b6)</samp>](https://github.com/vitest-dev/vitest/commit/687b633c1) - Don't show internal ssr handler in errors - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9547](https://github.com/vitest-dev/vitest/issues/9547) [<samp>(76c43)</samp>](https://github.com/vitest-dev/vitest/commit/76c4397b5) - Close vitest if it failed to start - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9573](https://github.com/vitest-dev/vitest/issues/9573) [<samp>(728ba)</samp>](https://github.com/vitest-dev/vitest/commit/728ba617f) - Fix ssr environment runner in project - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9584](https://github.com/vitest-dev/vitest/issues/9584) [<samp>(09006)</samp>](https://github.com/vitest-dev/vitest/commit/090064f97) - Trim trailing white spaces in code block - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9591](https://github.com/vitest-dev/vitest/issues/9591) [<samp>(f78be)</samp>](https://github.com/vitest-dev/vitest/commit/f78bea992) - Support inline snapshot inside test.for/each - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9590](https://github.com/vitest-dev/vitest/issues/9590) [<samp>(615fd)</samp>](https://github.com/vitest-dev/vitest/commit/615fd521e) - Apply source maps for external module stack trace - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9152](https://github.com/vitest-dev/vitest/issues/9152) [<samp>(79e20)</samp>](https://github.com/vitest-dev/vitest/commit/79e20d5a3) - Remove the `.name` from statically collected test - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9596](https://github.com/vitest-dev/vitest/issues/9596) [<samp>(b66ff)</samp>](https://github.com/vitest-dev/vitest/commit/b66ff691a) - Don't suppress warnings on pnp - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9602](https://github.com/vitest-dev/vitest/issues/9602) [<samp>(89cbd)</samp>](https://github.com/vitest-dev/vitest/commit/89cbdaea3) - Support snapshot with `expect.soft` - by [@​iumehara](https://github.com/iumehara), [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9231](https://github.com/vitest-dev/vitest/issues/9231) [<samp>(3eb2c)</samp>](https://github.com/vitest-dev/vitest/commit/3eb2cd541) - Log seed when only `sequence.shuffle.tests` is enabled - by [@​kaigritun](https://github.com/kaigritun), **Kai Gritun** and [@​sheremet-va](https://github.com/sheremet-va) in [#​9576](https://github.com/vitest-dev/vitest/issues/9576) [<samp>(8182b)</samp>](https://github.com/vitest-dev/vitest/commit/8182b77ad) - Externalize `expect/src/utils` from `vitest` - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9616](https://github.com/vitest-dev/vitest/issues/9616) [<samp>(48739)</samp>](https://github.com/vitest-dev/vitest/commit/487398422) - Ignore test.override during static collection - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9620](https://github.com/vitest-dev/vitest/issues/9620) [<samp>(09174)</samp>](https://github.com/vitest-dev/vitest/commit/0917470ce) - Increase stacktrace limit for `--detect-async-leaks` - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9638](https://github.com/vitest-dev/vitest/issues/9638) [<samp>(9fd4c)</samp>](https://github.com/vitest-dev/vitest/commit/9fd4ce533) - Hanging-reporter link in cli - by [@​flx-sta](https://github.com/flx-sta) in [#​9649](https://github.com/vitest-dev/vitest/issues/9649) [<samp>(7c103)</samp>](https://github.com/vitest-dev/vitest/commit/7c103055c) - Fix teardown timeout of `aroundEach/All` when inner `aroundEach/All` throws - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9657](https://github.com/vitest-dev/vitest/issues/9657) [<samp>(4ec6c)</samp>](https://github.com/vitest-dev/vitest/commit/4ec6cb305) - Fix ui mode / html reporter and coverage integration - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9626](https://github.com/vitest-dev/vitest/issues/9626) [<samp>(86fad)</samp>](https://github.com/vitest-dev/vitest/commit/86fad4b42) - Don't continue when `aroundEach/All` setup timed out - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9670](https://github.com/vitest-dev/vitest/issues/9670) [<samp>(bb013)</samp>](https://github.com/vitest-dev/vitest/commit/bb013d54b) - Align `VitestRunnerConfig` optional fields with `SerializedConfig` - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9661](https://github.com/vitest-dev/vitest/issues/9661) [<samp>(79520)</samp>](https://github.com/vitest-dev/vitest/commit/79520d82d) - Handle Symbol values in format utility - by [@​nami8824](https://github.com/nami8824) in [#​9658](https://github.com/vitest-dev/vitest/issues/9658) [<samp>(0583f)</samp>](https://github.com/vitest-dev/vitest/commit/0583f067e) - Deprecate `toBe*` spy assertions in favor of `toHaveBeen*` (and `toThrowError`) - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9665](https://github.com/vitest-dev/vitest/issues/9665) [<samp>(4d390)</samp>](https://github.com/vitest-dev/vitest/commit/4d390dfe9) - Don't propagate nested `aroundEach/All` errors but aggregate them on runner - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9673](https://github.com/vitest-dev/vitest/issues/9673) [<samp>(b6365)</samp>](https://github.com/vitest-dev/vitest/commit/b63653f5a) - Show a better error if there is a pending dynamic import - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9676](https://github.com/vitest-dev/vitest/issues/9676) [<samp>(7ef5c)</samp>](https://github.com/vitest-dev/vitest/commit/7ef5cf4b7) - Preserve stack trace of `resolves/rejects` chained assertion error - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9679](https://github.com/vitest-dev/vitest/issues/9679) [<samp>(c6151)</samp>](https://github.com/vitest-dev/vitest/commit/c61511d4a) - Handle module-sync condition in vmThreads/vmForks require - by [@​lesleh](https://github.com/lesleh) in [#​9650](https://github.com/vitest-dev/vitest/issues/9650) and [#​9651](https://github.com/vitest-dev/vitest/issues/9651) [<samp>(bb203)</samp>](https://github.com/vitest-dev/vitest/commit/bb20389f4) - Hooks should respect `maxConcurrency` - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9653](https://github.com/vitest-dev/vitest/issues/9653) [<samp>(16d13)</samp>](https://github.com/vitest-dev/vitest/commit/16d13d981) - Recursively autospy module object - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9687](https://github.com/vitest-dev/vitest/issues/9687) [<samp>(695a8)</samp>](https://github.com/vitest-dev/vitest/commit/695a86b41) - Remove trailing spaces from diff error log - by [@​hi-ogawa](https://github.com/hi-ogawa) and [@​sheremet-va](https://github.com/sheremet-va) in [#​9680](https://github.com/vitest-dev/vitest/issues/9680) [<samp>(395d1)</samp>](https://github.com/vitest-dev/vitest/commit/395d1a29e) - Respect project `resolve.conditions` for externals - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9717](https://github.com/vitest-dev/vitest/issues/9717) [<samp>(1d498)</samp>](https://github.com/vitest-dev/vitest/commit/1d4987498) - Use object for WeakMap instead of a symbol to support webcontainers - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9731](https://github.com/vitest-dev/vitest/issues/9731) [<samp>(c5225)</samp>](https://github.com/vitest-dev/vitest/commit/c52259330) - Fix re-mocking virtual module - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9748](https://github.com/vitest-dev/vitest/issues/9748) [<samp>(3cbbb)</samp>](https://github.com/vitest-dev/vitest/commit/3cbbb17f1) - Cancelling should stop current test immediately - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9729](https://github.com/vitest-dev/vitest/issues/9729) [<samp>(0cb2f)</samp>](https://github.com/vitest-dev/vitest/commit/0cb2f7239) - Make `mockObject` change backwards compatible - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9744](https://github.com/vitest-dev/vitest/issues/9744) [<samp>(84c69)</samp>](https://github.com/vitest-dev/vitest/commit/84c69497f) - Fix `URL.name` on jsdom - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9767](https://github.com/vitest-dev/vitest/issues/9767) [<samp>(031f3)</samp>](https://github.com/vitest-dev/vitest/commit/031f3a374) - Save and restore module graph in blob reporter - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9740](https://github.com/vitest-dev/vitest/issues/9740) [<samp>(84355)</samp>](https://github.com/vitest-dev/vitest/commit/843554bf0) - Don't silence reporter errors from test runtime events handler in normal run and --merge-reports - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9727](https://github.com/vitest-dev/vitest/issues/9727) [<samp>(4072d)</samp>](https://github.com/vitest-dev/vitest/commit/4072d0132) - Fix `vi.importActual()` for virtual modules - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9772](https://github.com/vitest-dev/vitest/issues/9772) [<samp>(1e89e)</samp>](https://github.com/vitest-dev/vitest/commit/1e89ec020) - Throw `FixtureAccessError` if suite hook accesses undefined fixture - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9786](https://github.com/vitest-dev/vitest/issues/9786) [<samp>(fc2ce)</samp>](https://github.com/vitest-dev/vitest/commit/fc2cea2b7) - Allow hyphens in project config file name pattern - by [@​Koutaro-Hanabusa](https://github.com/Koutaro-Hanabusa) and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9760](https://github.com/vitest-dev/vitest/issues/9760) [<samp>(33e96)</samp>](https://github.com/vitest-dev/vitest/commit/33e96311a) - Manual and redirect mock shouldn't `load` or `transform` original module - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9774](https://github.com/vitest-dev/vitest/issues/9774) [<samp>(a8216)</samp>](https://github.com/vitest-dev/vitest/commit/a8216b001) - `hideSkippedTests` should not hide `test.todo` - by [@​oilater](https://github.com/oilater) in [#​9562](https://github.com/vitest-dev/vitest/issues/9562) and [#​9781](https://github.com/vitest-dev/vitest/issues/9781) [<samp>(8181e)</samp>](https://github.com/vitest-dev/vitest/commit/8181e06e7) - Allow catch/finally for async assertion - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9827](https://github.com/vitest-dev/vitest/issues/9827) [<samp>(031f0)</samp>](https://github.com/vitest-dev/vitest/commit/031f02a89) - Resolve fixture overrides from test's suite in `beforeEach` hooks - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9826](https://github.com/vitest-dev/vitest/issues/9826) [<samp>(99e52)</samp>](https://github.com/vitest-dev/vitest/commit/99e52fe58) - Use isAgent check, not just TTY, for watch mode - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9841](https://github.com/vitest-dev/vitest/issues/9841) [<samp>(c3cac)</samp>](https://github.com/vitest-dev/vitest/commit/c3cac1c1b) - Use `performance.now` to measure test timeout duration - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9795](https://github.com/vitest-dev/vitest/issues/9795) [<samp>(f48a6)</samp>](https://github.com/vitest-dev/vitest/commit/f48a60114) - Correctly identify concurrent test during static analysis - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9846](https://github.com/vitest-dev/vitest/issues/9846) [<samp>(1de0a)</samp>](https://github.com/vitest-dev/vitest/commit/1de0aa22d) - **browser**: - Avoid updating screenshots when `toMatchScreenshot` passes - by [@​macarie](https://github.com/macarie) in [#​9289](https://github.com/vitest-dev/vitest/issues/9289) [<samp>(46aab)</samp>](https://github.com/vitest-dev/vitest/commit/46aabaa44) - Hide injected data-testid attributes - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9503](https://github.com/vitest-dev/vitest/issues/9503) [<samp>(c8d2c)</samp>](https://github.com/vitest-dev/vitest/commit/c8d2c411c) - Throw an error if iframe was reloaded - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9516](https://github.com/vitest-dev/vitest/issues/9516) [<samp>(73a81)</samp>](https://github.com/vitest-dev/vitest/commit/73a81f880) - Encode projectName in browser client URL - by [@​dkkim0122](https://github.com/dkkim0122) in [#​9523](https://github.com/vitest-dev/vitest/issues/9523) [<samp>(5b164)</samp>](https://github.com/vitest-dev/vitest/commit/5b16483c3) - Don't take failure screenshot if tests have artifacts created by `toMatchScreenshot` - by [@​macarie](https://github.com/macarie) in [#​9552](https://github.com/vitest-dev/vitest/issues/9552) [<samp>(83ca0)</samp>](https://github.com/vitest-dev/vitest/commit/83ca02547) - Remove `--remote-debugging-address` from chrome args - by [@​hi-ogawa](https://github.com/hi-ogawa) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9712](https://github.com/vitest-dev/vitest/issues/9712) [<samp>(f09bb)</samp>](https://github.com/vitest-dev/vitest/commit/f09bb5c32) - Make sure userEvent actions support `ensureAwaited` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9732](https://github.com/vitest-dev/vitest/issues/9732) [<samp>(97685)</samp>](https://github.com/vitest-dev/vitest/commit/9768517b8) - Types of `getCDPSession` and `cdp()` - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9716](https://github.com/vitest-dev/vitest/issues/9716) [<samp>(689a2)</samp>](https://github.com/vitest-dev/vitest/commit/689a22a1b) - Skip esbuild.legalComments when using rolldown-vite - by [@​Copilot](https://github.com/Copilot), **hi-ogawa** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9803](https://github.com/vitest-dev/vitest/issues/9803) [<samp>(3505f)</samp>](https://github.com/vitest-dev/vitest/commit/3505fa5a3) - **chai**: - Don't allow `deepEqual` in the config because it's not serializable - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9666](https://github.com/vitest-dev/vitest/issues/9666) [<samp>(9ee99)</samp>](https://github.com/vitest-dev/vitest/commit/9ee999d73) - **coverage**: - Infer transform mode for uncovered files - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9435](https://github.com/vitest-dev/vitest/issues/9435) [<samp>(f3967)</samp>](https://github.com/vitest-dev/vitest/commit/f396792d6) - `thresholds.autoUpdate` to preserve ending whitespace - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9436](https://github.com/vitest-dev/vitest/issues/9436) [<samp>(7e534)</samp>](https://github.com/vitest-dev/vitest/commit/7e534a0b6) - **deps**: - Update all non-major dependencies - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9192](https://github.com/vitest-dev/vitest/issues/9192) [<samp>(90c30)</samp>](https://github.com/vitest-dev/vitest/commit/90c302f3b) - Update all non-major dependencies - in [#​9485](https://github.com/vitest-dev/vitest/issues/9485) [<samp>(c0118)</samp>](https://github.com/vitest-dev/vitest/commit/c01186022) - Update all non-major dependencies - in [#​9567](https://github.com/vitest-dev/vitest/issues/9567) [<samp>(13c9e)</samp>](https://github.com/vitest-dev/vitest/commit/13c9e022b) - **docs**: - Fix old `/config/#option` hash links causing hydration errors - by [@​hi-ogawa](https://github.com/hi-ogawa), **Claude Opus 4.6** and [@​sheremet-va](https://github.com/sheremet-va) in [#​9610](https://github.com/vitest-dev/vitest/issues/9610) [<samp>(a603c)</samp>](https://github.com/vitest-dev/vitest/commit/a603c3a30) - **expect**: - `toMatchObject(Map/Set)` should expect `Map/Set` on left hand side - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9532](https://github.com/vitest-dev/vitest/issues/9532) [<samp>(381da)</samp>](https://github.com/vitest-dev/vitest/commit/381da4a9d) - Fix objectContaining with proxy - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9554](https://github.com/vitest-dev/vitest/issues/9554) [<samp>(7ce34)</samp>](https://github.com/vitest-dev/vitest/commit/7ce3417b1) - Support arbitrary value equality for `toThrow` and make Error detection robust - by [@​hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 4.6** in [#​9570](https://github.com/vitest-dev/vitest/issues/9570) [<samp>(de215)</samp>](https://github.com/vitest-dev/vitest/commit/de215c19c) - **mock**: - Inject helpers after hashbang if present - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9545](https://github.com/vitest-dev/vitest/issues/9545) [<samp>(65432)</samp>](https://github.com/vitest-dev/vitest/commit/65432a74b) - **mocker**: - Update vite's peer dependency range - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9808](https://github.com/vitest-dev/vitest/issues/9808) [<samp>(36f9a)</samp>](https://github.com/vitest-dev/vitest/commit/36f9a81a2) - **reporter**: - `dot` reporter leaves pending tests - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9684](https://github.com/vitest-dev/vitest/issues/9684) [<samp>(4d793)</samp>](https://github.com/vitest-dev/vitest/commit/4d7938a56) - **runner**: - Mark repeated tests as finished on last run - by [@​AriPerkkio](https://github.com/AriPerkkio) in [#​9707](https://github.com/vitest-dev/vitest/issues/9707) [<samp>(cc735)</samp>](https://github.com/vitest-dev/vitest/commit/cc735970a) - **spy**: - Support deep partial in vi.mocked - by [@​j2h30728](https://github.com/j2h30728) in [#​8152](https://github.com/vitest-dev/vitest/issues/8152) and [#​9493](https://github.com/vitest-dev/vitest/issues/9493) [<samp>(71cb5)</samp>](https://github.com/vitest-dev/vitest/commit/71cb51ffc) - Fallback to object accessor if descriptor's value is `undefined` - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9511](https://github.com/vitest-dev/vitest/issues/9511) [<samp>(6f181)</samp>](https://github.com/vitest-dev/vitest/commit/6f18103fa) - Throw correct errors when shorthand methods are used on a class - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9513](https://github.com/vitest-dev/vitest/issues/9513) [<samp>(5d0fd)</samp>](https://github.com/vitest-dev/vitest/commit/5d0fd3b62) - **types**: - `bench.reporters` no longer gives type errors when passing file name string paths - by [@​Bertie690](https://github.com/Bertie690) in [#​9695](https://github.com/vitest-dev/vitest/issues/9695) [<samp>(093c8)</samp>](https://github.com/vitest-dev/vitest/commit/093c8f6b5) - **ui**: - Process artifact attachments when generating HTML reporter - by [@​macarie](https://github.com/macarie) in [#​9472](https://github.com/vitest-dev/vitest/issues/9472) [<samp>(96eb9)</samp>](https://github.com/vitest-dev/vitest/commit/96eb92826) - Don't fail if --ui and --root are specified together - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9536](https://github.com/vitest-dev/vitest/issues/9536) [<samp>(d9305)</samp>](https://github.com/vitest-dev/vitest/commit/d93055fc7) ##### 🏎 Performance - **pretty-format**: Combine DOMElement plugins - by [@​sheremet-va](https://github.com/sheremet-va) in [#​9581](https://github.com/vitest-dev/vitest/issues/9581) [<samp>(da85a)</samp>](https://github.com/vitest-dev/vitest/commit/da85a3267) ##### [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.17...v4.1.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "on monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40Ni42IiwidXBkYXRlZEluVmVyIjoiNDMuODUuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21hdGlvbiIsIm5wbSJdfQ==--> Reviewed-on: https://git.horstenkamp.eu/Screeps/screeps-deploy-action/pulls/75 Co-authored-by: Renovate Bot <renovate@horstenkamp.eu> Co-committed-by: Renovate Bot <renovate@horstenkamp.eu>
screeps-deploy-action
Introduction
This GitHub Action facilitates the uploading of code to a Screeps server. It's designed to automate the process of deploying JavaScript code to your Screeps account, ensuring that your game logic is consistently and efficiently updated. Prerequisites
A Screeps account with an access token.
A GitHub or Gitea repository with your Screeps code.
Usage
To use this action, you need to set it up in your workflow .yml file located in the .github/workflows directory of your repository.
Inputs
protocol: The protocol to use (default: https).hostname: The hostname of the Screeps server (default: screeps.com).port: The port to use (default: 443).path: The path for the API (default: /).token: Authentication token for Screeps.username: Username for Screeps account (used if no token is provided).password: Password for Screeps account (used if no token is provided).prefix: Directory prefix for file paths.pattern: Glob pattern to match files (default: *.js).branch: Branch in Screeps to which the code will be uploaded (default: default).git-replace: Overwrite "{{gitRef}}", "{{gitHash}}" and "{{deployTime}}" values in files matching the pattern.
Example Workflow
Create a .yml file (e.g., screeps-deploy.yml) in your repository's .github/workflows directory or .gitea/workflows directory:
name: Deploy to Screeps
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Upload to Screeps
uses: Screeps/screeps-deploy-action@main
with:
token: ${{ secrets.SCREEPS_TOKEN }}
pattern: '**/*.js'
branch: 'default'
git-replace: /some_options.js
In this example:
- The action runs on every push to the repository.
- It checks out your code.
- Then, it uses the "Upload to Screeps" action to deploy the code to your Screeps account.
- You need to set SCREEPS_TOKEN in your repository secrets.
Advanced Usage
Please note that you can easily filter your deployment branches in the push action. Multiple deploy steps or jobs are recomended for mulitple deployments.
Development & Build
This project includes a build step to prepare the action for use.
Why a Build Step?
We use a build step to compile the JavaScript code and its dependencies into a single, self-contained file (dist/index.js). This approach is chosen for the following reasons:
- Zero-configuration at Runtime: By bundling everything, the action runner doesn't need to run
npm install, which speeds up the action execution. - Reliability: It guarantees that the exact versions of dependencies tested during development are used in the action, avoiding potential issues with version updates or missing packages.
- Standard Practice: This is a recommended practice for JavaScript-based GitHub/Gitea Actions.
The Tool: @vercel/ncc
We chose @vercel/ncc as the compiler because:
- It is designed specifically for compiling Node.js modules into a single file.
- It handles native dependencies and dynamic requires intelligently.
- It is zero-config, making the setup simple and maintainable.
How to Build
If you modify index.js or change dependencies, you must rebuild the project before committing:
npm install
npm run build
This will update the dist/index.js file, which should be committed to the repository.
Cross-Platform Compatibility
To ensure this action runs on all platforms (including ARM devices like Raspberry Pi), we explicitly exclude optional native dependencies (utf-8-validate and bufferutil) from the build. This forces the underlying ws library to use its pure JavaScript fallback implementation.
Build Protocol
| Metric | Status / Value |
|---|---|
| Last Build | Saturday, December 27, 2025 |
| Build Tool | @vercel/ncc |
| Target Runtime | Node.js 20 |
| Artifact | dist/index.js (Self-contained) |
| Native Binaries | None (Excluded for cross-platform support) |
| Compatibility | Linux (x64/ARM), Windows, macOS |
| Build Status | ✅ Success |