Как запустить Cypress-тесты в Jenkins?

Cypress — это фреймворк на базе JavaScript, который используется для проведения сквозного тестирования веб-сайтов. При выполнении Cypress-тестов вы можете столкнуться с необходимостью интегрировать их с CI/CD-инструментами, такими как Jenkins, для автоматизации процесса сборки и деплоя.

Интеграция Cypress с пайплайнами Jenkins позволяет QA-специалистам оптимизировать процесс тестирования благодаря автоматическому запуску тестов при каждом коммите (изменении) кода, обеспечивая быструю обратную связь и выявление ошибок на ранних этапах разработки.

В этой статье мы подробно рассмотрим как настроить запуск Cypress-тестов в пайплайне Jenkins.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Содержание:

Что такое Jenkins?

Jenkins — это инструмент с открытым исходным кодом, предназначенный для автоматизации процессов тестирования, в частности для реализации непрерывной интеграции и доставки программного обеспечения (CI/CD, Continuous Integration and Continuous Delivery).

Вот некоторые из преимуществ использования Jenkins:

  • Он бесплатный, имеет открытый исходный код, находится в свободном доступе и может быть адаптирован под нужды конкретного проекта.
  • Его довольно легко настроить. C помощью дашборда Jenkins можно быстро создавать, настраивать и управлять задачами, пайплайнами и конфигурациями.
  • Jenkins поддерживает большое количество плагинов, которые расширяют его функциональность, позволяя легко интегрироваться с системами контроля версий, инструментами сборки, фреймворками для тестирования и т.д.
  • Он позволяет распределять выполнение сборок и тестирования между несколькими машинами. Это позволяет оптимизировать использование ресурсов и повысить производительность сборки, особенно в масштабных проектах.
  • Jenkins имеет большое и активное сообщество пользователей, разработчиков и тестировщиков, предоставляющих обширную документацию, обучающие материалы, форумы и поддержку.

Зачем использовать Cypress с Jenkins?

Cypress в основном предпочитают разработчики и тестировщики, которые работают с JavaScript. При использовании этого фреймворка отсутствует необходимость установки дополнительных библиотек, зависимостей, драйверов и т. д., как это происходит в случае с Selenium.

Как уже упоминалось выше, Jenkins предлагает множество плагинов и легкую настройку. Так что, если вы ищете CI/CD-инструмент с открытым исходным кодом, который легко интегрируется с Cypress, то Jenkins — это подходящий вариант.

Как настроить Jenkins для запуска Cypress-тестов?

Прежде чем настраивать Jenkins, заранее установите Cypress.

Установка плагина NodeJS

Давайте рассмотрим шаги по установке плагина NodeJS с помощью Jenkins.

1. В Jenkins откройте Dashboard и перейдите в Manage Jenkins > Plugins > Available plugins, в строке поиска введите NodeJS plugin и установите его.

2. После установки плагина перейдите в Manage Jenkins > Global Tool Configuration и нажмите Add NodeJS.

Затем:

  1. Укажите имя установки, например «Node».
  2. Установите флажок Install automatically.
  3. Выберите версию NodeJS, совместимую с Cypress.
  4. Установите глобальные npm-пакеты для Cypress.
  5. Остальные конфигурации оставьте без изменений.

Теперь нам нужно создать проект Jenkins для выполнения Cypress-тестов. Для этого воспользуемся таким типом проекта, как Freestyle project, который поможет разделить процесс сборки на несколько этапов, что сделает управление сборками на отдельных стадиях более удобным.

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

Проект Jenkins с типом Freestyle может быть таким же мощным и сложным, как и любая сборка, созданная с помощью Jenkins Pipeline или Groovy DSL. Однако тестировщикам для этого необходимо уметь писать скрипты и управлять ими.

Создание проекта Jenkins Freestyle

Ниже описаны шаги по созданию проекта Jenkins с типом Freestyle.

1. В Jenkins создадим новый проект — Freestyle project.

2. В разделе Source Code Management укажите URL-адрес вашего Git-репозитория и необходимые учетные данные.

3. Теперь перейдем к разделу Build Environment. Здесь мы настраиваем среду NodeJS, которая нам необходима для запуска Cypress-тестов. Установите галочку Provide Node & npm bin/ folder to PATH.

Если вы помните, мы уже добавляли установку NodeJS. Мы увидим имя «Node», которое мы указали ранее, в выпадающем списке NodeJS Installation. Выберите это имя, а остальные конфигурации оставьте прежними.

Все готово, только не забудьте добавить команду для запуска Cypress-тестов в разделе Build Steps.

Настройка пайплайна Jenkins

Пайплайн — это серия связанных между собой событий или задач, которые выполняются в определенном порядке. Говоря простым языком, Jenkins Pipeline — это набор модулей или плагинов, которые позволяют автоматизировать процессы непрерывной интеграции и доставки в Jenkins.

Jenkins Pipeline имеет масштабируемую систему автоматизации для создания базовых и сложных пайплайнов с использованием языка Domain-Specific Language (DSL).

В Jenkins Pipeline используются следующие понятия:

  • Pipeline (Пайплайн)Это код, выполняемый для сборки, тестирования и доставки приложений. Он представляет собой набор инструкций в виде кода для реализации процесса непрерывной доставки.
  • Node (Узел): Это машина или система, на которой Jenkins выполняет задачи.
  • Stage (Этап): Он состоит из следующих шагов: сборка, тестирование и деплой.
  • Step (Шаг): Это одно действие внутри этапа, например запуск тестов или установка зависимостей.

Вот как выглядит Jenkins-файл для пайплайна:

pipeline {
  agent any


  tools {nodejs "Node"}


  environment {
      CHROME_BIN = '/bin/google-chrome'
   
  }
  stages {
      stage('Dependencies') {
          steps {
              sh 'npm i'
          }
      }
      stage('e2e Tests') {
          steps {
               parallel(
                 'Test 1': {
                 
                     sh 'npm run cypress:ci'
                 },
                 'Test 2': {
                        sh 'npm run cypress2:ci'
                    }
                )
            }
        }

      stage('Deploy') {
          steps {
              echo 'Deploying....'
          }
      }
  }
}

Ниже описаны шаги по созданию проекта для пайплайна:

1. Создайте новый проект, выбрав Pipeline и указав его имя, например «Cypress Example Pipeline».

2. В разделе Pipeline, в блоке SCM укажите сведения о вашем Git-репозитории.

3. Нажмите Save и Apply. Теперь ваш Jenkins-файл будет иметь выбранную конфигурацию.

4. Далее нажмите на Build Now, чтобы запустить процесс выполнения пайплайна.

Вы можете просмотреть результаты выполнения пайплайна на дашборде Jenkins.

Итак, мы рассмотрели, как настроить Jenkins pipeline. Однако при выполнении тестирования с помощью Cypress и Jenkins QA-специалисты могут столкнуться с такими проблемами, как управление различными браузерами и устройствами, обеспечение эффективного выполнения тестов в различных средах, а также настройка и поддержка инфраструктуры для параллельного тестирования.

Чтобы справится с этими трудностями, целесообразно интегрировать Jenkins с облачным сервисом Cypress, например LambdaTest. Он предоставляет масштабируемую инфраструктуру для тестирования, оптимизированного выполнения тестов и широкие возможности кросс-браузерного тестирования.

Как интегрировать пайплайн Jenkins с облачным сервисом Cypress?

LambdaTest — это облачная платформа, позволяющая масштабировать тестирование на Cypress, запуская его на удаленной тестовой лаборатории с реальными браузерами, такими как Chrome, Firefox, Edge и WebKit. Она предлагает плагин для Jenkins, позволяющий запускать Cypress-тесты через пайплайн Jenkins.

Ниже описаны шаги по настройке LambdaTest в пайплайне Jenkins:

  1. Нажмите Manage Jenkins > Plugins..
  2. Перейдите на вкладку Available.
  3. В поле фильтрации введите LambdaTest.
  4. В появившемся списке плагинов выберите LambdaTest.
  5. Чтобы установить плагин LambdaTest, установите флажок напротив него.

Пример Jenkins-файла для настройки пайплайна с использованием LambdaTest и Cypress будет выглядеть следующим образом:

pipeline {
  agent any
  tools {nodejs "Node"}
  stages {
      stage('Dependencies') {
          steps {
              sh 'npm i'
              sh 'npm install lambdatest-cypress-cli'
          }
      }
      stage('e2e Tests') {
          steps {
              sh 'npm run cypress:lambda'
          }
      }
      stage('Deploy') {
          steps {
              echo 'Deploying....'
          }
      }
  }
}

Далее создадим проект Freestyle project по такому же принципу как описывалось выше.

Задача cypress:lambda будет выполняться на этапе e2e Tests  в пайплайне Jenkins.

Теперь нажмите Build Now на странице проекта, и перейдите в раздел Status, чтобы увидеть следующий результат:

После сборки мы можем проверить вывод консоли и убедиться, что Cypress-тесты были запущены.

Как видно из приведенного выше снимка, сборка была успешно выполнена, и результаты тестов были загружены в веб-интерфейс Web Automation Dashboard на платформе LambdaTest.

Как выполнить параллельное тестирование Cypress в облаке?

Платформа LambdaTest позволяет проводить параллельное тестирование на 50+ браузерах, ускоряя выполнение тестов через пайплайн Jenkins. Кроме того, это помогает повысить общее покрытие тестами и обеспечить качество сборки программного обеспечения.

Чтобы начать сквозное тестирование на Cypress (e2e-тестирование), выполните следующие шаги:

1. Установите LambdaTest CLI для Cypress на вашу локальную машину, выполнив следующую команду:

npm install -g lambdatest-cypress-cli

2. После завершения установки настройте конфигурацию с помощью следующей команды:

lambdatest-cypress init

После выполнения этой команды в папке проекта будет создан файл lambdatest-config.json .

3. Далее введите имя пользователя и ключ доступа LambdaTest. Вы можете получить эти учетные данные в вашем профиле LambdaTest: Profile > Account Settings > Password & Security.

"lambdatest_auth": {
    "username": "<Your LambdaTest username>",
    "access_key": "<Your LambdaTest access key>"

4. Теперь настройте необходимые комбинации браузеров и ОС в файле lambdatest-config.json в секции browsers:

{
    "lambdatest_auth": {
       "username": "",
       "access_key": ""
    },
    "browsers": [
       {
          "browser": "MicrosoftEdge",
          "platform": "Windows 10",
          "versions": [
             "latest"
          ]
       },
       {
          "browser": "Chrome",
          "platform": "Windows 10",
          "versions": [
             "latest"
          ]
       },
       {
          "browser": "Firefox",
          "platform": "Windows 10",
          "versions": [
             "latest"
          ]
       }
    ],  

5. В секции run_settings в JSON-файле вы настраиваете конфигурацию запуска, а именно версию Cypress, имя сборки, количество параллельных сессий, путь к тестовым файлам и т. д.

"run_settings": {
    "build_name": "build-Cypress-test",
    "parallels": 5,
    "specs": "./cypress/integration/e2e_tests/*.spec.js",
    "pluginsFile": true,
    "ignore_files": "",
    "npm_dependencies": {
       "cypress": "13"

    },
    "feature_file_suppport": true
 },

6.Секция tunnel_settings  позволяет соединить вашу локальную систему с серверами LambdaTest через SSH-туннель (зашифрованное соединение). После создания этого туннеля, вы сможете тестировать локально размещенные страницы на всех браузерах, поддерживаемых Cypress на платформе LambdaTest.

"run_settings": {
    "build_name": "build-Cypress-test",
    "parallels": 5,
    "specs": "./cypress/integration/e2e_tests/*.spec.js",
    "pluginsFile": true,
    "ignore_files": "",
    "npm_dependencies": {
       "cypress": "13"

    },
    "feature_file_suppport": true
 },

Используя LambdaTest, вы можете запускать Cypress-тесты параллельно и соответственно сократить время их выполнения. Кроме того, такой подход обеспечивает параллельное выполнение тестов на различных браузерах, устройствах и операционных системах.

Заключение

В этой статье мы рассказали вам о важности использования Jenkins и о том, как его можно интегрировать в проекты на Cypress для запуска автотестов в облаке через платформу LambdaTest с целью реализации непрерывной интеграции. Использование Jenkins для запуска тестов экономит время, а результаты можно визуализировать с помощью подробных логов.

Перевод статьи «How to Run Cypress With Jenkins [Cypress Jenkins Tutorial]».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *