Skip to content

Two independent file-scoped test.extend with same key get mixed #9555

@hi-ogawa

Description

@hi-ogawa

Describe the bug

When two independent test.extend calls define file-scoped fixtures with the same key, the second one silently reuses the first's cached value instead of running its own fixture.

const myTest1 = test.extend<{ value: string }>({
  value: [async ({}, use) => { await use('first-value') }, { scope: 'file' }]
})

const myTest2 = test.extend<{ value: string }>({
  value: [async ({}, use) => { await use('second-value') }, { scope: 'file' }]
})

myTest1('test1', ({ value }) => {
  expect(value).toBe('first-value') 
})

myTest2('test2', ({ value }) => {
  expect(value).toBe('first-value') // should be `second-value`
})

Reproduction

https://stackblitz.com/edit/vitest-dev-vitest-cmeatr7q?file=test%2Frepro.test.ts

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 20.19.1 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.8.2 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    vite: latest => 7.3.1 
    vitest: beta => 4.1.0-beta.2

Used Package Manager

npm

Validations

Metadata

Metadata

Assignees

No one assigned

    Labels

    p3-minor-bugAn edge case that only affects very specific usage (priority)

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions