close
  • 简体中文
  • silent

    • 类型: boolean | 'passed-only'
    • 默认值: false
    • CLI: --silent [value]

    控制是否静默测试中的 console 日志输出。

    • 设为 true 时,隐藏所有被拦截的测试 console 日志。
    • 设为 'passed-only' 时,仅保留失败文件、套件和测试用例的被拦截日志。
    CLI
    rstest.config.ts
    npx rstest --silent=passed-only

    示例

    silent 设置为 'passed-only' 时,通过 console 打印的日志会先被缓存;通过任务的日志会被丢弃,失败任务的日志会在失败输出附近回放。

    example.test.ts
    import { describe, expect, it } from '@rstest/core';
    
    describe('math', () => {
      it('passes', () => {
        console.log('pass log');
        expect(1 + 1).toBe(2);
      });
    
      it('fails', () => {
        console.log('fail log');
        expect(1 + 1).toBe(3);
      });
    });

    最终只会打印 fail log

    Note

    Rstest 会尽力将日志归属到具体测试上,但在 browser mode 的并发异步测试场景中,日志归属可能不会完全准确。

    在 browser mode 下,这条拦截链路仍然会调用原始的 console.*,以便日志继续出现在 DevTools 中。因此,silent 控制的是 Rstest / reporter 的输出,不一定会把浏览器原生控制台中的日志也一起隐藏。

    silent: 'passed-only' 下,从失败任务回放的日志仍会经过 onConsoleLog,因此返回 false 的过滤器同样会把这些回放日志丢弃。

    disableConsoleIntercepttrue 时,silent 仍然生效,但回放行为因环境而异。在 Node mode 下,缓存的日志会回放到原始的 stdout/stderr,绕过 onConsoleLogprintConsoleTrace。在 browser mode 下没有 host 侧的原始输出流,因此回放不会转发到终端——这些日志只会保留在浏览器 DevTools 中。