Skip to content

Test with expect(promise).resolves with promise that never resolves and without await hangs #6386

@4ndypanda

Description

@4ndypanda

Describe the bug

The docs for https://vitest.dev/api/expect.html#resolves state

If the assertion is not awaited, then you will have a false-positive test that will pass every time.

which made me think that the second test without the await on the assertion would just return and pass

import { expect, test } from 'vitest';

test('times out from test function timeout', async () => {
  await expect(new Promise((_resolve) => {})).resolves.toEqual(1);
});

test('hangs forever', async () => {
  expect(new Promise((_resolve) => {})).resolves.toEqual(1);
});

but instead it just hangs forever.

Reproduction

https://stackblitz.com/edit/vitest-dev-vitest-7mithq?file=test%2Fbasic.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: 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.0.5 
    vite: latest => 5.4.2 
    vitest: latest => 2.0.5

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