Cypress: Как получить возвращаемое значение из пользовательских команд? (Cypress-обещание) - PullRequest
0 голосов
/ 25 апреля 2019

Я ищу способ вернуть возвращаемое значение, возвращаемое пользовательскими командами Cypress.

В настоящее время я использую Cypress и Cypress-обещание lib (https://www.npmjs.com/package/cypress-promise)

В настоящее время результат таков: log1 = CAR 1 log2 = нуль

Где моя ошибка?

Тестовый файл:

it('Test 1', async function() {
     const carName = await promisify(cy.set_typeCarName());
     cy.log("log2 = " + carName );
});

Модуль:

set_typeCarName() {
     let carName = "CAR 1";
     cy.get('#newSiteCityInput').type(carName);
     cy.log("log1 = " + carName);
     return carName;
};

Cypress.Commands.add('set_typeCarName',() => {
    webnewsite.set_typeCarName();
});

Ответы [ 3 ]

1 голос
/ 28 мая 2019

Я думаю, это то, что вы хотите:

Тестовый файл

            cy.set_typeCarName()
                .then((returned_value) => {
                    cy.log("log2 = " + returned_value)
                })
            });

Модуль

    Cypress.Commands.add('set_typeCarName',() => {
            let carName = "CAR 1";
            cy.get('#newSiteCityInput').type(carName);
            cy.log("log1 = " + carName);
            return carName;
    });
0 голосов
/ 23 июля 2019

Для этого я использую wrap() для возврата Chainable, содержащего значение, которое я хочу вернуть.

Модуль

function foo() {
  return cy.wrap('foo');
}

Cypress.Commands.add('foo', foo);

Тестовый файл

cy.foo().then(value => console.log(value)); // foo

Поскольку wrap() возвращает Cypress.Chainable, мы можем вызвать .then() в наших командах.Все, что передается в wrap(), передается следующей команде.

См. Также: Документация Cypress wrap ()

0 голосов
/ 30 апреля 2019

В команде отсутствует оператор return?

Cypress.Commands.add('set_typeCarName',() => {
  return webnewsite.set_typeCarName(); // I added the initial `return`
});
...