Как я могу с кипарисом показать собственное сообщение об ошибке, когда элемент отсутствует?
В приведенном ниже фрагменте я хотел бы отобразить: «Строки не отображаются» вместо предоставленных; "ожидается, что # строки будут существовать в DOM".
cy.get('#rows').should('exist');





Обработка событий Cypress дает ловушку, которая может использоваться для настройки сообщения об ошибке.
Журнал Cypress показывает ошибки в формате ${error.name}:${error.message}. Вы можете изменить оба свойства ошибки, но : жестко запрограммирован.
Вот несколько примеров,
describe('custom error', () => {
// Ref: https://docs.cypress.io/api/events/catalog-of-events.html#Catching-Test-Failures
it('fails with custom error message', () => {
cy.on('fail', (error, runnable) => {
error.name = 'CustomError'
error.message = 'Incorrect, 1 !== 2'
throw error // throw error to have test still fail
})
cy.wrap(1).should('eq', 2)
})
/*
Ref: https://docs.cypress.io/api/cypress-api/custom-commands.html#Child-Commands
Add this to /cypress/support/commands.js
*/
Cypress.Commands.add('onFail', { prevSubject: true }, (chainedSubject, message) => {
cy.on('fail', (error, runnable) => {
error.name = 'CustomError'
error.message = 'Incorrect, 1 !== 2'
throw error // throw error to have test still fail
})
return chainedSubject
})
it('fails with custom message via command', () => {
cy.wrap(1).onFail(customError).should('eq', 2)
})
/*
Ref: https://docs.cypress.io/api/cypress-api/custom-commands.html#Overwrite-Existing-Commands
Add this to /cypress/support/commands.js
*/
Cypress.Commands.overwrite('should', (originalFn, actual, assertion, expected, options) => {
if (options && options.message) {
cy.on('fail', (error, runnable) => {
error.name = 'CustomError'
error.message = options.message
throw error // throw error to have test still fail
})
}
return originalFn(actual, assertion, expected, options)
})
it.only('fails with custom message via overwrite of should', () => {
cy.wrap(1).should('eq', 2, { message: 'Incorrect: 1 !== 2'})
})
it('fails with standard message', () => {
cy.wrap(1).should('eq', 2)
})
})
cy.get()В этом тесте используется cy.get(), и он также выдает настраиваемое сообщение
it('fails with a custom message when using cy.get()', () => {
cy.visit('https://docs.cypress.io/api/commands/get.html')
cy.get('h1').onFail('Failed to find this text').should('contain', 'NoSuchText')
})
Да, но я хочу проверить элементы в DOM
Нет проблем, работает с cy.get(). Фактически любая команда может дать сбой.
Нет. когда я использую cy.get, показывает CypressError, но когда я использую обертку, он показывает customError
Вы, должно быть, делаете что-то не так, поскольку это не тот случай, когда я тестирую cy.get(). Очевидно, вам нужно будет показать конкретный код, прежде чем я смогу вам помочь.
Это не работает, когда я использую cy.get (). только cy.wrap ()