Измените URL-адрес страницы в зависимости от среды, в которой мне нужно запустить пакет

#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. Это работает во время моей предварительной настройки. Я собираюсь все убрать и провести пиар. Спасибо за вашу помощь!