Переменные окружения играют ключевую роль при автоматизации тестирования в Playwright. Они позволяют хранить конфиденциальные данные, такие как токены авторизации, URL-адреса, параметры конфигурации и другие переменные, которые могут отличаться в зависимости от среды (например, локальная разработка, тестирование, продакшн). Использование переменных окружения помогает централизовать конфигурацию и сделать тесты более гибкими.
Переменные окружения позволяют избежать жесткой привязки к конкретным значениям в коде. Вместо того чтобы хардкодить данные, такие как URL-адреса API или логины, можно хранить их в переменных окружения. Это повышает безопасность, улучшает переносимость тестов и облегчает их поддержку.
Пример:
const baseUrl = process.env.BASE_URL;
В этом примере BASE_URL — это переменная окружения,
значение которой будет подставлено в момент выполнения теста. Это
позволяет использовать один и тот же тест в разных средах без
необходимости изменения исходного кода.
.env
файлаДля удобства и лучшей организации данных чаще всего используется файл
.env, который хранит переменные окружения. Этот файл не
должен попадать в систему контроля версий, чтобы избежать утечек
конфиденциальных данных. Для этого добавьте .env в
.gitignore.
Пример файла .env:
BASE_URL=https://example.com
API_KEY=your-api-key-here
Затем в JavaScript файле необходимо загрузить эти переменные. Для
этого можно использовать библиотеку dotenv, которая
автоматически подгружает переменные окружения из .env в
процесс.
Установка:
npm install dotenv
Загрузка переменных в коде:
require('dotenv').config();
console.log(process.env.BASE_URL); // https://example.com
Вместо использования .env файла переменные окружения
можно задать непосредственно при запуске тестов. Это может быть полезно,
например, при запуске тестов в CI/CD пайплайне, где переменные окружения
обычно устанавливаются через интерфейс сборщика или конфигурационный
файл.
Пример запуска тестов с переменными окружения:
BASE_URL=https://test.example.com API_KEY=your-api-key node test.js
В коде можно получить доступ к этим переменным через
process.env:
console.log(process.env.BASE_URL); // https://test.example.com
В контексте Playwright переменные окружения часто используются для хранения данных конфигурации и аутентификации.
В Playwright можно настроить параметры браузера, такие как baseURL или параметры авторизации, через переменные окружения. Это позволяет легко переключать конфигурацию между различными средами.
Пример настройки Playwright с использованием переменных окружения:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext({
baseURL: process.env.BASE_URL, // Переменная окружения для URL
});
const page = await context.newPage();
await page.goto('/'); // Страница откроется по baseURL
await browser.close();
})();
Часто для автоматических тестов необходимо использовать данные для авторизации, такие как логины и пароли. Эти данные можно хранить в переменных окружения.
Пример авторизации в тесте:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(`${process.env.BASE_URL}/login`);
await page.fill('#username', process.env.USERNAME); // Логин из переменной окружения
await page.fill('#password', process.env.PASSWORD); // Пароль из переменной окружения
await page.click('#login-button');
// Проверка успешного входа
await page.waitForSelector('#dashboard');
await browser.close();
})();
Переменные окружения можно использовать не только для конфигурации браузера, но и для разных аспектов тестирования, например, валидации данных, параметров запросов и т.д.
Пример использования переменных окружения для тестов API:
const { request } = require('playwright');
(async () => {
const apiResponse = await request.get(`${process.env.BASE_URL}/api/data`, {
headers: {
Authorization: `Bearer ${process.env.API_KEY}`, // Токен из переменной окружения
},
});
const responseBody = await apiResponse.json();
console.log(responseBody);
})();
Одним из важнейших аспектов работы с переменными окружения является
защита конфиденциальных данных, таких как пароли, токены или ключи API.
Такие данные никогда не должны быть зафиксированы в исходном коде.
Использование .env файлов и переменных окружения позволяет
избежать этого риска.
Важно, чтобы файл .env не попадал в систему контроля
версий. Для этого добавьте его в .gitignore:
# .gitignore
.env
В случае использования CI/CD систем переменные окружения обычно задаются в настройках пайплайна, что также минимизирует риск утечек данных.
При интеграции тестов с CI/CD системами (например, Jenkins, GitHub Actions или GitLab CI) можно настроить переменные окружения в конфигурационных файлах этих систем. Это позволяет использовать разные значения переменных для различных этапов жизненного цикла разработки: тестирование, деплой, продакшн и т.д.
Пример настройки переменных окружения в GitHub Actions:
name: Playwright Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
env:
BASE_URL: https://staging.example.com
API_KEY: ${{ secrets.API_KEY }}
steps:
- uses: actions/checkout@v2
- name: Install Dependencies
run: npm install
- name: Run Playwright Tests
run: npx playwright test
В данном примере переменные окружения устанавливаются непосредственно
в конфигурации пайплайна. API_KEY загружается из хранилища
секретов GitHub, что обеспечивает безопасность данных.
Работа с переменными окружения в Playwright является неотъемлемой частью гибкости и безопасности автоматизации тестирования. С их помощью можно централизованно хранить конфиденциальные данные, настроить параметры тестирования и адаптировать код под разные среды. Правильное использование переменных окружения позволяет избежать ошибок, повысить удобство работы и улучшить безопасность тестов.