Tracing
API for collecting and saving Playwright traces. Playwright traces can be opened in Trace Viewer after Playwright script runs.
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.
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")));
Methodsโ
groupโ
Added in: v1.49Use 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
// 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();
Arguments
-
Group name shown in the trace viewer.
-
optionsTracing.GroupOptions(optional)-
setLocationLocation (optional)#Specifies a custom location for the group to be shown in the trace viewer. Defaults to the location of the Tracing.group() call.
-
Returns
- [Disposable]#
groupEndโ
Added in: v1.49Closes the last group created by Tracing.group().
Usage
Tracing.groupEnd();
Returns
startโ
Added in: v1.12Start tracing.
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
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")));
Arguments
optionsTracing.StartOptions(optional)-
setLiveboolean (optional) Added in: v1.59#When enabled, the trace is written to an unarchived file that is updated in real time as actions occur, instead of caching changes and archiving them into a zip file at the end. This is useful for live trace viewing during test execution.
-
If specified, intermediate trace files are going to be saved into the files with the given name prefix inside the setTracesDir directory specified in BrowserType.launch(). To specify the final trace zip file name, you need to pass
pathoption to Tracing.stop() instead. -
setScreenshotsboolean (optional)#Whether to capture screenshots during tracing. Screenshots are used to build a timeline preview.
-
setSnapshotsboolean (optional)#If this option is true tracing will
- capture DOM snapshot on every action
- record network activity
-
setSourcesboolean (optional) Added in: v1.17#Whether to include source files for trace actions. List of the directories with source code for the application must be provided via
PLAYWRIGHT_JAVA_SRCenvironment variable (the paths should be separated by ';' on Windows and by ':' on other platforms). -
setTitleString (optional) Added in: v1.17#Trace name to be shown in the Trace Viewer.
-
Returns
startChunkโ
Added in: v1.15Start 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().
Usage
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")));
Arguments
optionsTracing.StartChunkOptions(optional)-
setNameString (optional) Added in: v1.32#If specified, intermediate trace files are going to be saved into the files with the given name prefix inside the setTracesDir directory specified in BrowserType.launch(). To specify the final trace zip file name, you need to pass
pathoption to Tracing.stopChunk() instead. -
setTitleString (optional) Added in: v1.17#Trace name to be shown in the Trace Viewer.
-
Returns
startHarโ
Added in: v1.60Start recording a HAR (HTTP Archive) of network activity in this context. The HAR file is written to disk when Tracing.stopHar() is called, or when the returned [Disposable] is disposed.
Only one HAR recording can be active at a time per BrowserContext.
Usage
context.tracing().startHar(Paths.get("trace.har"));
Page page = context.newPage();
page.navigate("https://playwright.dev");
context.tracing().stopHar();
Arguments
-
Path on the filesystem to write the HAR file to. If the file name ends with
.zip, the HAR is saved as a zip archive with response bodies attached as separate files. -
optionsTracing.StartHarOptions(optional)-
setContentenum HarContentPolicy { OMIT, EMBED, ATTACH }(optional)#Optional setting to control resource content management. If
omitis specified, content is not persisted. Ifattachis specified, resources are persisted as separate files or entries in the ZIP archive. Ifembedis specified, content is stored inline the HAR file as per HAR specification. Defaults toattachfor.zipoutput files and toembedfor all other file extensions. -
setModeenum HarMode { FULL, MINIMAL }(optional)#When set to
minimal, only record information necessary for routing from HAR. This omits sizes, timing, page, cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults tofull. -
setUrlFilterString | Pattern (optional)#A glob or regex pattern to filter requests that are stored in the HAR. Defaults to none.
-
Returns
- [Disposable]#
stopโ
Added in: v1.12Stop tracing.
Usage
Tracing.stop();
Tracing.stop(options);
Arguments
optionsTracing.StopOptions(optional)
Returns
stopChunkโ
Added in: v1.15Stop the trace chunk. See Tracing.startChunk() for more details about multiple trace chunks.
Usage
Tracing.stopChunk();
Tracing.stopChunk(options);
Arguments
optionsTracing.StopChunkOptions(optional)-
Export trace collected since the last Tracing.startChunk() call into the file with the given path.
-
Returns
stopHarโ
Added in: v1.60Stop HAR recording and save the HAR file to the path given to Tracing.startHar().
Usage
Tracing.stopHar();
Returns