Для работы с Puppeteer в процессе тестирования важно настроить переменные окружения, чтобы обеспечить гибкость и удобство при запуске скриптов, а также контролировать поведение приложений и тестов в различных средах. Правильная настройка переменных окружения помогает избежать хардкода путей, ключей и других данных, которые могут изменяться в зависимости от среды или конфигурации.
Переменные окружения позволяют хранить конфиденциальные данные, такие как API-ключи, учетные данные и пути к файлам, которые могут изменяться в зависимости от того, в какой среде работает приложение. В тестировании с Puppeteer это особенно важно, потому что:
Есть несколько способов настройки переменных окружения для использования в проекте с Puppeteer. Рассмотрим основные из них.
.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 всегда представляют
собой строки. Поэтому при необходимости нужно преобразовывать их в
другие типы (например, в булевы значения или числа).
- Использование переменных окружения в командной строке
Другим вариантом является настройка переменных окружения через командную
строку перед запуском тестов. Этот метод удобен, когда нужно быстро
изменить конфигурацию без редактирования файлов.
Пример:
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 систем, где настройки могут
передаваться в качестве параметров во время выполнения.
- Использование системных переменных окружения
В некоторых случаях переменные окружения могут быть настроены напрямую в
операционной системе. Например, в 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.
- Применение переменных окружения в 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 использовать для перехода.
Преимущества использования переменных окружения
-
Управление конфигурацией. Переменные окружения
позволяют централизованно управлять настройками для различных сред без
изменения исходного кода.
-
Безопасность. Вместо того чтобы хранить чувствительные
данные в коде, их можно поместить в переменные окружения, тем самым
улучшив безопасность.
-
Гибкость. Переменные позволяют легко переключаться
между различными конфигурациями, например, для тестирования на локальной
машине и в облаке.
-
Простота в CI/CD. Переменные окружения позволяют
передавать параметры при запуске тестов в системах непрерывной
интеграции и доставки, что делает процесс автоматизации тестирования
проще.
Рекомендации
-
Не добавляйте .env файл в репозиторий. Для
этого в .gitignore нужно добавить строку .env,
чтобы конфиденциальные данные не попадали в публичные репозитории.
-
Используйте разные переменные для различных сред.
Например, для тестирования можно использовать другую базу данных или
API, чем в продакшн-окружении.
-
Проверяйте переменные окружения. Прежде чем запускать
тесты, убедитесь, что все необходимые переменные окружения заданы. Для
этого можно использовать проверки в коде:
if (!process.env.BASE_URL) {
console.error('Ошибка: переменная окружения BASE_URL не задана!');
process.exit(1);
}
-
Используйте типизацию для переменных окружения.
Например, при использовании TypeScript можно определить типы для
значений переменных окружения с помощью библиотеки
dotenv-safe или аналогичных решений.
Настройка переменных окружения — это важный шаг в процессе тестирования
с Puppeteer. Он обеспечивает гибкость, безопасность и упрощает работу с
различными конфигурациями.