mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Debugging tools
 | ||
| 
 | ||
| Playwright scripts work with existing debugging tools, like Node.js debuggers
 | ||
| and browser developer tools. Playwright also introduces new debugging features
 | ||
| for browser automation.
 | ||
| 
 | ||
| <!-- GEN:toc -->
 | ||
| - [Run in headful mode](#run-in-headful-mode)
 | ||
| - [Visual Studio Code debugger](#visual-studio-code-debugger)
 | ||
|   * [Use launch config](#use-launch-config)
 | ||
|   * [Use the new JavaScript debugger](#use-the-new-javascript-debugger)
 | ||
| - [Browser Developer Tools](#browser-developer-tools)
 | ||
|   * [API for Chromium](#api-for-chromium)
 | ||
| - [Run in Debug Mode](#run-in-debug-mode)
 | ||
|   * [Defaults](#defaults)
 | ||
|   * [Debugging Selectors](#debugging-selectors)
 | ||
|   * [Evaluate Source Maps](#evaluate-source-maps)
 | ||
| - [Verbose API logs](#verbose-api-logs)
 | ||
| <!-- GEN:stop -->
 | ||
| 
 | ||
| ## Run in headful mode
 | ||
| 
 | ||
| Playwright runs browsers in headless mode by default. To change this behavior,
 | ||
| use `headless: false` as a launch option. You can also use the `slowMo` option
 | ||
| to slow down execution and follow along while debugging.
 | ||
| 
 | ||
| ```js
 | ||
| await chromium.launch({ headless: false, slowMo: 100 }); // or firefox, webkit
 | ||
| ```
 | ||
| 
 | ||
| ## Visual Studio Code debugger
 | ||
| 
 | ||
| The VS Code debugger can be used to pause and resume execution of Playwright
 | ||
| scripts with breakpoints. The debugger can be configured in two ways.
 | ||
| 
 | ||
| ### Use launch config
 | ||
| 
 | ||
| Setup [`launch.json` configuration](https://code.visualstudio.com/docs/nodejs/nodejs-debugging)
 | ||
| for your Node.js project. Once configured launch the scripts with F5 and use
 | ||
| breakpoints.
 | ||
| 
 | ||
| ### Use the new JavaScript debugger
 | ||
| 
 | ||
| VS Code 1.46+ introduces the new JavaScript debugger behind a feature flag. The
 | ||
| new debugger does not require a `launch.json` configuration. To use this:
 | ||
| 
 | ||
| 1. Enable the preview debugger
 | ||
|     * Open JSON settings and add `"debug.javascript.usePreview": true`
 | ||
|     * Open settings UI and enable the `Debug › JavaScript: Use Preview` setting
 | ||
| 
 | ||
| 1. Set a breakpoint in VS Code
 | ||
|     * Use the `debugger` keyword or set a breakpoint in the VS Code UI
 | ||
| 
 | ||
| 1. Run your Node.js script from the terminal
 | ||
| 
 | ||
| ## Browser Developer Tools
 | ||
| 
 | ||
| You can use browser developer tools in Chromium, Firefox and WebKit while running
 | ||
| a Playwright script. Developer tools help to:
 | ||
| 
 | ||
| * Inspect the DOM tree and **find element selectors**
 | ||
| * **See console logs** during execution (or learn how to [read logs via API](verification.md#console-logs))
 | ||
| * Check **network activity** and other developer tools features
 | ||
| 
 | ||
| <a href="https://user-images.githubusercontent.com/284612/77234134-5f21a500-6b69-11ea-92ec-1c146e1333ec.png"><img src="https://user-images.githubusercontent.com/284612/77234134-5f21a500-6b69-11ea-92ec-1c146e1333ec.png" width="500" alt="Chromium Developer Tools"></a>
 | ||
| 
 | ||
| > **For WebKit**: Note that launching WebKit Inspector during the execution will
 | ||
|   prevent the Playwright script from executing any further.
 | ||
| 
 | ||
| ### API for Chromium
 | ||
| 
 | ||
| In Chromium, you can also open developer tools through a launch option.
 | ||
| 
 | ||
| ```js
 | ||
| await chromium.launch({ devtools: true });
 | ||
| ```
 | ||
| 
 | ||
| ## Run in Debug Mode
 | ||
| 
 | ||
| Set the `PWDEBUG` environment variable to run your scripts in debug mode. This
 | ||
| configures the browser for debugging.
 | ||
| 
 | ||
| ```sh
 | ||
| # Linux/macOS
 | ||
| $ PWDEBUG=1 npm run test
 | ||
| 
 | ||
| # Windows
 | ||
| $ set PWDEBUG=1
 | ||
| $ npm run test
 | ||
| ```
 | ||
| 
 | ||
| ### Defaults
 | ||
| 
 | ||
| With PWDEBUG, the following defaults are configured for you:
 | ||
| 
 | ||
| * **Run in headful**: With PWDEBUG, browsers always launch in headful mode
 | ||
| * **Disables timeout**: PWDEBUG sets timeout to 0 (= no timeout)
 | ||
| * **Preserve DevTools preferences**: When used with `devtools: true`, PWDEBUG
 | ||
|   preserves the docked/undocked state of Chrome DevTools
 | ||
| 
 | ||
| ### Debugging Selectors
 | ||
| 
 | ||
| PWDEBUG configures a `playwright` object in the browser to highlight
 | ||
| [Playwright selectors](selectors.md). This can be used to verify text or
 | ||
| composite selectors. To use this:
 | ||
| 
 | ||
| 1. Setup a breakpoint to pause the execution
 | ||
| 1. Open the console panel in browser developer tools
 | ||
| 1. Use the `playwright` API
 | ||
|     * `playwright.$(selector)`: Highlight the first occurrence of the selector. This reflects
 | ||
|       how `page.$` would see the page.
 | ||
|     * `playwright.$$(selector)`: Highlight all occurrences of the selector. This reflects
 | ||
|       how `page.$$` would see the page.
 | ||
|     * `playwright.inspect(selector)`: Inspect the selector in the Elements panel.
 | ||
|     * `playwright.clear()`: Clear existing highlights.
 | ||
| 
 | ||
| <a href="https://user-images.githubusercontent.com/284612/86857345-299abc00-c073-11ea-9e31-02923a9f0d4b.png"><img src="https://user-images.githubusercontent.com/284612/86857345-299abc00-c073-11ea-9e31-02923a9f0d4b.png" width="500" alt="Highlight selectors"></a>
 | ||
| 
 | ||
| ### Evaluate Source Maps
 | ||
| 
 | ||
| PWDEBUG also enables source maps for [`page.evaluate` executions](core-concepts.md#evaluation).
 | ||
| This improves the debugging experience for JavaScript executions in the page context.
 | ||
| 
 | ||
| <a href="https://user-images.githubusercontent.com/284612/86857568-a6c63100-c073-11ea-82a4-bfd531a4ec87.png"><img src="https://user-images.githubusercontent.com/284612/86857568-a6c63100-c073-11ea-82a4-bfd531a4ec87.png" width="500" alt="Highlight selectors"></a>
 | ||
| 
 | ||
| ## Verbose API logs
 | ||
| 
 | ||
| Playwright supports verbose logging with the `DEBUG` environment variable.
 | ||
| 
 | ||
| ```sh
 | ||
| # Linux/macOS
 | ||
| $ DEBUG=pw:api npm run test
 | ||
| 
 | ||
| # Windows
 | ||
| $ set DEBUG=pw:api
 | ||
| $ npm run test
 | ||
| ```
 | 
