Size: a a a

2020 March 25

DK

Dmitriy Kovalenko in JS for testing
у тебя в вызове стаба будет текст алерта
источник

O

Oleh in JS for testing
Попробовал залогировать, не получилось
источник

OS

Oleksandr Shevtsov in JS for testing
По ходу тест не дождался алерта, хуки моки прошли, ассерт в очереди упал только после теста
источник

O

Oleh in JS for testing
Помогите разрулить эту асинхронщину )
источник

OS

Oleksandr Shevtsov in JS for testing
Ааа, пишешь су.stub в переменную
источник

OS

Oleksandr Shevtsov in JS for testing
Не уверен что оно так работает
источник

OK

Oleksandr Khotemskyi in JS for testing
Oleh
Помогите разрулить эту асинхронщину )
Я так понимаю тебе нужен не on втупую, а с ожиданием, чтобы тест нормально дождался ивента
источник

OS

Oleksandr Shevtsov in JS for testing
У тебя в результате кусок чейнера идет мимо теста
источник

O

Oleh in JS for testing
assertWindowAlert() {
   cy.on('window:alert', (str) => {
       console.log("DEBUG_TEST", str[0]);
       expect(str[0]).to.equal("Not valid")
   })
}
источник

O

Oleh in JS for testing
Oleksandr Khotemskyi
Я так понимаю тебе нужен не on втупую, а с ожиданием, чтобы тест нормально дождался ивента
А как правильно записать? В протракторе я async/await юзал и все
источник

OS

Oleksandr Shevtsov in JS for testing
Сейчас чекну
источник

OK

Oleksandr Khotemskyi in JS for testing
Oleh
А как правильно записать? В протракторе я async/await юзал и все
Без понятия
источник

OS

Oleksandr Shevtsov in JS for testing
support/index.js
Cypress.on('window:before:load', win => {
cy.stub(win, 'alert').as('windowAlert');
})

test.spec.js
cy.get('@windowAlert').should('be.calledWithExactly', 'SOMESTRING');
источник

OS

Oleksandr Shevtsov in JS for testing
Если стаб алертов будет не часто использоваться, в документации есть даже пример с локальным использованием в тесте:
const stub = cy.stub();
cy.on('window:alert', stub);
... some other commands ...
cy.click('CLICK ME!');
cy.wrap(stub).should('be.calledWithExactly', 'str2');
источник

O

Oleh in JS for testing
Oleksandr Shevtsov
support/index.js
Cypress.on('window:before:load', win => {
cy.stub(win, 'alert').as('windowAlert');
})

test.spec.js
cy.get('@windowAlert').should('be.calledWithExactly', 'SOMESTRING');
То, что support/index.js оно перед каждым тестом само инициализируется движком Сайпреса?
источник

OS

Oleksandr Shevtsov in JS for testing
Да, index.js инициализируется перед тест раном
Еще можно реюзать кастомной коммандой:
Cypress.Commands.add('stubAlert', () => {
   const stub = cy.stub();
   cy.on('window:alert', stub);
   cy.wrap(stub).as('windowAlert');
});
test.spec.js
cy.stubAlert();
cy.click('CLICK ME!');
cy.get('@windowAlert').should('be.calledWithExactly', 'str2');
источник

OS

Oleksandr Shevtsov in JS for testing
или возвращать только cy.wrap(stub) и называть алиасом уже в тесте cy.stubAlert().as('alertForClickMe')
источник

OS

Oleksandr Shevtsov in JS for testing
Кароче, в сайпрессе вариантов масса, зависит от подходов, которые вы используете
источник

O

Oleh in JS for testing
Oleksandr , спасибо большое. Буду пробовать
источник

D

Denis in JS for testing
Котаны, короткий вопрос про Cypress: иконка может быть или слева от элемента, или справа (зависит от пропса isLeft). Как это лучше проверить?
источник