Проверьте, была ли ошибка записана в консоль - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь найти способ проверить, была ли ошибка записана в консоль при запуске модульного теста на кипарис.

Я знаю, как что-то записать в консоль

cy.log('log this to the console');

но не как проверить, была ли в него записана ошибка.

есть предложения, как читать ошибки из журнала консоли (браузера)?

примечание: вероятно, не "умный""способ проверить, но иногда мои библиотеки js, которые я использую, будут" жаловаться "и записывать ошибки в журнал браузера.это упрощает тестирование.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Редактировать: следующие не напрямую не регистрируют на терминале в режиме без головы, но, тем не менее, не проходят проверку на AUT console.error и отображают сообщение об ошибке косвеннодаже в терминале без головы, что может быть тем, что вы хотите.

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

Во-первых, обзор:

enter image description here

  1. Для входа в систему журнал команд , вы используете:

    // from inside your test
    cy.log('foo');
    
  2. Для входа в консоль devTools :

    // from inside your test
    console.log('bar');
    
  3. Чтобы войти в терминал , вам нужно войти из процесса узла Cypress:

    // from within e.g. your plugin/index.js file
    console.log('baz');
    

Как записывать ошибки AUT в терминал, журнал команди провалите тест

(обратите внимание, здесь AUT означает тестируемое приложение , означающее ваше приложение).

Я также использую * 1Пакет 049 * для создания ошибки красного цвета в терминале, что является необязательным.

// plugins/index.js
const ansi = require(`ansicolor`);
module.exports = ( on ) => {
    on(`task`, {
        error ( message ) {
            // write the error in red color
            console.error( ansi.red(message) );
            // play `beep` sound for extra purchase
            process.stdout.write(`\u0007`);
            return null;
        }
    });
};

Примечание: использование внутренней команды cy.now() для обхода тенденции Cypress 'выбрасывать Cypress detected that you returned a promise, когдаэто (ИМО) не должно.

(адаптировано с https://github.com/cypress-io/cypress/issues/300#issuecomment-438176246)

// support/index.js or your test file
Cypress.on(`window:before:load`, win => {

    cy.stub( win.console, `error`, msg => {
        // log to Terminal
        cy.now(`task`, `error`, msg );
        // log to Command Log & fail the test
        throw new Error( msg );
    });
});
0 голосов
/ 24 декабря 2018

В настоящее время не существует простого способа сделать то, что вы просите, но было несколько хороших дискуссий о том, как лучше всего получить эту информацию.Я скопировал одно решение здесь, но если вы перейдете по ссылке на github, вы увидите другие предлагаемые решения.

Этот фрагмент был взят из проблемы github, найденной здесь: https://github.com/cypress-io/cypress/issues/300

Просто к сведению, одно простое решение - просто следить за функциями консоли.cy.window().then((win) => { cy.spy(win.console, "log") })

Это будет печатать журнал команд каждый раз, когда вызывается эта функция, и вы также можете затем утверждать, что было зарегистрировано.

Другой вариант в зависимости от того, почему вы хотитеУтверждать, что что-то пошло не так, это распечатывать ошибку по тестам в режиме без головы.Вице-президент по проектированию создал пакет NPM, который сделает это за вас.

Cypress-fail-log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...