Как перетащить в Cypress.io - PullRequest
0 голосов
/ 23 мая 2019

Я тестирую Trello и пытаюсь перетащить последний список, а затем поместить его в предпоследний столбец, но тест не работает без ".wait".Было бы очень полезно, если бы кто-то мог посоветовать о потенциальной проблеме здесь, потому что я предпочитаю избегать использования ".wait".Нет ошибок выбрасывания, но, тем не менее, перетаскивание не происходит без «.wait».

describe("Moving list", () => {
  it("Waiting For Accept list should be moved from last column to the penultimate column", () => {
    cy.get("#board")
      .children(".js-list")
      .should("have.length", 4)
      .and("be.visible");

    cy.get(":nth-child(4) > .list")
      .should("be.visible")
      .and("contain", "Waiting For Accept")

    cy.get(":nth-child(4) > .list").trigger("mousedown", {
      which: 1
    });

    cy.get("#board > div:nth-child(2) > .list")
      .trigger("mousemove");

    cy.get("#board > div:nth-child(3) > .list")
      .trigger("mousemove")
      .trigger("mouseup");

    cy.get(":nth-child(3) > .list")
      .should("contain", "Waiting For Accept");
  });
});

См. Изображение

См. Изображение

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Наконец, я решил эту проблему с помощью "cy.request"

https://docs.cypress.io/api/commands/request.html#Syntax

describe("Moving list", () => {
        it("Waiting For Accept list should be moved from last column to the penultimate column", () => {
            cy.request("https://trello.com/b/9lfzKIRu/trello-tests").then(response => {
                expect(response.status).to.eq(200);
            });
            cy.get("#board > div:nth-child(4) > .list").trigger("mousedown", {
                which: 1
            });
            cy.get("#board > div:nth-child(2) > .list").trigger("mousemove");
            cy.get("#board > div:nth-child(3) > .list")
                .trigger("mousemove")
                .trigger("mouseup");
            cy.get(":nth-child(3) > .list").should("contain", "Waiting For Accept");
        });
    });
0 голосов
/ 24 мая 2019

Это не работает из коробки, зарегистрированная проблема для этого - https://github.com/cypress-io/cypress/issues/845. Но в этом же билете также есть обходной путь, использующий встроенный API-интерфейс перетаскивания с перетаскиваемым атрибутом для перетаскиваемых элементов:

Создание пользовательской команды

Cypress.Commands.add("dragTo", { prevSubject: "element" }, (subject, targetEl) => {
    cy.wrap(subject).trigger("dragstart");
    cy.get(targetEl).trigger("drop");
  }
);

В тестовом сценарии вы можете использовать:

cy.get(".source").dragTo(".target");
...