Interface Tracing

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

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

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.dev');
expect(page.url()).toBe('https://playwright.dev');
await context.tracing.stop({ path: 'trace.zip' });

Hierarchy

  • Tracing

Methods

  • NOTE Use test.step instead when available.

    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.

    Usage

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

    Parameters

    • name: string

      Group name shown in the trace viewer.

    • Optional options: {
          location?: {
              column?: number;
              file: string;
              line?: number;
          };
      }
      Optional
      • Optional location?: {
            column?: number;
            file: string;
            line?: number;
        }

        Specifies a custom location for the group to be shown in the trace viewer. Defaults to the location of the tracing.group(name[, options]) call.

        • Optional column?: number
        • file: string
        • Optional line?: number

    Returns Promise<void>

  • Closes the last group created by tracing.group(name[, options]).

    Returns Promise<void>

  • Start tracing.

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

    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.

    Usage

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

    Parameters

    • Optional options: {
          name?: string;
          screenshots?: boolean;
          snapshots?: boolean;
          sources?: boolean;
          title?: string;
      }
      Optional
      • Optional name?: string

        If specified, intermediate trace files are going to be saved into the files with the given name prefix inside the tracesDir directory specified in browserType.launch([options]). To specify the final trace zip file name, you need to pass path option to tracing.stop([options]) instead.

      • Optional screenshots?: boolean

        Whether to capture screenshots during tracing. Screenshots are used to build a timeline preview.

      • Optional snapshots?: boolean

        If this option is true tracing will

        • capture DOM snapshot on every action
        • record network activity
      • Optional sources?: boolean

        Whether to include source files for trace actions.

      • Optional title?: string

        Trace name to be shown in the Trace Viewer.

    Returns Promise<void>

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

    Usage

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

    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' });

    Parameters

    • Optional options: {
          name?: string;
          title?: string;
      }
      Optional
      • Optional name?: string

        If specified, intermediate trace files are going to be saved into the files with the given name prefix inside the tracesDir directory specified in browserType.launch([options]). To specify the final trace zip file name, you need to pass path option to tracing.stopChunk([options]) instead.

      • Optional title?: string

        Trace name to be shown in the Trace Viewer.

    Returns Promise<void>

  • Stop tracing.

    Parameters

    • Optional options: {
          path?: string;
      }
      Optional
      • Optional path?: string

        Export trace into the file with the given path.

    Returns Promise<void>

  • Stop the trace chunk. See tracing.startChunk([options]) for more details about multiple trace chunks.

    Parameters

    • Optional options: {
          path?: string;
      }
      Optional

    Returns Promise<void>

Generated using TypeDoc