Skip to content

Release 0.6.1 - #70

Merged
Huldoser merged 1 commit into
mainfrom
release-0.6.1
Oct 30, 2026
Merged

Huldoser merged 1 commit into
mainfrom
release-0.6.1

Conversation

@Huldoser

Copy link
Copy Markdown
Owner

What changed

Release 0.6.1, made with npm run release.

Patch Changes

  • #69 41ce74d - An import that matches a tsconfig paths pattern but none of its files, as an installed package does with
    "paths": { "*": ["./src/types/*"] }, now goes on to the usual lookup, as TypeScript does. Such imports were reported
    as unreadable, so every test that used a package or a built-in module such as node:fs got
    hasUnfollowedDependencies. An @/ or ~/ alias whose files are missing is still reported.

  • #69 41ce74d - A file that only passes names on, as a barrel index.ts with export * from './fees' or
    export { OrderTicket } from './order-ticket' does, is now in the dependencies of the tests that import through it,
    so --related keeps them when the file changes. Which module a re-export points at is now part of dependencyHash, as
    an import's already was, so the hash of a test that imports through a re-export changes once.

  • #69 41ce74d - An imported file that isn't text, such as import logo from './logo.png', is now taken by its bytes in
    dependencyHash. It was read as text, where every byte that isn't UTF-8 reads the same, so two different images could
    give the same hash.

  • #69 41ce74d - A <script> block in a Vue or Svelte component whose type isn't JavaScript, such as
    <script type="application/ld+json"> in <svelte:head>, is no longer read as the component's code. It made the
    component unreadable, so the modules its real script imports were missing from dependencies.

  • #68 fa9b97a - dependencyHash now follows what a Vue or Svelte single-file component imports, also the components and helpers only
    its template uses, so a change to a child component changes the hash of the tests that mount its parent. A component
    whose script doesn't parse is still taken by its text, and its tests get hasUnfollowedDependencies.

  • #69 41ce74d - A file with brackets nested more than 500 deep, such as a generated fixture, now gets a parse-error instead of
    crashing the scan. oxc-parser overflows the native stack on such a file, about 5,000 deep, and the process dies with a
    segmentation fault that no error handling can catch, so no inventory was written.

  • #69 41ce74d - expectCount now counts expect.element(), the assertion of Vitest browser mode, so a browser test that checks the
    page only with await expect.element(locator).toBeVisible() no longer looks like a test without assertions.

  • #69 41ce74d - An import written with a .jsx extension now finds the .tsx file it refers to, as .js already found .ts, so
    import { OrderHeader } from './OrderHeader.jsx' is followed instead of marking the test with
    hasUnfollowedDependencies.

  • #69 41ce74d - From Playwright 1.57, the config's tag is now read: every test gets it first in its tags, and a project's grep or
    grepInvert matches it, so a project with grepInvert: /@nightly/ in a config with tag: '@nightly' no longer runs
    the tests. When the scan can't work out the tag, as for process.env.CI_ENVIRONMENT_NAME, it gets a
    config-value-unknown warning, and the tests of a project with a grep get projects: null.

  • #69 41ce74d - From Playwright 1.64, a project with default: false is no longer listed in a test's projects, as Playwright runs it
    only with --project, unless a project that runs lists it in dependencies or teardown. A default the scan can't
    work out gets a config-value-unknown warning, and the tests it may run get projects: null.

  • #69 41ce74d - Playwright's defineConfig(base, config) is now merged as Playwright merges it: a project of config merges into the
    project of base with the same name instead of replacing all of base's projects, and expect, use and build
    merge key by key. A setup project from a base config is no longer lost, and an expect.toHaveScreenshot.pathTemplate
    from the base still marks the tests that compare screenshots with hasUnfollowedDependencies.

  • #69 41ce74d - A Vitest retry object in a test's or describe's options before Vitest 4.1 now gets an unresolved-option warning
    and retries: null. Vitest 4.0 and 3.2 never run such a test; the scan used to ignore the object and give the
    config's retry count instead.

  • #69 41ce74d - A Vitest test's own skip, only, todo or fails option now replaces the one its tags set, as Vitest does, so
    test('title', { tags: ['flaky'], skip: false }, fn) is active instead of skipped, and a conditional skip replaces
    the tag's unconditional one.

  • #69 41ce74d - An import that starts with @/ or ~/, as a Vite resolve.alias allows, now gives the test
    hasUnfollowedDependencies and a dependency-not-followed warning when no tsconfig paths define it. It was taken for
    an installed package, so the aliased file was missing from dependencies without a sign, and --related left the test
    out when that file changed.

  • #69 41ce74d - Vitest 5 tests follow the option rules of Vitest 5.0.5: the last of .skip, skipIf() and runIf() on a test
    decides its skip, so test.skip.skipIf(false) is active, and a skipIf() or runIf() replaces the skip of a tag or of
    the options a describe passes down. An option set to undefined, as in test.skip('title', { skip: undefined }, fn),
    no longer undoes the chain or a tag.

  • #69 41ce74d - In Vitest 5, the projects of a config that another config lists in projects are named inside that config's name, as
    Vitest names them: the unit project of apps/web/vitest.config.ts, named web, is web (unit).

  • #69 41ce74d - A Vitest project without a test.name now has the name Vitest gives it, in projects and in configs: the name in
    the package.json of its folder, else the folder's name, so projects: ['packages/*'] names its projects
    @trading/pricing or ledger instead of "". An inline project without a name is named after its place among the
    inline projects, as 0, and in Vitest 5 no longer takes the name of the config it extends.

Checklist

  • Tests cover the change, and npm run coverage reports 100%.
  • The docs describe the change: the guide or reference pages, the README, or the TSDoc of exported functions.
  • No docs change is needed.
  • A changeset describes the change for users (npm run changeset), or the change does not affect them.

@Huldoser
Huldoser enabled auto-merge (squash) October 30, 2026 14:29
@Huldoser
Huldoser merged commit c12460a into main Oct 30, 2026
31 checks passed
@Huldoser
Huldoser deleted the release-0.6.1 branch October 30, 2026 14:32
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