Spec-Zone.ru › Playwright

Конфигурация (использование)

Введение​

Помимо настройки средства запуска тестов, можно также настроить эмуляцию, сеть и запись для браузера или контекста браузера. Эти параметры передаются объекту use: {} в конфигурации Playwright.

Основные параметры​

Задайте базовый URL и состояние хранилища для всех тестов:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    // Base URL to use in actions like `await page.goto('/')`.
    baseURL: 'http://localhost:3000',

    // Populates context with given storage state.
    storageState: 'state.json',
  },
});
Параметр Описание
testOptions.baseURL Базовый URL, используемый для всех страниц в контексте. Позволяет переходить по одному лишь пути, например page.goto('/settings').
testOptions.storageState Заполняет контекст указанным состоянием хранилища. Полезно для простой аутентификации, подробнее.

Параметры эмуляции​

С помощью Playwright можно эмулировать реальное устройство, например мобильный телефон или планшет. Дополнительные сведения об эмуляции устройств см. в нашем руководстве по проектам. Также можно эмулировать "geolocation", "locale" и "timezone" для всех тестов или для отдельного теста, а также задать "permissions", чтобы показывать уведомления, или изменить "colorScheme". Подробнее см. в нашем руководстве по эмуляции.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    // Emulates `'prefers-colors-scheme'` media feature.
    colorScheme: 'dark',

    // Context geolocation.
    geolocation: { longitude: 12.492507, latitude: 41.889938 },

    // Emulates the user locale.
    locale: 'en-GB',

    // Grants specified permissions to the browser context.
    permissions: ['geolocation'],

    // Emulates the user timezone.
    timezoneId: 'Europe/Paris',

    // Viewport used for all pages in the context.
    viewport: { width: 1280, height: 720 },
  },
});
Параметр Описание
testOptions.colorScheme Эмулирует медиафункцию 'prefers-colors-scheme'; допустимые значения: 'light' и 'dark'
testOptions.geolocation Геолокация контекста.
testOptions.locale Эмулирует локаль пользователя, например en-GB, de-DE и т. д.
testOptions.permissions Список разрешений, предоставляемых всем страницам в контексте.
testOptions.timezoneId Изменяет часовой пояс контекста.
testOptions.viewport Область просмотра, используемая для всех страниц в контексте.

Параметры сети​

Доступные параметры для настройки сети:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    // Whether to automatically download all the attachments.
    acceptDownloads: false,

    // An object containing additional HTTP headers to be sent with every request.
    extraHTTPHeaders: {
      'X-My-Header': 'value',
    },

    // Credentials for HTTP authentication.
    httpCredentials: {
      username: 'user',
      password: 'pass',
    },

    // Whether to ignore HTTPS errors during navigation.
    ignoreHTTPSErrors: true,

    // Whether to emulate network being offline.
    offline: true,

    // Proxy settings used for all pages in the test.
    proxy: {
      server: 'http://myproxy.com:3128',
      bypass: 'localhost',
    },
  },
});
Параметр Описание
testOptions.acceptDownloads Автоматически ли загружать все вложения; по умолчанию true. Подробнее о работе с загрузками см. в разделе «Загрузки».
testOptions.extraHTTPHeaders Объект с дополнительными HTTP-заголовками, отправляемыми с каждым запросом. Все значения заголовков должны быть строками.
testOptions.httpCredentials Учетные данные для HTTP-аутентификации.
testOptions.ignoreHTTPSErrors Игнорировать ли ошибки HTTPS во время перехода по страницам.
testOptions.offline Эмулировать ли отсутствие подключения к сети.
testOptions.proxy Параметры прокси-сервера, используемого для всех страниц теста.
примечание

Для имитации сетевых запросов не нужно ничего настраивать. Просто определите пользовательский маршрут, который имитирует сеть для контекста браузера. Подробнее см. в нашем руководстве по имитации сети.

Параметры записи​

С помощью Playwright можно делать снимки экрана, записывать видео и трассировки тестов. По умолчанию эти функции отключены, но их можно включить, задав параметры screenshot, video и trace в файле playwright.config.js.

Файлы трассировок, снимки экрана и видео появятся в каталоге результатов тестов, обычно test-results.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    // Capture screenshot after each test failure.
    screenshot: 'only-on-failure',

    // Record trace only when retrying a test for the first time.
    trace: 'on-first-retry',

    // Record video only when retrying a test for the first time.
    video: 'on-first-retry'
  },
});
Параметр Описание
testOptions.screenshot Создание снимков экрана теста. Возможные значения: 'off', 'on' и 'only-on-failure'
testOptions.trace Playwright может создавать трассировки тестов во время их выполнения. Позже можно просмотреть трассировку и получить подробную информацию о выполнении Playwright, открыв просмотрщик трассировок. Возможные значения: 'off', 'on', 'retain-on-failure' и 'on-first-retry'
testOptions.video Playwright может записывать видео тестов. Возможные значения: 'off', 'on', 'retain-on-failure' и 'on-first-retry'

Режимы трассировки​

Параметр trace поддерживает несколько режимов, различающихся тем, какие запуски записываются и какие записи сохраняются после завершения теста. Первый запуск теста — это «первый запуск»; последующие запуски, вызванные повторными попытками, — это «повторные попытки».

Режим Когда записывается трассировка Когда трассировка сохраняется
'off' никогда —
'on' при каждом запуске всегда
'retain-on-failure' при каждом запуске если этот запуск завершился с ошибкой
'retain-on-first-failure' только при первом запуске если первый запуск завершился с ошибкой
'retain-on-failure-and-retries' при каждом запуске если этот запуск завершился с ошибкой или является повторной попыткой
'on-first-retry' только при первой повторной попытке всегда
'on-all-retries' при каждой повторной попытке всегда

В следующей таблице показано, какие трассировки сохраняются в нескольких распространенных сценариях при условии, что настроен параметр retries: 2:

Режим Успех при первом запуске Ошибка, затем успех при повторной попытке Ошибка при каждом запуске
'off' — — —
'on' первый запуск первый запуск + повторная попытка все три запуска
'retain-on-failure' — первый запуск все три запуска
'retain-on-first-failure' — первый запуск первый запуск
'retain-on-failure-and-retries' — первый запуск + повторная попытка все три запуска
'on-first-retry' — первая повторная попытка первая повторная попытка
'on-all-retries' — первая повторная попытка обе повторные попытки

Режимы записи видео​

Параметр video поддерживает те же режимы, что и trace, и запись с сохранением выполняется по тем же правилам.

Режим Когда записывается видео Когда видео сохраняется
'off' никогда —
'on' при каждом запуске всегда
'retain-on-failure' при каждом запуске если этот запуск завершился с ошибкой
'retain-on-first-failure' только при первом запуске если первый запуск завершился с ошибкой
'retain-on-failure-and-retries' при каждом запуске если этот запуск завершился с ошибкой или является повторной попыткой
'on-first-retry' только при первой повторной попытке всегда
'on-all-retries' при каждой повторной попытке всегда

В следующей таблице показано, какие видео сохраняются в нескольких распространенных сценариях при условии, что настроен параметр retries: 2:

Режим Успех при первом запуске Ошибка, затем успех при повторной попытке Ошибка при каждом запуске
'off' — — —
'on' первый запуск первый запуск + повторная попытка все три запуска
'retain-on-failure' — первый запуск все три запуска
'retain-on-first-failure' — первый запуск первый запуск
'retain-on-failure-and-retries' — первый запуск + повторная попытка все три запуска
'on-first-retry' — первая повторная попытка первая повторная попытка
'on-all-retries' — первая повторная попытка обе повторные попытки

Другие параметры​

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    // Maximum time each action such as `click()` can take. Defaults to 0 (no limit).
    actionTimeout: 0,

    // Name of the browser that runs tests. For example `chromium`, `firefox`, `webkit`.
    browserName: 'chromium',

    // Toggles bypassing Content-Security-Policy.
    bypassCSP: true,

    // Channel to use, for example "chrome", "chrome-beta", "msedge", "msedge-beta".
    channel: 'chrome',

    // Run browser in headless mode.
    headless: false,

    // Change the default data-testid attribute.
    testIdAttribute: 'pw-test-id',
  },
});
Параметр Описание
testOptions.actionTimeout Тайм-аут для каждого действия Playwright в миллисекундах. По умолчанию 0 (без тайм-аута). Подробнее о тайм-аутах и настройке тайм-аута для отдельного теста.
testOptions.browserName Название браузера, в котором запускаются тесты. По умолчанию — 'chromium'. Возможные значения: chromium, firefox или webkit.
testOptions.bypassCSP Включает обход Content-Security-Policy. Полезно, если CSP включает источник, используемый в рабочей среде. По умолчанию false.
testOptions.channel Канал браузера. Подробнее о браузерах и каналах см. в разделе «Браузеры».
testOptions.headless Запускать ли браузер в безголовом режиме, то есть не отображать окно браузера во время выполнения тестов. По умолчанию true.
testOptions.testIdAttribute Изменяет атрибут data-testid по умолчанию, используемый локаторами Playwright.

Дополнительные параметры браузера и контекста​

Любые параметры, принимаемые методами browserType.launch(), browser.newContext() или browserType.connect(), можно поместить соответственно в launchOptions, contextOptions или connectOptions в разделе use.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    launchOptions: {
      slowMo: 50,
    },
  },
});

Однако наиболее распространенные параметры, например headless или viewport, доступны непосредственно в разделе use — см. разделы «Основные параметры», «Эмуляция» или «Сеть».

Явное создание контекста и наследование параметров​

Во время выполнения теста или хука каждый контекст браузера, созданный через экземпляр Playwright, используемый средством запуска тестов, наследует параметры контекста из раздела use. Сюда входят контексты, созданные с помощью встроенной фикстуры browser, отдельно запущенного браузера, browserType.launchPersistentContext() или прямого импорта playwright-core, который разрешается в тот же экземпляр. Явно заданные параметры контекста имеют приоритет:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    userAgent: 'some custom ua',
    viewport: { width: 100, height: 100 },
  },
});

Пример теста, демонстрирующий, как задать исходные параметры контекста:

test('should inherit use options on context when using built-in browser fixture', async ({
  browser,
}) => {
  const context = await browser.newContext();
  const page = await context.newPage();
  expect(await page.evaluate(() => navigator.userAgent)).toBe('some custom ua');
  expect(await page.evaluate(() => window.innerWidth)).toBe(100);
  await context.close();
});

Области действия конфигурации​

Можно настроить Playwright глобально, для проекта или для теста. Например, можно задать локаль для глобального использования, добавив locale в параметр use конфигурации Playwright, а затем переопределить ее для конкретного проекта с помощью параметра project в конфигурации. Также можно переопределить ее для конкретного теста, добавив test.use({}) в файл теста и передав параметры.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    locale: 'en-GB'
  },
});

Переопределить параметры для конкретного проекта можно с помощью параметра project в конфигурации Playwright.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  projects: [
    {
      name: 'chromium',
      use: {
        ...devices['Desktop Chrome'],
        locale: 'de-DE',
      },
    },
  ],
});

Переопределить параметры для конкретного файла теста можно с помощью метода test.use(), передав ему параметры. Например, чтобы запустить тесты с французской локалью для конкретного теста:

import { test, expect } from '@playwright/test';

test.use({ locale: 'fr-FR' });

test('example', async ({ page }) => {
  // ...
});

То же самое можно сделать внутри блока describe. Например, чтобы запустить тесты в блоке describe с французской локалью:

import { test, expect } from '@playwright/test';

test.describe('french language block', () => {

  test.use({ locale: 'fr-FR' });

  test('example', async ({ page }) => {
    // ...
  });
});

Сброс параметра​

Можно сбросить параметр до значения, заданного в файле конфигурации. Рассмотрим следующую конфигурацию, в которой задан baseURL:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    baseURL: 'https://playwright.dev',
  },
});

Теперь можно настроить baseURL для файла, а также отключить его для отдельного теста.

import { test } from '@playwright/test';

// Configure baseURL for this file.
test.use({ baseURL: 'https://playwright.dev/docs/intro' });

test('check intro contents', async ({ page }) => {
  // This test will use "https://playwright.dev/docs/intro" base url as defined above.
});

test.describe(() => {
  // Reset the value to a config-defined one.
  test.use({ baseURL: undefined });

  test('can navigate to intro from the home page', async ({ page }) => {
    // This test will use "https://playwright.dev" base url as defined in the config.
  });
});

Чтобы полностью сбросить значение до undefined, используйте полную запись фикстуры.

import { test } from '@playwright/test';

// Completely unset baseURL for this file.
test.use({
  baseURL: [async ({}, use) => use(undefined), { scope: 'test' }],
});

test('no base url', async ({ page }) => {
  // This test will not have a base url.
});

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/test-use-options

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API