Я хочу протестировать экземпляр, где я перетаскиваю компонент в iframe. Он должен заменить компонент-заполнитель, на который он попадает, в компонент объектов. Я протестировал его в своей кодовой базе, и это хорошо работает.
it('should allow the user to add multiple features components', () => {
cy.getIframeBody('builder-showcase').find('[data-cy="features"]').should('have.length', 2);
cy.get('[data-cy="toolbar-components-button"]').click();
cy.get('.builder-sidebar-components-features').then(el => {
const draggable = el[0];
cy.getIframeBody('builder-showcase').find('[data-cy="placeholder"]').first().then(el => {
const droppable = el[0];
const coords = droppable.getBoundingClientRect();
draggable.dispatchEvent(new MouseEvent('mousemove'));
draggable.dispatchEvent(new MouseEvent('mousedown'));
draggable.dispatchEvent(new MouseEvent('mousemove', {clientX: 10, clientY: 0}));
draggable.dispatchEvent(new MouseEvent('mousemove', {clientX: 226, clientY: 35}));
draggable.dispatchEvent(new MouseEvent('mouseup'));
cy.getIframeBody('builder-showcase').find('[data-cy="features"]').should('have.length', 3);
});
})
});
Однако, когда я запускаю тест, описанный выше, ничего не происходит. В этой строке тест не пройден:
cy.getIframeBody('builder-showcase').find('[data-cy="features"]').should('have.length', 3);
Должен ли я использовать dragstart
, dragover
и dragend
вместо этого, когда мой iframe обнаружит это (он имеет dragstart
, dragover
, dragenter
и бросьте слушателей). Как бы я реализовал его?