Ищите способ использовать приспособления Cypress для всех моих пользовательских команд вне блока it - PullRequest
0 голосов
/ 06 апреля 2020

Я создаю несколько пользовательских команд и пытаюсь использовать данные своих приборов для всех моих команд. Прямо сейчас я вынужден определить это внутри блока. Выглядит примерно так:

    it("Commands", () => {

    cy.fixture("fixtureFile").as("data");

    cy.get("@data").then((data) => {

        Cypress.Commands.add('login', () => {
            cy.visit("/login");
            cy.get('#login-email').type(data.userEmail);
            cy.get('#login-pass').type(data.userPass, {log: false});
            cy.get('.btn').debug().click();
         })

        Cypress.Commands.add('createTagMedia', () => {
            cy.get(".close").click();
            cy.get("#form-field-name").type(data.releaseVersion);
            cy.get(".form-group-adTag > .CodeMirror > .CodeMirror-scroll").type(data.mediaTag);
            cy.get("#media-save-btn").click();
        })
     })
  })

Этот блок считается подсчетом в качестве контрольного примера. Есть ли лучший способ передать его для более чем одной команды одновременно?

Ответы [ 3 ]

0 голосов
/ 07 апреля 2020

Существует ли причина, по которой вы не будете использовать следующее:

import {data} from '../fixtures/FixtureFile'

Учитывая, что у вас есть следующий JSON файл:

{
"data": {
 "userEmail": "blah",
 "userPass": "blah",
 "releaseVersion": "1"
 }
}

Вы можете включить это в свой тесты, команды (Cypress.custom.commands), et c.

0 голосов
/ 07 апреля 2020
before(() => {
  const data = cy.fixture("fixtureFile");

  cy.login(data);

  cy.createTagMedia(data);
})

Вы можете буквально сделать что-то вроде выше. С вашими Cypress.Commands в вашем command.ts или js, в зависимости от того, что вы используете.

И заставить команды принимать параметр. Тогда описанный выше хук будет только в ваших тестах.

0 голосов
/ 06 апреля 2020

Обходной путь, который я нашел, состоял в том, чтобы поместить все в блок before, например:

    before(() => {

      cy.fixture("fixtureFile").as("data");

      cy.get("@data").then((data) => {

        Cypress.Commands.add('login', () => {
            cy.visit("/login");
            cy.get('#login-email').type(data.userEmail);
            cy.get('#login-pass').type(data.userPass, {log: false});
            cy.get('.btn').debug().click();
         })

        Cypress.Commands.add('createTagMedia', () => {
            cy.get(".close").click();
            cy.get("#form-field-name").type(data.releaseVersion);
            cy.get(".form-group-adTag > .CodeMirror > .CodeMirror-scroll").type(data.mediaTag);
            cy.get("#media-save-btn").click();
        })
     })
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...