#javascript #testing #environment-variables #command-line-interface #testcafe
Вопрос:
Мы создавали наш пакет автоматизации с использованием нашей промежуточной среды, но скоро выйдем в эфир и хотим быть готовыми сообщить проекту, где следует работать (постановка, производство).
Единственное различие между сайтами в средах-это URL-адрес. Мой вопрос заключается в том, от начала до конца, как я могу задать URL-адрес .page с помощью опции CLI?
Прямо сейчас я создал файл конфигурации среды, в котором содержатся наши промежуточные и рабочие URL-адреса, а затем я вызываю данные в свои тестовые файлы. На данный момент это нормально, но мне нужно будет создать скрипт с возможностью настройки среды во время выполнения без необходимости ручного поиска и замены, прежде чем запускать его.
Я поискал в Интернете и нашел то, что, по моему мнению, является фрагментами кода и общими инструкциями, но в глубине души я не разработчик и хожу с косыми глазами. Если бы я мог получить ELI5 за это, это было бы потрясающе.
Пример того, что я сейчас делаю:
const env = require('../environment_variables.json') fixture `blog` .page `${env.production}`
А затем я переключаю производство на постановку или наоборот вручную, прежде чем запускать набор.
Поскольку проект будет запускаться с CICD, я хотел бы иметь возможность сделать что-то подобное в моем CLI и скрипте:
testcafe env=production
Затем значение env будет установлено в том месте, где находится вызов .page для каждого тестового файла.
Спасибо!
Ответ №1:
Есть разные способы сделать это. Я успешно использовал переменные среды в этой ситуации, поэтому я поделюсь этим решением, так как оно решит вашу проблему.
Я создаю config.json
в корне проекта:
{ "baseUrl": { "dev": "https://dev.com/", "staging": "https://staging.com/", "prod": "https://prod.com/" } }
Затем я создаю две вспомогательные функции где-то вроде Helpers/env.js
:
import config from '../config'; function getEnv () { return process.env.TESTCAFE_ENV; } function getBaseUrl () { return config.baseUrl[getEnv()]; } export { getEnv, getBaseUrl };
Затем в моих тестовых файлах в Tests/
:
import { getBaseUrl } from '../Helpers/env'; const baseUrl = getBaseUrl(); fixture `Test Suite` .page(baseUrl);
И это все. Затем, когда мне нужно запустить тесты на разработчике, я выполняю:
$ TESTCAFE_ENV=dev testcafe
для постановки:
$ TESTCAFE_ENV=staging testcafe
и для производства:
$ TESTCAFE_ENV=prod testcafe
Комментарии:
1. Это работает во время моей предварительной настройки. Я собираюсь все убрать и провести пиар. Спасибо за вашу помощь!