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