> For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt.

# expect


[Added in v0.11.6](https://github.com/web-infra-dev/rstest/releases/tag/v0.11.6)

- **类型：** `ExpectConfig`
- **默认值：** `{ poll: { interval: 50, timeout: 1000 } }`（Browser Mode 下 `timeout` 为 `5000`）

配置 [`expect.poll()`](/zh/api/runtime-api/test-api/expect.md#expectpoll) 使用的默认值，以及 Browser Mode [`expect.element()`](/zh/api/runtime-api/browser-mode/assertion.md) 的默认超时时间。Browser Mode 下默认轮询超时为 `5000ms`，Node Mode 下为 `1000ms`。隐式使用的默认值会受当前 test 阶段的剩余时间限制；直接传给 `expect.poll()` 的选项优先级更高，不参与这个限制。`expect.poll()` 仍然只能在 test 中使用：它可以使用 per-test hook 和 fixture 的 active timeout，但不能在 `beforeAll` 或 `afterAll` 中使用。

```ts title="rstest.config.ts"
import { defineConfig } from '@rstest/core';

export default defineConfig({
  expect: {
    poll: {
      interval: 100,
      timeout: 5000,
    },
  },
});
```

## expect.poll

轮询断言的全局配置。

### expect.poll.interval

- **类型：** `number`
- **默认值：** `50`

`expect.poll()` 每次重试之间的间隔时间，单位为毫秒。此配置不控制 Browser Mode `expect.element()` 的重试间隔，后者由浏览器 Provider 控制。`@rstest/playwright` 的 Locator/Page 断言也保留固定的 `50ms` 重试间隔。

### expect.poll.timeout

- **类型：** `number`
- **默认值：** `1000`（Browser Mode 下为 `5000`）

断言失败前允许的最长轮询时间，单位为毫秒。调用处未显式传入 timeout 时，实际值还会受当前 test 阶段的剩余时间限制。

此超时时间的作用范围如下：

| API                                                               | 是否使用 `expect.poll.timeout` | 单次调用的覆盖方式                          |
| ----------------------------------------------------------------- | -------------------------- | ---------------------------------- |
| Node 或 Browser Mode 中的 `expect.poll(fn).toBe(...)`                | 是                          | `expect.poll(fn, { timeout })`     |
| Browser Mode 的 `expect.element(locator).toContainText(...)` 等元素断言 | 是                          | `toContainText(text, { timeout })` |
| `expect(value).toBe(...)` 等普通断言                                   | 否，普通断言不会重试                 | —                                  |
| `@rstest/playwright` 的 `expect(locator).toContainText(...)`       | 是，自 0.12.0 起               | `toContainText(text, { timeout })` |

单次调用显式传入的 timeout 优先于此配置。对于 `expect.poll()` 和 Browser Mode 的 `expect.element()`，未显式传入时，如果能获取当前 test 或 hook 的剩余时间，Rstest 会取配置值与剩余时间中较小的值。例如，配置为 `5000ms`，但当前阶段只剩 `2000ms`，断言不会再获得完整的五秒。显式传入 timeout 可以跳过这个计算，但不会延长外层的 [`testTimeout`](/zh/config/test/test-timeout.md) 或 hook timeout。

在 Browser Mode 的并发测试中，使用测试作用域内的 `expect` fixture，才能按该测试的剩余时间计算。文件级共享 `expect` 和 `describe.concurrent` 中的 hook 使用配置的轮询超时。详见[浏览器断言超时](/zh/api/runtime-api/browser-mode/assertion.md)。

使用 [`definePlaywrightConfig`](/zh/guide/basic/e2e-testing.md#e2e-defaults) 时，helper 将 `expect.poll.timeout` 的默认值设为 `5000ms`。显式的 `expect.poll.timeout` 会同时覆盖轮询和 Playwright Locator/Page 断言的超时。不使用 helper 时，Node Mode 默认使用 `1000ms`。
