Skip to content

unexpected <empty line> logs when interleaving console.log and console.error #6621

@hi-ogawa

Description

@hi-ogawa

Describe the bug

For the following test,

import { test } from 'vitest';

test('repro', async () => {
  console.log(1);
  await new Promise((r) => setTimeout(r, 1000));
  console.error(2);
  await new Promise((r) => setTimeout(r, 1000));
  console.log(3);
});

captured logs show up like this:

stdout | test/repro.test.ts > repro
1

stdout | test/repro.test.ts > repro
<empty line>
stderr | test/repro.test.ts > repro
2

stderr | test/repro.test.ts > repro
<empty line>
stdout | test/repro.test.ts > repro
3

Reproduction

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

System Info

(stackblitz)

  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: 18.20.3 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.2.3 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    @vitest/ui: latest => 2.1.2 
    vite: latest => 5.4.8 
    vitest: latest => 2.1.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

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions