Skip to main content

Tracing

用于收集和保存 Playwright 跟踪的 API。Playwright 脚本运行后,可以在 Trace Viewer 中打开 Playwright 跟踪。

🌐 API for collecting and saving Playwright traces. Playwright traces can be opened in Trace Viewer after Playwright script runs.

note

你可能想在配置文件中启用跟踪,而不是使用 context.tracing

🌐 You probably want to enable tracing in your config file instead of using context.tracing.

context.tracing API 会捕获浏览器操作和网络活动,但不会记录测试断言(如 expect 调用)。我们建议 通过 Playwright Test 配置启用跟踪,这样可以包括这些断言,并为调试测试失败提供更完整的跟踪。

🌐 The context.tracing API captures browser operations and network activity, but it doesn't record test assertions (like expect calls). We recommend enabling tracing through Playwright Test configuration, which includes those assertions and provides a more complete trace for debugging test failures.

在执行操作之前开始记录跟踪。最后,停止跟踪并将其保存到文件中。

🌐 Start recording a trace before performing actions. At the end, stop tracing and save it to a file.

const browser = await chromium.launch();
const context = await browser.newContext();
await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.nodejs.cn');
expect(page.url()).toBe('https://playwright.nodejs.cn');
await context.tracing.stop({ path: 'trace.zip' });

方法

🌐 Methods

group

Added in: v1.49 tracing.group
caution

在可用时,请改用 test.step

🌐 Use test.step instead when available.

在追踪中创建一个新组,将随后的所有 API 调用分配给该组,直到调用 tracing.groupEnd()。组可以嵌套,并将在追踪查看器中可见。

🌐 Creates a new group within the trace, assigning any subsequent API calls to this group, until tracing.groupEnd() is called. Groups can be nested and will be visible in the trace viewer.

用法

// use test.step instead
await test.step('Log in', async () => {
// ...
});

参数

  • name string#

    跟踪查看器中显示的组名称。

  • options Object (optional)

    • location Object (optional)#

      指定在跟踪查看器中显示该组的自定义位置。默认情况下为 tracing.group() 调用的位置。

返回


groupEnd

Added in: v1.49 tracing.groupEnd

关闭由 tracing.group() 创建的最后一个组。

🌐 Closes the last group created by tracing.group().

用法

await tracing.groupEnd();

返回


start

Added in: v1.12 tracing.start

开始追踪。

🌐 Start tracing.

note

你可能想在配置文件中启用跟踪,而不是使用 Tracing.start

🌐 You probably want to enable tracing in your config file instead of using Tracing.start.

context.tracing API 会捕获浏览器操作和网络活动,但不会记录测试断言(如 expect 调用)。我们建议 通过 Playwright Test 配置启用跟踪,这样可以包括这些断言,并为调试测试失败提供更完整的跟踪。

🌐 The context.tracing API captures browser operations and network activity, but it doesn't record test assertions (like expect calls). We recommend enabling tracing through Playwright Test configuration, which includes those assertions and provides a more complete trace for debugging test failures.

用法

await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.nodejs.cn');
expect(page.url()).toBe('https://playwright.nodejs.cn');
await context.tracing.stop({ path: 'trace.zip' });

参数

  • options Object (optional)
    • name string (optional)#

      如果指定,中间跟踪文件将会保存到在 browserType.launch() 中指定的 tracesDir 目录下,以给定的名称前缀命名的文件中。要指定最终的跟踪压缩文件名称,你需要将 path 选项传递给 tracing.stop()

    • screenshots boolean (optional)#

      是否在跟踪过程中捕获屏幕截图。屏幕截图用于构建时间线预览。

    • snapshots boolean (optional)#

      如果此选项为 true,则跟踪将

      • 捕获每个动作的 DOM 快照
      • 记录网络活动
    • sources boolean (optional) Added in: v1.17#

      是否包含跟踪操作的源文件。

    • title string (optional) Added in: v1.17#

      要在跟踪查看器中显示的跟踪名称。

返回


startChunk

Added in: v1.15 tracing.startChunk

开始一个新的跟踪片段。如果你想在同一个 BrowserContext 上记录多个跟踪,请先调用一次 tracing.start(),然后使用 tracing.startChunk()tracing.stopChunk() 创建多个跟踪片段。

🌐 Start a new trace chunk. If you'd like to record multiple traces on the same BrowserContext, use tracing.start() once, and then create multiple trace chunks with tracing.startChunk() and tracing.stopChunk().

用法

await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.nodejs.cn');

await context.tracing.startChunk();
await page.getByText('Get Started').click();
// Everything between startChunk and stopChunk will be recorded in the trace.
await context.tracing.stopChunk({ path: 'trace1.zip' });

await context.tracing.startChunk();
await page.goto('http://example.com');
// Save a second trace file with different actions.
await context.tracing.stopChunk({ path: 'trace2.zip' });

参数

  • options Object (optional)
    • name string (optional) Added in: v1.32#

      如果指定,中间跟踪文件将会保存到在 browserType.launch() 中指定的 tracesDir 目录内,文件名以给定前缀开头。要指定最终的跟踪压缩文件名,则需要将 path 选项传递给 tracing.stopChunk()

    • title string (optional) Added in: v1.17#

      要在跟踪查看器中显示的跟踪名称。

返回


stop

Added in: v1.12 tracing.stop

停止追踪。

🌐 Stop tracing.

用法

await tracing.stop();
await tracing.stop(options);

参数

  • options Object (optional)
    • path string (optional)#

      将跟踪导出到具有给定路径的文件中。

返回


stopChunk

Added in: v1.15 tracing.stopChunk

停止跟踪块。有关多个跟踪块的更多详细信息,请参见 tracing.startChunk()

🌐 Stop the trace chunk. See tracing.startChunk() for more details about multiple trace chunks.

用法

await tracing.stopChunk();
await tracing.stopChunk(options);

参数

返回