Tracing
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.
- Sync
- Async
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")
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")
- tracing.start(**kwargs)
- tracing.start_chunk(**kwargs)
- tracing.stop(**kwargs)
- tracing.stop_chunk(**kwargs)
tracing.start(**kwargs)
Added in: v1.12name
<str> If specified, the trace is going to be saved into the file with the given name inside thetraces_dir
folder specified in browser_type.launch(**kwargs).#screenshots
<bool> Whether to capture screenshots during tracing. Screenshots are used to build a timeline preview.#snapshots
<bool> If this option is true tracing will#- capture DOM snapshot on every action
- record network activity
sources
<bool> Whether to include source files for trace actions. Added in: v1.17#title
<str> Trace name to be shown in the Trace Viewer. Added in: v1.17#- returns:NoneType># <
Start tracing.
- Sync
- Async
context.tracing.start(name="trace", screenshots=True, snapshots=True)
page = context.new_page()
page.goto("https://playwright.dev")
context.tracing.stop(path = "trace.zip")
await context.tracing.start(name="trace", screenshots=True, snapshots=True)
page = await context.new_page()
await page.goto("https://playwright.dev")
await context.tracing.stop(path = "trace.zip")
tracing.start_chunk(**kwargs)
Added in: v1.15Start a new trace chunk. If you'd like to record multiple traces on the same BrowserContext, use tracing.start(**kwargs) once, and then create multiple trace chunks with tracing.start_chunk(**kwargs) and tracing.stop_chunk(**kwargs).
- Sync
- Async
context.tracing.start(name="trace", 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")
await context.tracing.start(name="trace", 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")
tracing.stop(**kwargs)
Added in: v1.12path
<Union[str, pathlib.Path]> Export trace into the file with the given path.#- returns:NoneType># <
Stop tracing.
tracing.stop_chunk(**kwargs)
Added in: v1.15path
<Union[str, pathlib.Path]> Export trace collected since the last tracing.start_chunk(**kwargs) call into the file with the given path.#- returns:NoneType># <
Stop the trace chunk. See tracing.start_chunk(**kwargs) for more details about multiple trace chunks.