Настройка переменных окружения

Для работы с Puppeteer в процессе тестирования важно настроить переменные окружения, чтобы обеспечить гибкость и удобство при запуске скриптов, а также контролировать поведение приложений и тестов в различных средах. Правильная настройка переменных окружения помогает избежать хардкода путей, ключей и других данных, которые могут изменяться в зависимости от среды или конфигурации.

Зачем использовать переменные окружения?

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

  • Скрипты тестирования могут работать в разных средах (например, на локальном компьютере, в тестовом окружении или в продакшене).
  • Разные среда могут требовать разных значений, например, разные URL-адреса для сайтов, различные ключи API и другие параметры.
  • Хранение конфиденциальных данных в коде не безопасно и не гибко.

Как настроить переменные окружения

Есть несколько способов настройки переменных окружения для использования в проекте с Puppeteer. Рассмотрим основные из них.

  1. Использование .env файла

Самым популярным методом является использование .env файла. Это текстовый файл, в котором можно хранить ключи и значения в формате KEY=VALUE.

Пример .env файла:

BASE_URL=https://example.com
BROWSER_HEADLESS=true
API_KEY=123456789abcdef

Для работы с этим файлом рекомендуется использовать библиотеку dotenv. Она загружает переменные окружения из .env файла в process.env, который является глобальным объектом Node.js для хранения переменных окружения.

Чтобы использовать dotenv, необходимо установить зависимость:

npm install dotenv

Затем, в начале скрипта, нужно подключить dotenv и загрузить переменные:

require(&

Теперь можно обращаться к переменным окружения с помощью process.env:

const baseUrl = process.env.BASE_URL;
const headless = process.env.BROWSER_HEADLESS === 'true';
const apiKey = process.env.API_KEY;

Важно помнить, что значения из .env всегда представляют собой строки. Поэтому при необходимости нужно преобразовывать их в другие типы (например, в булевы значения или числа).

  1. Использование переменных окружения в командной строке

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

Пример:

BASE_URL=https://example.com BROWSER_HEADLESS=true node test.js

В этом случае, при запуске скрипта, переменные окружения BASE_URL и BROWSER_HEADLESS будут доступны в process.env в вашем скрипте:

const baseUrl = process.env.BASE_URL;
const headless = process.env.BROWSER_HEADLESS === 'true';

Этот подход особенно полезен для CI/CD систем, где настройки могут передаваться в качестве параметров во время выполнения.

  1. Использование системных переменных окружения

В некоторых случаях переменные окружения могут быть настроены напрямую в операционной системе. Например, в Linux и macOS можно настроить их в файле .bashrc или .zshrc, а в Windows — в настройках системы.

Для Linux/macOS:

export BASE_URL=https://example.com
export BROWSER_HEADLESS=true

После добавления этих строк в конфигурацию оболочки, нужно перезагрузить терминал или выполнить команду source ~/.bashrc (или source ~/.zshrc), чтобы переменные стали доступными.

Для Windows настройка переменных окружения выполняется через панель управления. В разделе “Система” и “Дополнительные параметры” можно добавить или изменить переменные окружения для пользователя или системы.

После настройки переменных через систему их можно использовать в Node.js проекте через process.env.

  1. Применение переменных окружения в Puppeteer

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

Пример настройки Puppeteer для использования различных параметров в зависимости от окружения:

const puppeteer = require('puppeteer');




async function startBrowser() { const headless = process.env.BROWSER_HEADLESS === 'true';

const browser = await puppeteer.launch({ headless: headless, // Использование переменной окружения args: [ --remote-debugging-port=9222, ], });

const page = await browser.newPage(); await page.goto(process.env.BASE_URL);

// Выполнение тестов…

await browser.close(); }

startBrowser();

В этом примере переменные окружения BROWSER_HEADLESS и BASE_URL определяют, будет ли браузер запускаться в безголовом режиме и какой URL использовать для перехода.

Преимущества использования переменных окружения

  1. Управление конфигурацией. Переменные окружения позволяют централизованно управлять настройками для различных сред без изменения исходного кода.
  2. Безопасность. Вместо того чтобы хранить чувствительные данные в коде, их можно поместить в переменные окружения, тем самым улучшив безопасность.
  3. Гибкость. Переменные позволяют легко переключаться между различными конфигурациями, например, для тестирования на локальной машине и в облаке.
  4. Простота в CI/CD. Переменные окружения позволяют передавать параметры при запуске тестов в системах непрерывной интеграции и доставки, что делает процесс автоматизации тестирования проще.

Рекомендации

  • Не добавляйте .env файл в репозиторий. Для этого в .gitignore нужно добавить строку .env, чтобы конфиденциальные данные не попадали в публичные репозитории.

  • Используйте разные переменные для различных сред. Например, для тестирования можно использовать другую базу данных или API, чем в продакшн-окружении.

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

    if (!process.env.BASE_URL) {
      console.error('Ошибка: переменная окружения BASE_URL не задана!');
      process.exit(1);
    }
  • Используйте типизацию для переменных окружения. Например, при использовании TypeScript можно определить типы для значений переменных окружения с помощью библиотеки dotenv-safe или аналогичных решений.

Настройка переменных окружения — это важный шаг в процессе тестирования с Puppeteer. Он обеспечивает гибкость, безопасность и упрощает работу с различными конфигурациями.