2021-02-23 13:23:44 -08:00
---
id: intro
2022-10-21 09:52:36 -07:00
title: "Installation"
2021-02-23 13:23:44 -08:00
---
2023-10-06 15:08:51 +02:00
## Introduction
2023-06-02 14:13:02 -07:00
Playwright was created specifically to accommodate the needs of end-to-end testing. Playwright supports all modern rendering engines including Chromium, WebKit, and Firefox. Test on Windows, Linux, and macOS, locally or on CI, headless or headed with native mobile emulation.
2021-02-23 13:23:44 -08:00
Playwright is distributed as a set of [Maven ](https://maven.apache.org/what-is-maven.html ) modules. The easiest way to use it is to add one dependency to your project's `pom.xml` as described below. If you're not familiar with Maven please refer to its [documentation ](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html ).
## Usage
2022-10-21 09:52:36 -07:00
Get started by installing Playwright and running the example file to see it in action.
2021-03-04 15:51:26 -08:00
< Tabs
defaultValue="java"
values={[
2022-10-21 09:52:36 -07:00
{label: 'App.java', value: 'java'},
2021-03-04 15:51:26 -08:00
{label: 'pom.xml', value: 'pom'}
]
}>
< TabItem value = "java" >
2021-02-23 13:23:44 -08:00
2023-05-10 23:30:51 +02:00
```java title="src/main/java/org/example/App.java"
2021-03-04 15:51:26 -08:00
package org.example;
2021-02-23 13:23:44 -08:00
import com.microsoft.playwright.*;
2022-10-21 09:52:36 -07:00
public class App {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
2025-03-13 10:41:02 +01:00
page.navigate("https://playwright.dev");
2022-10-21 09:52:36 -07:00
System.out.println(page.title());
}
2021-02-23 13:23:44 -08:00
}
}
```
2021-03-04 15:51:26 -08:00
< / TabItem >
< TabItem value = "pom" >
```xml
<?xml version="1.0" encoding="UTF-8"?>
2022-10-21 09:52:36 -07:00
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2021-03-04 15:51:26 -08:00
< modelVersion > 4.0.0< / modelVersion >
< groupId > org.example< / groupId >
< artifactId > examples< / artifactId >
< version > 0.1-SNAPSHOT< / version >
< name > Playwright Client Examples< / name >
< properties >
< project.build.sourceEncoding > UTF-8< / project.build.sourceEncoding >
< / properties >
< dependencies >
< dependency >
< groupId > com.microsoft.playwright< / groupId >
< artifactId > playwright< / artifactId >
2023-06-01 01:14:00 +02:00
< version > %%VERSION%%< / version >
2021-03-04 15:51:26 -08:00
< / dependency >
< / dependencies >
< build >
< plugins >
< plugin >
< groupId > org.apache.maven.plugins< / groupId >
< artifactId > maven-compiler-plugin< / artifactId >
2022-10-21 09:52:36 -07:00
< version > 3.10.1< / version >
2023-01-05 20:25:33 +01:00
<!-- References to interface static methods are allowed only at source level 1.8 or above -->
< configuration >
< source > 1.8< / source >
< target > 1.8< / target >
< / configuration >
2021-03-04 15:51:26 -08:00
< / plugin >
< / plugins >
< / build >
< / project >
```
< / TabItem >
< / Tabs >
With the Example.java and pom.xml above, compile and execute your new program as follows:
2021-06-02 09:23:06 -07:00
```bash
2023-01-05 19:55:07 +01:00
mvn compile exec:java -D exec.mainClass="org.example.App"
2021-03-04 15:51:26 -08:00
```
2023-07-26 16:15:07 -07:00
Running it downloads the Playwright package and installs browser binaries for Chromium, Firefox and WebKit. To modify this behavior see [installation parameters ](./browsers.md#install-browsers ).
2021-03-04 15:51:26 -08:00
2021-02-23 13:23:44 -08:00
## First script
2023-05-24 11:43:42 -04:00
In our first script, we will navigate to `playwright.dev` and take a screenshot in WebKit.
2021-02-23 13:23:44 -08:00
```java
2022-10-21 09:52:36 -07:00
package org.example;
2021-02-23 13:23:44 -08:00
import com.microsoft.playwright.*;
import java.nio.file.Paths;
2022-10-21 09:52:36 -07:00
public class App {
2021-02-23 13:23:44 -08:00
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.webkit().launch();
Page page = browser.newPage();
2023-05-24 11:43:42 -04:00
page.navigate("https://playwright.dev/");
2021-03-05 13:50:34 -08:00
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("example.png")));
2021-02-23 13:23:44 -08:00
}
}
}
```
2024-09-26 01:08:16 -07:00
By default, Playwright runs the browsers in headless mode. To see the browser UI, [`option: BrowserType.launch.headless` ] option to `false` . You can also use [`option: BrowserType.launch.slowMo` ] to slow down execution. Learn more in the debugging tools [section ](./debug.md ).
2021-02-23 13:23:44 -08:00
```java
2021-03-05 13:50:34 -08:00
playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(50));
2021-02-23 13:23:44 -08:00
```
2022-10-21 09:52:36 -07:00
## Running the Example script
2021-03-05 10:13:02 -08:00
2021-06-02 09:23:06 -07:00
```bash
2023-01-05 19:55:07 +01:00
mvn compile exec:java -D exec.mainClass="org.example.App"
2021-03-05 10:13:02 -08:00
```
2022-10-21 09:52:36 -07:00
By default browsers launched with Playwright run headless, meaning no browser UI will open up when running the script. To change that you can pass `new BrowserType.LaunchOptions().setHeadless(false)` when launching the browser.
2021-04-30 16:44:30 +02:00
2023-06-02 14:13:02 -07:00
## System requirements
- Java 8 or higher.
- Windows 10+, Windows Server 2016+ or Windows Subsystem for Linux (WSL).
2025-03-10 16:45:04 +01:00
- macOS 14 Ventura, or later.
2024-10-21 18:41:27 +02:00
- Debian 12, Ubuntu 22.04, Ubuntu 24.04, on x86-64 and arm64 architecture.
2023-06-02 14:13:02 -07:00
2022-10-21 09:52:36 -07:00
## What's next
2021-04-30 16:44:30 +02:00
2022-10-21 09:52:36 -07:00
- [Write tests using web first assertions, page fixtures and locators ](./writing-tests.md )
- [Run single test, multiple tests, headed mode ](./running-tests.md )
- [Generate tests with Codegen ](./codegen.md )
- [See a trace of your tests ](./trace-viewer-intro.md )