Ответ
В файлах конфигурации тестовой среды (типа config.test.js, test.properties, pytest.ini) я храню все настройки, которые отличаются от продакшена и нужны для изолированного и повторяемого запуска автотестов.
Типичное содержимое такого файла:
- URL и эндпоинты: Адреса тестовых стендов, mock-серверов или локальных инстансов.
- Учётные данные: Логины, пароли, API-ключи для тестовых пользователей и сервисов. Важно: Никогда не храню реальные пароли, только тестовые, а сам файл добавляю в
.gitignore. В CI/CD используются переменные окружения. - Параметры подключения к тестовым базам данных:
- Настройки фреймворка и таймауты: Время ожидания элементов, путь к драйверам браузеров, уровень логирования.
- Флаги и переключатели: Например, флаг для запуска в headless-режиме или выбора браузера.
Пример config.test.json для проекта на Node.js + Playwright:
{
"baseUrl": "https://staging.example.com",
"apiUrl": "https://api.staging.example.com/v1",
"users": {
"admin": {
"login": "qa_admin@test.com",
"password": "${TEST_ADMIN_PASSWORD}" // Подставляется из env
}
},
"timeouts": {
"navigation": 30000,
"action": 10000
},
"playwright": {
"headless": true,
"viewport": { "width": 1920, "height": 1080 }
},
"reporting": {
"outputFolder": "./test-results"
}
}
В коде тестов я загружаю эту конфигурацию один раз в хуках beforeAll или через фикстуры, чтобы не хардкодить значения.
Ответ 18+ 🔞
А, ну это же классика, ебать мои старые костыли! Смотри, тут всё просто, как три копейки. Есть у тебя эти файлики — config.test.js, test.properties, pytest.ini — ну, ёпта, суть одна. Это типа такая хитрая жопа, куда ты сваливаешь все настройки, которые на боевом сервере не взлетят, а для тестов — самое то. Чтобы запуски были изолированные и повторяемые, а не как попало.
Что туда обычно пихают, спросишь? Да вот, смотри:
- Адреса всякие. Не продакшн же тебе гонять, правда? Тут адреса тестовых стендов, заглушек (mock-серверов) или локального инстанса, который на твоей же машине задыхается.
- Логины-пароли. Для тестовых юзеров и сервисов. Но слушай сюда, это важно: НИКОГДА не пихай туда реальные пароли от прода! Только тестовые, одноразовые. А сам файл — сразу в
.gitignore, чтоб его. В CI/CD это всё подтягивается из переменных окружения, там уже свои заморочки. - Данные для подключения к тестовым базам. Ну, чтобы не наебать продовую базу тестовыми данными, а то будет тебе хиросима и нигасраки.
- Настройки фреймворка и таймауты. Сколько ждать элемент, где драйвер браузера валяется, как подробно логировать — всё тут.
- Разные флаги и переключатели. Типа «запускать браузер безголовым (headless)» или «выбрать хром». Удобно, ёклмн.
Вот тебе живой пример config.test.json для связки Node.js + Playwright:
{
"baseUrl": "https://staging.example.com",
"apiUrl": "https://api.staging.example.com/v1",
"users": {
"admin": {
"login": "qa_admin@test.com",
"password": "${TEST_ADMIN_PASSWORD}" // Это потом из переменных окружения подтянется
}
},
"timeouts": {
"navigation": 30000,
"action": 10000
},
"playwright": {
"headless": true,
"viewport": { "width": 1920, "height": 1080 }
},
"reporting": {
"outputFolder": "./test-results"
}
}
А в коде тестов я эту конфу загружаю один раз — в хуках beforeAll или через фикстуры. Главное — не хардкодить эти значения по всему коду, а то потом, когда что-то поменяется, будешь бегать и переписывать овердохуища строк. Зачем себе жизнь усложнять, чувак?