Утверждать, что элемент не может реагировать на наведение мыши - PullRequest
0 голосов
/ 19 сентября 2018

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

Однако при использовании .trigger('mouseover') на скрытом объектеошибка возникает из-за того, что я не могу mouseover этот объект, и тест останавливается.

Есть ли способ попытаться mouseover и подтвердить, что произошла ошибка?

1 Ответ

0 голосов
/ 20 сентября 2018

Наилучшим вариантом на данный момент, вероятно, является использование этой команды .shouldNotBeClickable () , поскольку, если элемент нельзя щелкнуть, он также не может быть перемещен.Используйте эту команду с осторожностью, так как пропускает все остальные команды в вашем блоке it() при использовании из-за ошибки в Cypress.


На данный момент (Cypress 3.1.0) это невозможно.Это должно быть в соответствии с этим ответом , но cy.once() имеет некоторые ошибки, приводящие к нарушению кода, с которыми я столкнулся, пытаясь адаптировать команду в этом ответе.

СледующееПользовательская команда не работает с Cypress 3.1.0.Он должен работать, но вызывает зависание Cypress.

index.js:

Cypress.Commands.add("shouldNotBeHoverable", {
    prevSubject: true
}, function(subject) {
    let errorMessage = "shouldNotBeHoverable: element hover succeeded, but it souldn't have";

    let done = false;
    cy.wrap(subject[0]).trigger('mouseover', { force: true });
    cy.once('fail', (err) => {
        if (err == errorMessage)
            throw errorMessage;

        expect(err.message).to.include('cy.trigger() failed because this element');
        expect(err.message).to.include('is being covered by another element');
        done = true;
    });

    cy.wrap(subject[0]).trigger('mouseover', {timeout: 1000});

    cy.get('html').then(() => {
        if (!done)
            throw errorMessage;
    });
});

Тест Cypress:

cy.get("#selector").shouldNotBeHoverable();

Связанные проблемы Github связаны ниже.Об этой конкретной проблеме не сообщается, но обе проблемы достаточно похожи, поэтому я подозреваю, что основная причина одна и та же.

Смешивание cy.on () / cy.once () с одним аргументомФункция it () приводит к зависанию теста

Команды, помещенные в очередь, автоматически пропускаются при использовании cy.once () в пользовательской команде

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