Настройка в Travis CI

Для автоматизации процесса тестирования в CI/CD пайплайнах часто используется Travis CI. Эта система позволяет настроить тестирование с использованием Mocha, одного из самых популярных фреймворков для тестирования в JavaScript. Travis CI поддерживает интеграцию с различными языками программирования и инструментами, включая Node.js, что делает его идеальным для запуска тестов Mocha.

1. Структура проекта

Чтобы настроить Travis CI для запуска тестов Mocha, необходимо начать с организации правильной структуры проекта. Обычно это выглядит так:

/my-project
  /node_modules
  /test
    /test-suite.js
  package.json
  .travis.yml
  • node_modules — папка с установленными зависимостями.
  • test — папка, содержащая тестовые файлы.
  • package.json — файл с зависимостями и конфигурацией проекта.
  • .travis.yml — конфигурационный файл для Travis CI.

2. Установка Mocha

Для начала потребуется установить Mocha как зависимость проекта. Это можно сделать с помощью npm:

npm install --save-dev mocha

Установка через npm добавит Mocha в раздел devDependencies вашего package.json, что необходимо для корректной работы тестов в окружении CI.

3. Написание тестов

В папке test создаются тестовые файлы. Например, файл test/test-suite.js может содержать следующие тесты:

const assert = require('assert');

describe('Математические операции', function() {
  it('должен возвращать 4 при сложении 2 и 2', function() {
    assert.strictEqual(2 + 2, 4);
  });

  it('должен возвращать 0 при вычитании 2 из 2', function() {
    assert.strictEqual(2 - 2, 0);
  });
});

Этот пример тестирует базовые арифметические операции. Для работы с Mocha достаточно описать блоки describe и it, чтобы разделить тесты на группы и определить их поведение.

4. Конфигурация Travis CI

В корневой директории проекта нужно создать файл конфигурации .travis.yml. Этот файл будет указывать Travis CI, как и когда запускать тесты. Пример базового файла конфигурации для Node.js проекта с Mocha:

language: node_js
node_js:
  - "14"
  - "16"
  - "18"
script:
  - npm install
  - npm test

Объяснение:

  • language: node_js — указывает Travis CI, что проект использует Node.js.

  • node_js — список версий Node.js, которые будут использованы для тестирования. В данном примере Travis CI будет запускать тесты на версиях 14, 16 и 18.

  • script — команды, которые нужно выполнить в процессе тестирования. Здесь указано две команды:

    • npm install — установка всех зависимостей.
    • npm test — команда для запуска тестов. Если в package.json указана команда test, то она будет выполняться.

5. Интеграция с package.json

Для того чтобы Travis CI знал, как запускать тесты, нужно настроить скрипт test в файле package.json. Для этого добавьте следующий раздел в ваш package.json:

{
  "scripts": {
    "test": "mocha"
  }
}

Теперь при запуске npm test будет выполняться Mocha, который будет искать все тесты в проекте и запускать их.

6. Переменные окружения

Если вашему проекту требуется конфиденциальная информация, такая как ключи API или базы данных, можно использовать переменные окружения, чтобы скрыть их от кода и сделать их доступными только в процессе CI. Travis CI позволяет настраивать переменные окружения в интерфейсе или в .travis.yml.

Пример настройки переменных окружения в .travis.yml:

env:
  global:
    - API_KEY=your_api_key_here

Этот способ позволяет безопасно передавать конфиденциальные данные в процессе тестирования.

7. Запуск тестов в параллельных средах

Travis CI позволяет запускать тесты в нескольких средах (например, на разных версиях Node.js). Это полезно для проверки совместимости кода с различными версиями платформы. В вышеупомянутом примере используется параметр node_js, который указывает Travis CI запускать тесты на Node.js версиях 14, 16 и 18. Это позволяет убедиться, что проект будет работать корректно на каждой из этих версий.

8. Настройка отчетности

Для того чтобы получать подробную информацию о прохождении тестов, можно интегрировать Travis CI с различными сервисами для отчетности, такими как Coveralls или Codecov. Для этого необходимо установить соответствующие пакеты и добавить их в скрипты Travis CI.

Пример настройки отчета покрытия кода с помощью Coveralls:

  1. Установите зависимость для Coveralls:
npm install --save-dev coveralls
  1. Добавьте команду для отправки отчетов в Travis CI:
after_success:
  - cat ./coverage/lcov-report/lcov-report/index.html | coveralls

В этом случае, после успешного выполнения тестов, Travis CI отправит отчет о покрытии кода в Coveralls.

9. Настройка тестов с использованием дополнительных утилит

Иногда в процессе тестирования может понадобиться использовать дополнительные инструменты, такие как Chai для утверждений или Sinon для создания мока и шпионов. Эти библиотеки можно установить через npm и интегрировать с Mocha.

Пример установки Chai:

npm install --save-dev chai

И использование Chai в тестах:

const chai = require('chai');
const assert = chai.assert;

describe('Математические операции', function() {
  it('должен возвращать 4 при сложении 2 и 2', function() {
    assert.equal(2 + 2, 4);
  });
});

Эти библиотеки помогут сделать тесты более выразительными и удобными в использовании.

10. Завершение настройки

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