Веб

Настройка Newman + Allure через nvm на macOS

Пошаговая настройка Newman и Allure reporter через nvm на macOS для решения ошибок EACCES и поиска репортера.

1 ответ 1 просмотр

Как правильно настроить Newman + Allure reporter через nvm на macOS, чтобы избежать ошибок EACCES и «could not find allure reporter»?

У меня Node.js установлен через nvm, Newman работает корректно, но при запуске с репортером Allure возникает ошибка: «newman: could not find “allure” reporter». Также иногда возникают проблемы с правами доступа (EACCES) при установке глобальных пакетов.

Пожалуйста, объясните:

  1. Как правильно установить newman-reporter-allure (локально или глобально) и почему?
  2. Как правильно запускать Newman, чтобы репортер Allure стабильно находился?
  3. Какие команды использовать для генерации отчета Allure после прогона тестов?

Буду благодарен за пошаговый пример настройки под macOS с использованием nvm.

Правильная настройка Newman + Allure через nvm на macOS решает проблемы с ошибкой EACCES и “could not find allure reporter”. Установка репортера Allure должна соответствовать области видимости Newman (глобальный/локальный), а запуск тестов с указанием сохранения результатов в папку allure-results гарантирует корректную работу репортера. Использование nvm позволяет избежать конфликтов системных прав и обеспечивает изоляцию версий Node.js.


Содержание


Установка Node.js через nvm на macOS для избежания ошибок EACCES

Ошибка EACCES (Permission Denied) возникает при попытке npm записывать в системные каталоги, такие как /usr/local/lib/node_modules, которые защищены правами доступа. Это распространенная проблема при установке Node.js и пакетов напрямую через официальный установщик или brew.

Почему возникает ошибка EACCES?
Когда Node.js установлен через официальный установщик, npm пытается устанавливать пакеты в системные каталоги, требующие прав суперпользователя. На macOS это приводит к необходимости использования команды sudo, что создает дополнительные проблемы с безопасностью и управлением правами.

Как nvm решает проблему EACCES?
Node Version Manager (nvm) устанавливает Node.js и все связанные пакеты в домашний каталог пользователя (~/.nvm), что позволяет избежать конфликтов системных прав. Все операции выполняются от имени обычного пользователя без необходимости в sudo.

Проверка установки nvm:
Убедитесь, что nvm уже установлен и настроен:

bash
nvm --version

Если nvm не установлен, выполните команду для добавления в ваш профиль:

bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

Установка Node.js через nvm:
Рекомендуется использовать LTS (Long Term Support) версию:

bash
nvm install 18
nvm use 18
nvm alias default 18

Проверьте установку:

bash
node -v
npm -v

Эта настройка гарантирует, что все пакеты будут установлены в ~/.nvm/versions/node/v18.x.x/lib/node_modules, где у вас есть полные права на запись.


Правильная установка Newman и репортера Allure

Правильная установка Newman и репортера Allure — ключевой момент для избежания ошибки “could not find allure reporter”. Основное правило: область видимость установки Newman и репортера должна совпадать.

Установка Newman

Глобальная установка Newman:
Если вы планируете использовать Newman в различных проектах, установите его глобально:

bash
npm install -g newman

Локальная установка Newman:
Для проектов, где требуется изоляция зависимостей, используйте локальную установку:

bash
npm install --save-dev newman

Установка репортера Allure

Глобальная установка репортера (для глобального Newman):
Если Newman установлен глобально, репортер также должен быть установлен глобально:

bash
npm install -g newman-reporter-allure

Локальная установка репортера (для локального Newman):
Если Newman установлен локально, репортер устанавливается как dev-зависимость:

bash
npm install --save-dev newman-reporter-allure

Почему важно соответствие области видимости?
Newman ищет репортеры в тех же каталогах, где сам установлен. Если Newman глобальный, он ищет репортеры в глобальных каталогах npm. Если Newman локальный, он ищет репортеры в node_modules текущего проекта.

Проверка установки:
После установки проверьте, что репортер доступен:

bash
# Для глобальной установки
newman --reporters | grep allure

# Для локальной установки
npx newman --reporters | grep allure

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

bash
npm view newman-reporter-allure peerDependencies

Запуск Newman с репортером Allure

После правильной установки Newman и репортера Allure, следующий шаг — корректный запуск тестов с указанием параметров для репортера.

Формат команды запуска Newman с Allure

Синтаксис команды:

bash
newman run <путь_к_коллекции> -r allure --reporter-allure-export <папка_для_результатов>

Глобальная установка Newman:

bash
newman run tests/collection.json -r allure --reporter-allure-export allure-results

Локальная установка Newman:

bash
npx newman run tests/collection.json -r allure --reporter-allure-export allure-results

Параметры команды

  • -r allure или --reporter allure: Указывает использование репортера Allure
  • --reporter-allure-export allure-results: Указывает папку для сохранения результатов тестов
  • Дополнительные параметры:
bash
--reporter-allure-export results/allure-results
--reporter-allure-overwrite=true
--reporter-allure-directory=reports

Пример запуска с дополнительными параметрами

bash
newman run tests/api_tests.postman_collection \
 -e environment/dev.postman_environment \
 -r allure,cli \
 --reporter-allure-export allure-results \
 --reporter-cli-verbose \
 --reporter-cli-unicode \
 --delay-request 500

Обработка ошибок при запуске

Если возникает ошибка “could not find allure reporter”, проверьте:

  1. Соответствие области видимости:
bash
# Проверьте глобальные репортеры
npm list -g --depth=0 | grep newman-reporter-allure

# Проверьте локальные репортеры
npm list --depth=0 | grep newman-reporter-allure
  1. Версии Node.js:
    Newman и Allure требуют Node.js версии 18+:
bash
node -v # Должна быть v18.x или выше
  1. Проверьте путь к репортеру:
bash
npm list newman-reporter-allure

Работа с nvm и путями

Если вы используете nvm, убедитесь, что правильная версия Node.js активна:

bash
nvm ls # Показывает установленные версии
nvm current # Показывает текущую активную версию

Если нужно переключиться на другую версию:

bash
nvm use 18

Генерация отчета Allure

После успешного запуска тестов с Newman и репортером Allure, результаты сохраняются в указанную папку (обычно allure-results). Следующий шаг — генерация и просмотр отчета Allure.

Установка Allure Command Line Tool

Allure Command Line Tool — это отдельный инструмент для генерации отчетов. Его нужно установить отдельно:

Глобальная установка:

bash
npm install -g allure-commandline

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

bash
allure --version

Генерация отчета

Базовая генерация:

bash
allure generate allure-results -o allure-report

Параметры команды:

  • allure-results: Папка с результатами тестов (где сохраняет Newman)
  • -o allure-report: Папка для сгенерированного отчета
  • --clean: Очистить целевую папку перед генерацией
  • --force: Принудительная генерация

Полная команда генерации отчета

bash
allure generate allure-results -o allure-report --clean

Просмотр отчета

После генерации отчета, вы можете просмотреть его несколькими способами:

1. Генерация и открытие в браузере:

bash
allure open allure-report

2. Запуск локального сервера (для динамического обновления):

bash
allure serve allure-results

3. Генерация отчета без автоматического открытия:

bash
allure generate allure-results -o allure-report

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

Для удобства можно создать скрипты в package.json:

json
{
 "scripts": {
 "test": "newman run tests/collection.json -r allure --reporter-allure-export allure-results",
 "generate-report": "allure generate allure-results -o allure-report --clean",
 "open-report": "allure open allure-report",
 "test-with-report": "npm run test && npm run generate-report && npm run open-report",
 "serve-report": "allure serve allure-results"
 }
}

Дополнительные возможности Allure

1. Добавление пользовательских вложений:
В Newman коллекции можно добавить вложения, которые будут отображаться в отчете Allure:

bash
// В тестах Newman
pm.test("Вложение в отчет", () => {
 pm.response.to.have.status(200);
 // Добавляем вложение
 pm.file.add("screenshot.png", "base64_encoded_image");
});

2. Категоризация тестов:
Используйте теги в тестах Newman для группировки в отчете Allure:

bash
// В настройках теста
pm.test("Тегированный тест", () => {
 pm.response.to.have.status(200);
}).tags(["api", "authentication", "critical"]);

3. Фильтрация отчета:
Allure позволяет фильтровать отчеты по различным критериям:

bash
allure generate allure-results -o allure-report --clean

Полный пошаговый пример настройки Newman + Allure через nvm на macOS

Давайте рассмотрим полный пошаговый пример настройки Newman + Allure через nvm на macOS, который решит проблемы с ошибкой EACCES и “could not find allure reporter”.

Шаг 1: Установка и настройка nvm

Если nvm еще не установлен:

bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

Перезапустите терминал или выполните:

bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"

Проверьте установку:

bash
nvm --version

Шаг 2: Установка Node.js через nvm

Установите LTS версию Node.js (рекомендуется версия 18 или выше):

bash
nvm install 18
nvm use 18
nvm alias default 18

Проверьте установку:

bash
node -v # Должна показать v18.x.x
npm -v # Должна показать версию npm

Шаг 3: Создание директории проекта

Создайте директорию для вашего проекта и перейдите в нее:

bash
mkdir newman-allure-project
cd newman-allure-project

Инициализируйте npm проект:

bash
npm init -y

Шаг 4: Установка Newman и репортера Allure (локальная установка)

Для изоляции зависимостей проекта, установите Newman и репортер локально:

bash
npm install --save-dev newman
npm install --save-dev newman-reporter-allure

Проверьте установку репортера:

bash
npx newman --reporters | grep allure

Шаг 5: Создание тестовой коллекции Newman

Создайте файл tests/api_tests.postman_collection.json с минимальной коллекцией:

json
{
 "info": {
 "_postman_id": "12345678-90ab-cdef-1234-567890abcdef",
 "name": "API Tests",
 "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
 },
 "item": [
 {
 "name": "Test API Status",
 "request": {
 "method": "GET",
 "header": [],
 "url": {
 "raw": "https://httpbin.org/get",
 "protocol": "https",
 "host": ["httpbin", "org"],
 "path": ["get"]
 }
 },
 "response": []
 }
 ]
}

Шаг 6: Создание директорий для результатов

Создайте директории для результатов тестов и отчетов:

bash
mkdir -p allure-results
mkdir -p allure-report

Шаг 7: Создание скриптов в package.json

Отредактируйте файл package.json и добавьте скрипты:

json
{
 "name": "newman-allure-project",
 "version": "1.0.0",
 "description": "Newman + Allure project with nvm",
 "scripts": {
 "test": "npx newman run tests/api_tests.postman_collection.json -r allure --reporter-allure-export allure-results",
 "generate-report": "allure generate allure-results -o allure-report --clean",
 "open-report": "allure open allure-report",
 "test-with-report": "npm run test && npm run generate-report && npm run open-report",
 "serve-report": "allure serve allure-results"
 },
 "devDependencies": {
 "newman": "^6.3.0",
 "newman-reporter-allure": "^0.8.0"
 }
}

Шаг 8: Установка Allure Command Line Tool

Установите Allure CLI глобально:

bash
npm install -g allure-commandline

Проверьте установку:

bash
allure --version

Шаг 9: Запуск тестов и генерация отчета

Выполните полный цикл тестирования и генерации отчета:

bash
npm run test-with-report

Или выполните команды последовательно:

bash
# Запуск тестов
npm run test

# Генерация отчета
npm run generate-report

# Открытие отчета
npm run open-report

Шаг 10: Проверка результатов

Отчет Allure должен открыться в браузере с результатами тестов. Если все настроено правильно, вы увидите:

  • Статус тестов (пройденные/проваленные)
  • Детали каждого теста
  • Время выполнения
  • Дополнительную информацию из запросов и ответов

Шаг 11: Автоматизация в CI/CD

Для использования в CI/CD средах, добавьте в ваш скрипт:

bash
#!/bin/bash

# Активируем nvm и нужную версию Node.js
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm use 18

# Установка зависимостей
npm install

# Запуск тестов
npm run test

# Генерация отчета
npm run generate-report

# Копируем отчет в артефакты CI/CD
mkdir -p ./artifacts
cp -r allure-report ./artifacts/

Общие проблемы и их решения

1. Ошибка “could not find allure reporter”
Причина: Несоответствие области видимости Newman и репортера.
Решение: Убедитесь, что репортер установлен в той же области видимости, что и Newman.

2. Ошибка EACCES
Причина: Попытка записи в системные каталоги.
Решение: Используйте nvm для установки Node.js и всех пакетов.

3. Ошибка “allure command not found”
Причина: Allure CLI не установлен.
Решение: Установите allure-commandline глобально или используйте npx.

4. Проблемы с путями в CI/CD
Причина: Относительные пути в разных средах.
Решение: Используйте абсолютные пути или настраивайте рабочую директорию.

Проверка правильной настройки

Выполните следующие команды для проверки:

bash
# Проверка версий
node -v
npm -v
nvm current

# Проверка установленных пакетов
npm list --depth=0
npm list -g --depth=0

# Проверка репортеров Newman
npx newman --reporters

# Проверка Allure
allure --version

Этот пошаговый пример гарантирует корректную настройку Newman + Allure через nvm на macOS без ошибок EACCES и проблем с поиском репортера.


Источники

  1. Node Version Manager Official Documentation — Установка и использование nvm для управления версиями Node.js: https://github.com/nvm-sh/nvm
  2. Allure Report Documentation — Официальная документация по интеграции Newman с Allure: https://allurereport.org/docs/newman/
  3. Newman Reporter Allure npm Package — Информация о пакете репортера Allure для Newman: https://www.npmjs.com/package/newman-reporter-allure
  4. Allure Command Line Installation Guide — Руководство по установке Allure CLI: https://allurereport.org/docs/install-for-macos/
  5. EACCES Error Explanation — Подробное объяснение ошибки EACCES и способы решения: https://bobbyhadz.com/blog/eacces-permission-denied-access-usr-local-lib-node_modules
  6. Newman Official Documentation — Официальная документация Newman: https://github.com/postmanlabs/newman
  7. Stack Overflow Discussion on Newman Reporter Issues — Обсуждение проблем с репортерами Newman: https://stackoverflow.com/questions/58760974/newman-could-not-find-reporter
  8. npm Best Practices — Рекомендации по установке npm пакетов: https://docs.npmjs.com/cli/v8/configuring-npm/package-json#devdependencies

Заключение

Правильная настройка Newman + Allure через nvm на macOS гарантирует стабильную работу тестирующего окружения без ошибок EACCES и “could not find allure reporter”. Ключевые моменты успешной настройки включают использование nvm для установки Node.js, соответствие области видимости Newman и репортера Allure, а также корректную генерацию отчетов с помощью Allure CLI. Следуя представленному пошаговому руководству, вы сможете создать надежное окружение для API тестирования с использованием Newman и Allure на macOS.

Авторы
Проверено модерацией
Модерация