Clock
Новый API Clock дает возможность управлять временем в тестах, для проверки поведения, связанного с временем. Этот API охватывает множество распространенных сценариев, включая:
- тестирование с предопределенным временем;
- поддержание последовательного времени и таймеров;
- мониторинг бездействия;
- отсчет времени вручную.
// Initialize clock and let the page load naturally. await page.clock.install({ time: new Date('2024-02-02T08:00:00') }); await page.goto('http://localhost:3333'); // Pretend that the user closed the laptop lid and opened it again at 10am, // Pause the time once reached that point. await page.clock.pauseAt(new Date('2024-02-02T10:00:00')); // Assert the page state. await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:00:00 AM'); // Close the laptop lid again and open it at 10:30am. await page.clock.fastForward('30:00'); await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:30:00 AM');
Test runner
- Новая опция CLI
--fail-on-flaky-tests
, которая устанавливает код выхода равным 1 при любых flaky-тестах. Обратите внимание, что по умолчанию тестовый прогон завершается с кодом 0, если все неудачные тесты восстановились при повторной попытке. С этой опцией прогон тестов в таком случае завершится неудачей. - Новая переменная среды
PLAYWRIGHT_FORCE_TTY
управляет тем, предполагают ли встроенные репортерыlist
,line
иdot
работу с терминалом. Например, это может быть полезно для отключения поведения tty, если ваша среда CI не очень хорошо обрабатывает управляющие последовательности ANSI. Или же, вы можете включить поведение tty даже при наличии live-терминала, если планируете постобработку вывода и обработку управляющих последовательностей.
# Avoid TTY features that output ANSI control sequences PLAYWRIGHT_FORCE_TTY=0 npx playwright test # Enable TTY features, assuming a terminal width 80 PLAYWRIGHT_FORCE_TTY=80 npx playwright test
- Новые опции
testConfig.respectGitIgnore
иtestProject.respectGitIgnore
управляют тем, исключать ли файлы, соответствующие шаблонам.gitignore
, при поиске тестов. - Новое свойство
timeout
теперь доступно для пользовательских матчеров expect. Это свойство учитываетplaywright.config.ts
иexpect.configure()
.
import { expect as baseExpect } from '@playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // When no timeout option is specified, use the config timeout. const timeout = options?.timeout ?? this.timeout; // ... implement the assertion ... }, });
Прочее
Метод locator.setInputFiles()
теперь поддерживает загрузку директории для элементов <input type=file webkitdirectory>
.
await page.getByLabel('Upload directory').setInputFiles(path.join(__dirname, 'mydir'));
Многие методы, такие как locator.click()
или locator.press()
, теперь поддерживают клавишу-модификатор ControlOrMeta
. Эта клавиша обозначает Meta
в macOS и Control
в Windows и Linux.
// Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation. await page.keyboard.press('ControlOrMeta+S');
- Новое свойство
httpCredentials.send
вapiRequest.newContext()
, позволяющее либо всегда отправлять заголовокAuthorization
, либо только в ответ на401 Unauthorized
. - Новая опция
reason
вapiRequestContext.dispose()
, которая будет включена в сообщение об ошибке текущих операций, прерванных в результате удаления контекста. - Новая опция
host
вbrowserType.launchServer()
позволяет принимать websocket-соединения по конкретному адресу вместо неопределенного0.0.0.0
. - Playwright теперь поддерживает Chromium, Firefox и WebKit на Ubuntu 24.04.
- v1.45 — последний выпуск, получивший обновление WebKit для macOS 12 Monterey. Пожалуйста, обновите macOS, чтобы продолжать использовать последнюю версию WebKit.
Версии браузеров
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
1.45 протестирована на следующих stable-каналах:
- Google Chrome 126
- Microsoft Edge 126