Jenkins и Playwright

Jenkins — это один из самых популярных инструментов для реализации непрерывной интеграции и непрерывного развертывания (CI/CD). Он позволяет автоматизировать процессы сборки, тестирования и развертывания программного обеспечения. В связке с инструментом Playwright, предназначенным для тестирования веб-приложений, можно создать мощную систему для автоматического выполнения тестов в реальном времени, обеспечивая высокий уровень качества и стабильности приложения.

Введение в Playwright

Playwright — это библиотека для тестирования, разработанная компанией Microsoft, предназначенная для взаимодействия с веб-страницами в браузерах. Она поддерживает автоматическое тестирование в браузерах Chrome, Firefox и WebKit (Safari) на различных операционных системах. В отличие от других инструментов, таких как Selenium, Playwright позволяет управлять браузером с высокой производительностью и надежностью, а также предоставляет возможности для тестирования как на клиентской, так и на серверной сторонах.

Jenkins: Основные принципы

Jenkins — это open-source система для автоматизации различных процессов в разработке ПО. Она широко используется для настройки автоматических сборок и тестирования, что позволяет минимизировать количество ошибок, возникающих при ручной сборке и развертывании. Jenkins поддерживает множество плагинов, включая интеграцию с инструментами тестирования, такими как Playwright.

Процесс работы с Jenkins включает несколько основных этапов:

  1. Настройка проекта — создание и настройка Jenkins-проекта для выполнения тестов.
  2. Настройка источника кода — интеграция с системой управления версиями (например, GitHub или Bitbucket) для получения актуальной версии кода.
  3. Сборка и тестирование — автоматическое выполнение сборки и тестов.
  4. Отчеты и уведомления — настройка отчётов о результатах тестирования и отправка уведомлений команде разработчиков.

Установка и настройка Jenkins для Playwright

Чтобы настроить Jenkins для автоматического выполнения тестов с использованием Playwright, необходимо пройти несколько шагов.

1. Установка Jenkins

Для установки Jenkins на локальную машину или сервер можно использовать следующие методы:

  • Docker: Запуск Jenkins через Docker контейнер.
  • Пакетный менеджер: Установка через apt, yum или другие менеджеры пакетов.
  • Ручная установка: Загрузка и установка WAR-файла Jenkins на сервер.

После установки, нужно запустить Jenkins и настроить его доступ через веб-интерфейс (обычно доступен по адресу http://localhost:8080).

2. Установка необходимых зависимостей

Для работы с Playwright в Jenkins необходимо установить несколько зависимостей:

  • Node.js — обязательное требование для работы с Playwright.
  • Playwright — сам инструмент для тестирования.
  • Jenkins NodeJS Plugin — плагин, позволяющий Jenkins работать с Node.js.

Установить Node.js и Playwright можно через терминал, выполнив следующие команды:

# Установка Node.js
sudo apt install nodejs npm

# Установка Playwright
npm install playwright

3. Конфигурация Jenkins-проекта

После установки всех зависимостей, нужно создать Jenkins-проект для запуска тестов Playwright. Для этого выполните следующие шаги:

  • Перейдите в интерфейс Jenkins и выберите «Новый элемент».
  • Создайте проект типа Freestyle project или Pipeline, в зависимости от ваших предпочтений.
  • В разделе Source Code Management выберите систему управления версиями (например, Git) и укажите URL репозитория с тестами.
  • В разделе Build добавьте шаги для установки зависимостей и запуска тестов Playwright.

Пример шага для запуска тестов в Jenkins:

# Установить зависимости
npm install

# Запустить тесты Playwright
npx playwright test

Создание и запуск тестов с Playwright

Тестирование с использованием Playwright в Jenkins может быть организовано с помощью простых JavaScript файлов, которые описывают взаимодействие с веб-страницами.

Пример теста Playwright

const { test, expect } = require('@playwright/test');

test('Тестируем страницу входа', async ({ page }) => {
  await page.goto('https://example.com/login');
  
  // Вводим данные в форму
  await page.fill('#username', 'testuser');
  await page.fill('#password', 'password123');
  
  // Отправляем форму
  await page.click('#loginButton');
  
  // Проверяем, что после логина пользователь перенаправлен на главную страницу
  await expect(page).toHaveURL('https://example.com/dashboard');
});

Использование Jenkins Pipeline для тестирования

Jenkins Pipeline позволяет более гибко управлять процессами CI/CD, включая автоматическое выполнение тестов Playwright. В этом случае создается файл Jenkinsfile, который описывает все этапы выполнения задачи.

Пример Jenkinsfile для выполнения тестов Playwright:

pipeline {
    agent any
    
    environment {
        NODE_HOME = '/usr/local/bin/node'
        PATH = "${NODE_HOME}:$PATH"
    }

    stages {
        stage('Скачивание кода') {
            steps {
                git 'https://github.com/ваш-репозиторий.git'
            }
        }

        stage('Установка зависимостей') {
            steps {
                script {
                    sh 'npm install'
                }
            }
        }

        stage('Запуск тестов Playwright') {
            steps {
                script {
                    sh 'npx playwright test'
                }
            }
        }
    }

    post {
        always {
            junit '**/test-results/*.xml'
        }
    }
}

В этом примере создаются три основных этапа:

  1. Скачивание кода из репозитория Git.
  2. Установка зависимостей с помощью npm.
  3. Запуск тестов Playwright с использованием команды npx playwright test.

После выполнения тестов можно настроить Jenkins для создания отчётов и отправки уведомлений, если тесты не прошли.

Визуализация результатов тестирования

Одним из важных аспектов автоматизации тестирования является анализ и визуализация результатов. Jenkins позволяет настроить интеграцию с такими инструментами, как Allure Report, для удобного отображения результатов тестов.

Для этого необходимо:

  1. Установить плагин Allure в Jenkins.
  2. В тестах Playwright использовать поддерживаемые форматы отчётов, например, JUnit или Allure.

Пример для генерации Allure отчета в Playwright:

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

test('Тест с Allure отчетом', async ({ page }) => {
  await page.goto('https://example.com');
  await expect(page).toHaveTitle('Example Domain');
});

Затем можно настроить Jenkins для генерации Allure-отчётов после выполнения тестов.

Оптимизация процесса тестирования

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

  1. Параллельное выполнение тестов — Playwright поддерживает параллельный запуск тестов, что позволяет ускорить их выполнение.

    В Playwright для этого достаточно указать количество параллельных процессов через команду npx playwright test --workers=4, где 4 — количество параллельных потоков.

  2. Тестирование на разных браузерах и устройствах — для повышения покрытия тестов можно настроить Jenkins на выполнение тестов на разных браузерах (Chrome, Firefox, WebKit) и устройствах.

Заключение

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