Skip to content

Latest commit

 

History

History
378 lines (306 loc) · 10.9 KB

class-tracing.md

File metadata and controls

378 lines (306 loc) · 10.9 KB

class: Tracing

  • since: v1.12

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

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');
await context.tracing.stop({ path: 'trace.zip' });
Browser browser = chromium.launch();
BrowserContext context = browser.newContext();
context.tracing().start(new Tracing.StartOptions()
  .setScreenshots(true)
  .setSnapshots(true));
Page page = context.newPage();
page.navigate("https://playwright.dev");
context.tracing().stop(new Tracing.StopOptions()
  .setPath(Paths.get("trace.zip")));
browser = await chromium.launch()
context = await browser.new_context()
await context.tracing.start(screenshots=True, snapshots=True)
page = await context.new_page()
await page.goto("https://playwright.dev")
await context.tracing.stop(path = "trace.zip")
browser = chromium.launch()
context = browser.new_context()
context.tracing.start(screenshots=True, snapshots=True)
page = context.new_page()
page.goto("https://playwright.dev")
context.tracing.stop(path = "trace.zip")
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
await using var context = await browser.NewContextAsync();
await context.Tracing.StartAsync(new()
{
  Screenshots = true,
  Snapshots = true
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://playwright.dev");
await context.Tracing.StopAsync(new()
{
  Path = "trace.zip"
});

async method: Tracing.start

  • since: v1.12

Start tracing.

Usage

await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.dev');
await context.tracing.stop({ path: 'trace.zip' });
context.tracing().start(new Tracing.StartOptions()
  .setScreenshots(true)
  .setSnapshots(true));
Page page = context.newPage();
page.navigate("https://playwright.dev");
context.tracing().stop(new Tracing.StopOptions()
  .setPath(Paths.get("trace.zip")));
await context.tracing.start(screenshots=True, snapshots=True)
page = await context.new_page()
await page.goto("https://playwright.dev")
await context.tracing.stop(path = "trace.zip")
context.tracing.start(screenshots=True, snapshots=True)
page = context.new_page()
page.goto("https://playwright.dev")
context.tracing.stop(path = "trace.zip")
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
await using var context = await browser.NewContextAsync();
await context.Tracing.StartAsync(new()
{
  Screenshots = true,
  Snapshots = true
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://playwright.dev");
await context.Tracing.StopAsync(new()
{
  Path = "trace.zip"
});

option: Tracing.start.name

  • since: v1.12
  • name <[string]>

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

option: Tracing.start.screenshots

  • since: v1.12
  • screenshots <[boolean]>

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

option: Tracing.start.snapshots

  • since: v1.12
  • snapshots <[boolean]>

If this option is true tracing will

  • capture DOM snapshot on every action
  • record network activity

option: Tracing.start.sources

  • since: v1.17
  • langs: js, csharp, python
  • sources <[boolean]>

Whether to include source files for trace actions.

option: Tracing.start.sources

  • since: v1.17
  • langs: java
  • sources <[boolean]>

Whether to include source files for trace actions. List of the directories with source code for the application must be provided via PLAYWRIGHT_JAVA_SRC environment variable (the paths should be separated by ';' on Windows and by ':' on other platforms).

option: Tracing.start.title

  • since: v1.17
  • title <[string]>

Trace name to be shown in the Trace Viewer.

async method: Tracing.startChunk

  • since: v1.15

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

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' });
context.tracing().start(new Tracing.StartOptions()
  .setScreenshots(true)
  .setSnapshots(true));
Page page = context.newPage();
page.navigate("https://playwright.dev");

context.tracing().startChunk();
page.getByText("Get Started").click();
// Everything between startChunk and stopChunk will be recorded in the trace.
context.tracing().stopChunk(new Tracing.StopChunkOptions()
  .setPath(Paths.get("trace1.zip")));

context.tracing().startChunk();
page.navigate("http://example.com");
// Save a second trace file with different actions.
context.tracing().stopChunk(new Tracing.StopChunkOptions()
  .setPath(Paths.get("trace2.zip")));
await context.tracing.start(screenshots=True, snapshots=True)
page = await context.new_page()
await page.goto("https://playwright.dev")

await context.tracing.start_chunk()
await page.get_by_text("Get Started").click()
# Everything between start_chunk and stop_chunk will be recorded in the trace.
await context.tracing.stop_chunk(path = "trace1.zip")

await context.tracing.start_chunk()
await page.goto("http://example.com")
# Save a second trace file with different actions.
await context.tracing.stop_chunk(path = "trace2.zip")
context.tracing.start(screenshots=True, snapshots=True)
page = context.new_page()
page.goto("https://playwright.dev")

context.tracing.start_chunk()
page.get_by_text("Get Started").click()
# Everything between start_chunk and stop_chunk will be recorded in the trace.
context.tracing.stop_chunk(path = "trace1.zip")

context.tracing.start_chunk()
page.goto("http://example.com")
# Save a second trace file with different actions.
context.tracing.stop_chunk(path = "trace2.zip")
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
await using var context = await browser.NewContextAsync();
await context.Tracing.StartAsync(new()
{
  Screenshots = true,
  Snapshots = true
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://playwright.dev");

await context.Tracing.StartChunkAsync();
await page.GetByText("Get Started").ClickAsync();
// Everything between StartChunkAsync and StopChunkAsync will be recorded in the trace.
await context.Tracing.StopChunkAsync(new()
{
  Path = "trace1.zip"
});

await context.Tracing.StartChunkAsync();
await page.GotoAsync("http://example.com");
// Save a second trace file with different actions.
await context.Tracing.StopChunkAsync(new()
{
  Path = "trace2.zip"
});

option: Tracing.startChunk.title

  • since: v1.17
  • title <[string]>

Trace name to be shown in the Trace Viewer.

option: Tracing.startChunk.name

  • since: v1.32
  • name <[string]>

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

async method: Tracing.group

  • since: v1.49

:::caution Use test.step instead when available. :::

Creates a new group within the trace, assigning any subsequent API calls to this group, until [method: 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 () => {
  // ...
});
// All actions between group and groupEnd
// will be shown in the trace viewer as a group.
page.context().tracing().group("Open Playwright.dev > API");
page.navigate("https://playwright.dev/");
page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("API")).click();
page.context().tracing().groupEnd();
# All actions between group and group_end
# will be shown in the trace viewer as a group.
page.context.tracing.group("Open Playwright.dev > API")
page.goto("https://playwright.dev/")
page.get_by_role("link", name="API").click()
page.context.tracing.group_end()
# All actions between group and group_end
# will be shown in the trace viewer as a group.
await page.context.tracing.group("Open Playwright.dev > API")
await page.goto("https://playwright.dev/")
await page.get_by_role("link", name="API").click()
await page.context.tracing.group_end()
// All actions between GroupAsync and GroupEndAsync
// will be shown in the trace viewer as a group.
await Page.Context.Tracing.GroupAsync("Open Playwright.dev > API");
await Page.GotoAsync("https://playwright.dev/");
await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync();
await Page.Context.Tracing.GroupEndAsync();

param: Tracing.group.name

  • since: v1.49
  • name <[string]>

Group name shown in the trace viewer.

option: Tracing.group.location

  • since: v1.49
  • location ?<[Object]>
    • file <[string]>
    • line ?<[int]>
    • column ?<[int]>

Specifies a custom location for the group to be shown in the trace viewer. Defaults to the location of the [method: Tracing.group] call.

async method: Tracing.groupEnd

  • since: v1.49

Closes the last group created by [method: Tracing.group].

async method: Tracing.stop

  • since: v1.12

Stop tracing.

option: Tracing.stop.path

  • since: v1.12
  • path <[path]>

Export trace into the file with the given path.

async method: Tracing.stopChunk

  • since: v1.15

Stop the trace chunk. See [method: Tracing.startChunk] for more details about multiple trace chunks.

option: Tracing.stopChunk.path

  • since: v1.15
  • path <[path]>

Export trace collected since the last [method: Tracing.startChunk] call into the file with the given path.