Основная проблема заключается в том, что subject
, переданный команде, уже упакован, поэтому просто извлеките из нее find()
.Также вам необходимо вернуть результат, чтобы использовать его в тесте.
Пользовательская команда
Cypress.Commands.add("findById", { prevSubject: true }, (subject, id) => {
return subject.find(`[data-cy=${id}]`)
})
Следующая проблема - вы не можете смешивать «обычные» jsкод с командами Cypress, поэтому возвращаемое значение должно быть доступно из .then()
.
Spec
describe('...', () => {
it('...', () => {
cy.visit('app/find-by-id.html')
cy.root().findById('2').then(el => {
console.log('found', el, el.length)
expect(el.length).to.eq(2)
})
})
})
Html, используемого для проверки теста (app / find-by-id.html)
<div>
<div data-cy="1"></div>
<div data-cy="2"></div>
<div data-cy="2"></div>
<div data-cy="3"></div>
</div>