mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
94 lines
3.5 KiB
Markdown
94 lines
3.5 KiB
Markdown
![]() |
---
|
||
|
id: writing-tests
|
||
|
title: "Writing Tests"
|
||
|
---
|
||
|
|
||
|
Playwright assertions are created specifically for the dynamic web. Checks are automatically retried until the necessary conditions are met. Playwright comes with [auto-wait](./actionability.md) built in meaning it waits for elements to be actionable prior to performing actions. Playwright provides [assertThat](./test-assertions.md) overloads to write assertions.
|
||
|
|
||
|
Take a look at the example test below to see how to write a test using web first assertions, locators and selectors.
|
||
|
|
||
|
```java
|
||
|
package org.example;
|
||
|
|
||
|
import java.util.regex.Pattern;
|
||
|
import com.microsoft.playwright.*;
|
||
|
|
||
|
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
|
||
|
|
||
|
public class App {
|
||
|
public static void main(String[] args) {
|
||
|
try (Playwright playwright = Playwright.create()) {
|
||
|
Browser browser = playwright.chromium().launch();
|
||
|
Page page = browser.newPage();
|
||
|
page.navigate("http://playwright.dev");
|
||
|
|
||
|
// Expect a title "to contain" a substring.
|
||
|
assertThat(page).hasTitle(Pattern.compile("Playwright"));
|
||
|
|
||
|
// create a locator
|
||
|
Locator getStarted = page.locator("text=Get Started");
|
||
|
|
||
|
// Expect an attribute "to be strictly equal" to the value.
|
||
|
assertThat(getStarted).hasAttribute("href", "/docs/intro");
|
||
|
|
||
|
// Click the get started link.
|
||
|
getStarted.click();
|
||
|
|
||
|
// Expects the URL to contain intro.
|
||
|
assertThat(page).hasURL(Pattern.compile(".*intro"));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
|
||
|
### Assertions
|
||
|
|
||
|
Playwright provides [`assertThat`](./test-assertions.md) overloads which will wait until the expected condition is met.
|
||
|
|
||
|
```java
|
||
|
import java.util.regex.Pattern;
|
||
|
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
|
||
|
|
||
|
assertThat(page).hasTitle(Pattern.compile("Playwright"));
|
||
|
```
|
||
|
|
||
|
|
||
|
### Locators
|
||
|
|
||
|
[Locators](./locators.md) are the central piece of Playwright's auto-waiting and retry-ability. Locators represent a way to find element(s) on the page at any moment and are used to perform actions on elements such as `.click` `.fill` etc. Custom locators can be created with the [`method: Page.locator`] method.
|
||
|
|
||
|
```java
|
||
|
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
|
||
|
|
||
|
Locator getStarted = page.locator("text=Get Started");
|
||
|
|
||
|
assertThat(getStarted).hasAttribute("href", "/docs/intro");
|
||
|
getStarted.click();
|
||
|
```
|
||
|
|
||
|
[Selectors](./selectors.md) are strings that are used to create Locators. Playwright supports many different selectors like [Text](./selectors.md#text-selector), [CSS](./selectors.md#css-selector), [XPath](./selectors.md#xpath-selectors) and many more. Learn more about available selectors and how to pick one in this [in-depth guide](./selectors.md).
|
||
|
|
||
|
|
||
|
```java
|
||
|
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
|
||
|
|
||
|
assertThat(page.locator("text=Installation")).isVisible();
|
||
|
```
|
||
|
|
||
|
|
||
|
### Test Isolation
|
||
|
|
||
|
Playwright has the concept of a [BrowserContext] which is an in-memory isolated browser profile. It's recommended to create a new [BrowserContext] for each test to ensure they don't interfere with each other.
|
||
|
|
||
|
```java
|
||
|
Browser browser = playwright.chromium().launch();
|
||
|
BrowserContext context = browser.newContext();
|
||
|
Page page = context.newPage();
|
||
|
```
|
||
|
|
||
|
## What's Next
|
||
|
|
||
|
- [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)
|