Как запустить несколько утверждений chai в Nightwatch.js, используя объект страницы?

В моем тесте мне нужно проверить одни и те же строки текста на нескольких страницах. Я пытаюсь использовать утверждение chai, но не могу запустить несколько утверждений .expept, используя объект страницы.

Наличие двух утверждений '.expect' не проходит тест с сообщением об ошибке Unknown property: "expect". Please consult docs at:http://nightwatchjs.org/api. когда я запускаю его только одной командой, он работает нормально.

// Test file code

module.exports = {

    'Copy Test': client => {
    client.url('https://www.testsite.com/')
    client.page.search().checkText()
    client.end();
   },
};
// Page object file code

let copyP = "Some test text"
let copyP2 = "Some text text 2"

module.exports = {
    elements: {
        p: 'CSS_selector',
        p2: 'CSS_selector',
    },

    commands: [{
        checkText: function() {
            return this 
            .expect.element('@p').text.to.equal( copyP, 'Text is ok')
            .expect.element('@p2').text.to.equal( copyP2, 'Text2 is ok')
        }
    }]
}
Как регистрировать все результаты тестов DBT в централизованной таблице snowflake
Как регистрировать все результаты тестов DBT в централизованной таблице snowflake
DBT имеет множество встроенных функций для автоматизации трудоемкой работы. Одной из таких функций является тест DBT.
0
0
914
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вы указали правильное и желаемое поведение.

Chai's assertions, Nightwatch's built-in assertions, or mostly any other assertions library, work the same way! Assertions are breaking statements (meaning your program should end execution on one's failure/exception thrown), with a clear scope & purpose: evaluating a predicate. Two assertions will always be independent of one another. Thus, there's no logical case concern for chaining two, or more assertions, now is there?

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

Значит, ты не можешь этого сделать...

browser.click('@someElem')
       .expect.element('@otherElem').to.be.visible
       .expect.element('@otherElem').text.to.equal('I<3Turtles', 'text check');

Вы не можете этого сделать...

browser.click('@someElem')
       .expect.element('@otherElem').to.be.visible
       .setValue('@otherElem', 'I like turtles');

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

commands: [{
    checkText: function() {
        // Perform wrapper for extra safety! 
        this.api.perform((done) => {
            this.expect.element('@p').text.to.equal( copyP, 'Text is ok');
            this.expect.element('@p2').text.to.equal( copyP2, 'Text2 is ok');

            done();
        });
        return this;
    }
}]

Это работает, спасибо @iamdanchiv за вашу помощь. Странно предполагать, что всем нужно будет запускать только одно утверждение за раз. На мой взгляд, было бы неплохо сделать утверждения ломкими или нет где-то в конфигурационном файле. Но должна быть веская причина, почему это работает именно так.

Lyserty 25.01.2019 17:31

Ну да, есть что-то подобное, поддерживаемое Nightwatch. Если вам не нужен классический отказоустойчивый тип утверждений, то можете посмотреть на проверить утвержденияздесь. Они терпят неудачу как коллекция в конце теста, не нарушая программу и время выполнения. Надеюсь, поможет. Ваше здоровье!

iamdanchiv 26.01.2019 06:04

Да, я на самом деле использовал эти утверждения, в частности .containsText(), но я нашел с ним ошибку. Это не приведет к сбою, если в проверяемой вами копии отсутствует первая буква.

Lyserty 26.01.2019 19:58

Другие вопросы по теме

Как вводить нажатия клавиш, такие как ENTER, TAB и т. д., В браузере Firefox с использованием транспортира?
Автоматизация файловых приложений JNLP с использованием java-драйвера marathon
Appium: как провести пальцем влево по элементу списка
Как идентифицировать элементы пользовательского интерфейса, когда несколько элементов пользовательского интерфейса имеют одинаковые элементы пользовательского интерфейса
Как получить NamePropertyId элемента UIAutomationElement при наведении курсора?
Есть ли в TestCafe функция, которая помогает генерировать отчет со снимком экрана неудачных тестов?
Соединение с терминалом UiPath - внутреннее или EHLLAPI?
Автоматизация пользовательского интерфейса, AppleScript Сочетания клавиш для элементов, не включенных в меню Предварительный просмотр?
Невозможно запустить автоматизацию appium в разных версиях устройств Android
Как определить, использует ли приложение поддержку Win32/UIA, чтобы запустить то же самое в pywinauto с правильными настройками бэкэнда?