Как настроить несколько сред в CypressJs - PullRequest
0 голосов
/ 09 апреля 2020

Я не смог выяснить, как правильно настроить мою кипарисовую Js среду для тестирования. Я бы хотел помочь.

В моем файле index.html, в области <script>, я добавляю объект CONFIG. В производстве этот объект конфигурации добавляется приложением MVC. Этот объект конфигурации может иметь много разных состояний (некоторая информация может отсутствовать или отличаться для каждого пользователя). В файле cypress.json, под "env" у меня есть тот же объект. Я использую это в файлах spec.js, вызывая Cypress.env("CONFIG");, который прекрасно работает.

Однако я хочу изменить состояние переменной app / environment для различных тестов. Возможно ли это?

Я хотел бы запустить файл spe c, используя CONFIG, содержащий все данные, и один файл spe c, используя объект CONFIG, в котором отсутствуют данные ( например, адрес == ноль), поэтому я могу правильно проверить в обоих случаях.

Возможно ли это, или я делаю что-то в корне неправильно?

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
   <script>
    CONFIG = {
    dealer: {
          id: 19285,
          address: "343 Somewhere Lane SpringField, TN 47383",
          name: "HUDSON TRACTOR & RENTAL EQUIPMENT & OTHER HEAVY THINGS
   }
   </script>
  </head>
</html>

cypress.json

{
 "env": {
   "CONFIG": {
      dealer: {
          id: 19285,
          address: "343 Somewhere Lane SpringField, TN 47383",
          name: "HUDSON TRACTOR & RENTAL EQUIPMENT & OTHER HEAVY THINGS
      }
    }
  }
}

1 Ответ

1 голос
/ 11 апреля 2020

Лучше всего запускать файлы spe c в одной среде по одному. Либо вы используете переопределение cypress.env.json или создаете 2 файла конфигурации для каждой среды (например, test и prod), которые будут переопределять переменные env, установленные в cypress.env.json и cypress.json. https://docs.cypress.io/guides/guides/environment-variables.html#Option -2-cypress-env- json

Однако, если вы хотите быстрое и грязное решение вашей проблемы выше (я не предлагаю это), вы можете установите свои spe c файлы с помощью следующих параметров:

кипарис. json

{
 "env": {
   "CONFIG": {
    "id": "19285",
    "address": "343..."
    },
   "CONFIG_PROD": {
    "id": "19285",
    "address": ""
    }
 }
}

spec_1. js

const config = Cypess.env("CONFIG")

spec_2. js

const config = Cypress.env("CONFIG_PROD")

или просто поместите их в файлы фикстур (что я считаю более подходящим для этого случая): config. json

   {
    "test": {
        "id": "19285",
        "address": "343..."
    },
    "prod": {
        "id": "19285",
        "address": ""
    }
   }

spec_1. js

import {test, prod} from '../fixtures/config.json'
const address = test.address
const address_null = prod.address //If you would like to run this on another 'it' test

spec_1. js

import {prod} from '../fixtures/config.json'
const address_null = prod.address
...