Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Интеграция с CI/CD
ci_cd

Интеграция с CI/CD

Запуск тестов в GitHub Actions и GitLab CI, headless режим, параллельный запуск, кэширование

Интеграция с CI/CD

Автоматизация тестов без CI/CD — как код без репозитория. Playwright отлично интегрируется с GitHub Actions и GitLab CI.

#1. Минимальный пайплайн GitHub Actions

# .github/workflows/e2e.yml name: E2E Tests on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install dependencies run: | pip install -r requirements.txt playwright install chromium - name: Run tests run: pytest tests/ --browser chromium

Это основа: checkout → Python → зависимости → браузеры → тесты.

#2. Кэширование браузеров

Скачивание браузеров занимает 1-2 минуты. Кешируйте между запусками:

- name: Cache Playwright browsers uses: actions/cache@v4 with: path: ~/.cache/ms-playwright key: playwright-browsers-${{ runner.os }}-${{ hashFiles('requirements.txt') }} restore-keys: playwright-browsers-${{ runner.os }}- - name: Install Playwright browsers run: playwright install chromium

~/.cache/ms-playwright — директория браузеров на Linux. Кеш восстанавливается за секунды вместо скачивания.

#3. Параллельный запуск

Установите pytest-xdist для распределения тестов по ядрам:

pip install pytest-xdist
- name: Run tests in parallel run: pytest tests/ --browser chromium -n auto

-n auto использует все доступные ядра. Реальное ускорение: 2-4x на 4-ядерном runner.

#4. HTML-отчёт

- name: Run tests with HTML report run: pytest tests/ --browser chromium --reporter=html - name: Upload test report if: always() uses: actions/upload-artifact@v4 with: name: playwright-report path: playwright-report/ retention-days: 30

if: always() гарантирует загрузку отчёта даже при падении тестов. Отчёт доступен в разделе Actions → Artifacts.

#5. Trace Viewer в CI

- name: Run tests with tracing run: pytest tests/ --browser chromium --tracing=on - name: Upload traces if: failure() uses: actions/upload-artifact@v4 with: name: playwright-traces path: test-results/ retention-days: 14

Скачайте артефакт и откройте trace локально:

npx playwright show-trace test-results/trace.zip

#6. Матрица браузеров

Запуск на всех трёх движках:

test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: browser: [chromium, firefox, webkit] steps: - uses: actions/checkout@v4 - name: Install dependencies run: | pip install -r requirements.txt playwright install ${{ matrix.browser }} - name: Run tests run: pytest tests/ --browser ${{ matrix.browser }}

fail-fast: false — все браузеры тестируются даже если один упал.

#7. GitLab CI

# .gitlab-ci.yml e2e-tests: image: python:3.12 stage: test variables: PLAYWRIGHT_BROWSERS_PATH: /ms-playwright cache: key: playwright-browsers paths: - /ms-playwright before_script: - pip install -r requirements.txt - playwright install chromium script: - pytest tests/ --browser chromium --reporter=html artifacts: when: always reports: html: playwright-report/ paths: - playwright-report/ expire_in: 30 days

#8. Секреты в CI

- name: Run tests env: DB_PASSWORD: ${{ secrets.DB_PASSWORD }} API_TOKEN: ${{ secrets.API_TOKEN }} run: pytest tests/

В тестах:

import os def test_api(page): token = os.environ['API_TOKEN'] page.goto(f'/auth?token={token}')

#9. Запуск по расписанию

on: schedule: - cron: '0 6 * * 1-5' # Каждый будний день в 6:00 UTC

Полезно для nightly-прогона полного набора тестов.

#10. Условный запуск

Запускать e2e только при изменении фронтенда:

test: paths: - 'frontend/**' - 'tests/**'

Или через paths-ignore:

test: paths-ignore: - 'docs/**' - 'README.md'

#11. Docker-образ для CI

Готовый образ с браузерами экономит время:

FROM mcr.microsoft.com/playwright/python:v1.40.0-jammy WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["pytest", "tests/", "--reporter=html"]
- name: Run tests in Docker run: docker build -t e2e . && docker run e2e

#12. Типичные ошибки

❌ Нет playwright install в CI. Тесты упадут: «Browser is not available». pip install playwright не скачивает браузеры.

❌ Нет кэширования браузеров. Каждый запуск скачивает 300-500 МБ — лишние 1-2 минуты.

❌ Отсутствие артефактов при падении. if: always() или when: always критичны — без них отчёт не загрузится при неудаче.

✅ Правильный подход: кэширование браузеров, -n auto для параллелизма, HTML-отчёт + traces как артефакты, секреты через переменные окружения.


#Упражнения

  1. Создайте .github/workflows/e2e.yml для запуска тестов на Chromium при push в main.
  2. Добавьте кэширование браузеров через actions/cache.
  3. Настройте HTML-отчёт с загрузкой артефакта при любом исходе тестов.
  4. Создайте матрицу для запуска на Chromium и Firefox.

#Что дальше?

Изучите отчёты и отладку, чтобы диагностировать падения тестов через Trace Viewer.

Далее: Отчёты и отладка