Фильтрация и выбор тестов для запуска

При работе с тестированием в Playwright важно иметь возможность выбирать, какие тесты должны быть запущены в зависимости от различных условий. Это может быть полезно для ускорения разработки, предотвращения излишних запусков тестов или для работы с определёнными частями приложения, которые требуют особого внимания. Playwright предоставляет мощные инструменты для фильтрации и выбора тестов, позволяя создавать гибкие и эффективные сценарии для автоматизированных проверок.

Фильтрация тестов по меткам

Одним из самых удобных способов фильтрации тестов в Playwright является использование меток (tags). Метки позволяют пометить тесты по различным категориям, таким как критические тесты, тесты для мобильных устройств, регрессионные тесты и так далее. Для того чтобы использовать метки, необходимо применить специальную аннотацию в тестах.

test('Проверка главной страницы', async ({ page }) => {
  // Тест для главной страницы
}).tag('regression'); // Присваивание метки

После того как тесты помечены метками, их можно отфильтровать при запуске с помощью опции --grep. Например, чтобы запустить только те тесты, которые имеют метку regression, можно использовать команду:

npx playwright test --grep @regression

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

npx playwright test --grep login

Фильтрация тестов по параметрам среды

Playwright предоставляет возможность запускать тесты в разных браузерах или на различных конфигурациях устройства, что может требовать фильтрации тестов по параметрам среды. Например, можно выбрать только те тесты, которые должны быть запущены в браузере Chromium, или же только для мобильных версий веб-сайта.

test('Тест для мобильной версии сайта', async ({ page }) => {
  // Тестирование на мобильной версии
}).tag('mobile');

Для фильтрации тестов, ориентированных на мобильные устройства, можно использовать команду:

npx playwright test --grep @mobile

Кроме того, можно указать запуск тестов только для определённых браузеров:

npx playwright test --project=firefox

Исключение тестов из запуска

Playwright также позволяет исключать тесты из выполнения. Это может быть полезно, если необходимо пропустить определённые тесты, не удаляя их из тестового набора. Для этого можно использовать команду --grep-invert для инвертирования фильтрации.

Например, если нужно исключить все тесты с меткой slow, команда будет следующей:

npx playwright test --grep-invert @slow

Фильтрация тестов по ключевым словам

В Playwright можно также фильтровать тесты по ключевым словам в их названиях. Для этого используется опция --grep, которая позволяет выполнить поиск по названию теста. Это полезно, если необходимо запустить только тесты, которые содержат определённую фразу или слово.

npx playwright test --grep "login"

Этот подход помогает ограничить выполнение тестов только теми, которые связаны с определённой частью функционала, например, с проверкой логина в приложении.

Запуск тестов с параметрами окружения

Часто тесты должны быть запущены с учётом различных параметров окружения, таких как переменные среды или конфигурация API. Playwright позволяет передавать эти параметры при запуске тестов. Например, можно указать использование определённого конфигурационного файла для запуска тестов.

npx playwright test --config=playwright.config.js

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

// Пример конфигурации для фильтрации тестов по окружению
module.exports = {
  projects: [
    {
      name: 'desktop',
      use: { ...devices['Desktop Chrome'] },
      testMatch: '**/desktop-tests/**',
    },
    {
      name: 'mobile',
      use: { ...devices['iPhone 12'] },
      testMatch: '**/mobile-tests/**',
    },
  ],
};

В этом примере можно запускать только те тесты, которые соответствуют определённому проекту или устройству, например, тесты для мобильных устройств или для настольных браузеров.

Важные моменты при фильтрации тестов

  1. Метки и регулярные выражения — при работе с метками важно использовать чёткие и осмысленные аннотации, чтобы избежать путаницы. Регулярные выражения позволяют гибко управлять фильтрацией, но требуют внимательности при написании.

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

  3. Конфигурация и параметры окружения — использование параметров окружения помогает в динамическом управлении запуском тестов, но важно обеспечить правильную настройку для каждого окружения. Переменные окружения могут быть использованы для выбора, какие тесты запускать в зависимости от внешних факторов (например, тестирование на определённом сервере или базе данных).

Пример сложной фильтрации

Сложные сценарии могут потребовать комбинации нескольких типов фильтрации. Например, если необходимо запустить все тесты, связанные с авторизацией, но только в браузере Chromium, при этом исключив медленные тесты, можно использовать следующую команду:

npx playwright test --grep "auth" --grep-invert @slow --project=chromium

Эта команда запускает тесты, которые содержат в названии слово auth, исключая те, что помечены как slow, и выполняет их только в браузере Chromium.

Заключение

Фильтрация и выбор тестов для запуска — ключевая возможность при автоматизированном тестировании с использованием Playwright. Она позволяет повысить гибкость и точность тестирования, улучшая контроль над процессом. Использование меток, фильтрации по браузерам, окружению и ключевым словам помогает эффективно управлять набором тестов, значительно сокращая время, необходимое для их выполнения, и давая возможность разработчикам и тестировщикам сосредоточиться на наиболее важных аспектах приложения.