Что обычно хранится в конфигурационном файле для тестов (например, conf.test, config.test.js)?

Ответ

В файлах конфигурации тестовой среды (типа config.test.js, test.properties, pytest.ini) я храню все настройки, которые отличаются от продакшена и нужны для изолированного и повторяемого запуска автотестов.

Типичное содержимое такого файла:

  1. URL и эндпоинты: Адреса тестовых стендов, mock-серверов или локальных инстансов.
  2. Учётные данные: Логины, пароли, API-ключи для тестовых пользователей и сервисов. Важно: Никогда не храню реальные пароли, только тестовые, а сам файл добавляю в .gitignore. В CI/CD используются переменные окружения.
  3. Параметры подключения к тестовым базам данных:
  4. Настройки фреймворка и таймауты: Время ожидания элементов, путь к драйверам браузеров, уровень логирования.
  5. Флаги и переключатели: Например, флаг для запуска в 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 — ну, ёпта, суть одна. Это типа такая хитрая жопа, куда ты сваливаешь все настройки, которые на боевом сервере не взлетят, а для тестов — самое то. Чтобы запуски были изолированные и повторяемые, а не как попало.

Что туда обычно пихают, спросишь? Да вот, смотри:

  1. Адреса всякие. Не продакшн же тебе гонять, правда? Тут адреса тестовых стендов, заглушек (mock-серверов) или локального инстанса, который на твоей же машине задыхается.
  2. Логины-пароли. Для тестовых юзеров и сервисов. Но слушай сюда, это важно: НИКОГДА не пихай туда реальные пароли от прода! Только тестовые, одноразовые. А сам файл — сразу в .gitignore, чтоб его. В CI/CD это всё подтягивается из переменных окружения, там уже свои заморочки.
  3. Данные для подключения к тестовым базам. Ну, чтобы не наебать продовую базу тестовыми данными, а то будет тебе хиросима и нигасраки.
  4. Настройки фреймворка и таймауты. Сколько ждать элемент, где драйвер браузера валяется, как подробно логировать — всё тут.
  5. Разные флаги и переключатели. Типа «запускать браузер безголовым (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 или через фикстуры. Главное — не хардкодить эти значения по всему коду, а то потом, когда что-то поменяется, будешь бегать и переписывать овердохуища строк. Зачем себе жизнь усложнять, чувак?