Как дождаться завершения прокрутки в Cypress, не работая с высотой элементов - PullRequest
1 голос
/ 06 мая 2020

как подождать acynchronus scrollIntoView без использования cy.wait(XXX) или сравнения высоты представления / элемента?

Вот как я думал:

const cyBrick = cy.get(selector);
    cyBrick.scrollIntoView().then( _ => {
      cyBrick
        .then(([$brick]) => {
          const brickBody = $brick.getBoundingClientRect();
          cyBrick.trigger('mousedown', {which: 1, pageX: brickBody.x, pageY: brickBody.y});
          ...
        });
    });

В моем случае я ' m тестирует dragAndDrop, поэтому мне нужно

  1. для прокрутки к элементу, который нужно перетащить;
  2. mouseDown на элементе
  3. прокрутка до целевого контейнера и так далее ...

Также я пробовал настраиваемую команду

//commands.js
Cypress.Commands.add('scrollIntoViewAndUseThen', {prevSubject: true}, (subject) => {
  cy.wrap(subject).scrollIntoView().as('scrolling');
  cy.wait('@scrolling');
});

//mytest.spec.js
cyBrick.scrollIntoViewAndUseThen().then( _ => ...

Но только корням разрешено использовать @;

В данный момент я использую обходной путь с ожиданием cyBrick.scrollIntoView().wait(500)

PS: я читал в документах, что scrollToView позволяет связывать следует только разрешение

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