Запуск и отладка тестов
Введение
Тесты Playwright могут быть запущены различными способами. Мы рекомендуем подключить их к вашему любимому тестовому фреймворку, например, JUnit, так как это дает возможность запускать тесты параллельно, запускать отдельные тесты и т.д.
Вы можете запустить один тест, набор тестов или все тесты. Тесты могут быть запущены в одном браузере или в нескольких браузерах. По умолчанию тесты запускаются в безголовом режиме, что означает, что окно браузера не будет открыто во время выполнения тестов, и результаты будут видны в терминале. Если вы предпочитаете, вы можете запустить ваши тесты в режиме с интерфейсом, используя опцию launch(new BrowserType.LaunchOptions().setHeadless(false))
.
В JUnit, вы можете инициализировать Playwright и Browser в методе @BeforeAll и уничтожать их в методе @AfterAll. В примере ниже все три тестовых метода используют один и тот же Browser. Каждый тест использует свой собственный BrowserContext и Page.
package org.example;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class TestExample {
// Общие для всех тестов в этом классе.
static Playwright playwright;
static Browser browser;
// Новый экземпляр для каждого тестового метода.
BrowserContext context;
Page page;
@BeforeAll
static void launchBrowser() {
playwright = Playwright.create();
browser = playwright.chromium().launch();
}
@AfterAll
static void closeBrowser() {
playwright.close();
}
@BeforeEach
void createContextAndPage() {
context = browser.newContext();
page = context.newPage();
}
@AfterEach
void closeContext() {
context.close();
}
@Test
void shouldClickButton() {
page.navigate("data:text/html,<script>var result;</script><button onclick='result=\"Clicked\"'>Go</button>");
page.locator("button").click();
assertEquals("Clicked", page.evaluate("result"));
}
@Test
void shouldCheckTheBox() {
page.setContent("<input id='checkbox' type='checkbox'></input>");
page.locator("input").check();
assertTrue((Boolean) page.evaluate("() => window['checkbox'].checked"));
}
@Test
void shouldSearchWiki() {
page.navigate("https://www.wikipedia.org/");
page.locator("input[name=\"search\"]").click();
page.locator("input[name=\"search\"]").fill("playwright");
page.locator("input[name=\"search\"]").press("Enter");
assertEquals("https://en.wikipedia.org/wiki/Playwright", page.url());
}
}
Смотрите здесь для получения дополнительной информации о том, как запускать тесты параллельно и т.д.
Смотрите экспериментальную интеграцию JUnit для автоматической инициализации объектов Playwright и многого другого.
Запуск тестов в режиме с интерфейсом
Если вы предпочитаете, вы можете запустить ваши тесты в режиме с интерфейсом, используя опцию launch(new BrowserType.LaunchOptions().setHeadless(false))
.