Skip to content

vi.spyOn throwing Cannot redefine property: … in Browser Mode #8169

@wojtekmaj

Description

@wojtekmaj

Describe the bug

I was trying to migrate to Browser Mode, but I'm scratching my head over one test suite.

Scenario: testing a module that imports a variable from another file, and mocking this variable using vi.spyOn as recommended in https://vitest.dev/guide/mocking.html#mock-exported-variables.

In Node.js, this behaves as expected.

In Browser Mode, this crashes with:

Caused by: TypeError: Cannot redefine property: MODE

Reproduction

https://stackblitz.com/edit/vitest-dev-vitest-qe32xcwn?file=package.json

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:
    @vitest/browser: ^3.2.3 => 3.2.3 
    @vitest/ui: latest => 3.2.3 
    playwright: ^1.53.0 => 1.53.0 
    vite: latest => 6.3.5 
    vitest: latest => 3.2.3

Used Package Manager

npm

Validations

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions