Тестирование сайта WordPress с Cypress

#javascript #cypress

#javascript #cypress

Вопрос:

Я пытаюсь протестировать свой собственный плагин WordPress Cypress .

Я столкнулся со следующей проблемой: если я добавляю товары в корзину с помощью встроенной кнопки «Добавить в корзину» и перехожу в корзину, она пуста.

Если я попробую тот же сценарий вручную с помощью браузера cypress Chrome рядом с тестами, произойдет то же самое.

Код:

 it("puts in the cart", () => {
    cy.getChatbotIframe()
    .find("[data-cy=coupon-code]")
    .invoke("text")
    .then((text) => {
      cy.getChatbotIframe().find("[data-cy=go-to-cart-button]").click();
      cy.get("[data-cy=coupon-code]").contains(text);
    });
});
  

Команда getChatbotIframe :

 Cypress.Commands.add("getChatbotIframe", () => {
  return cy
    .get("[data-cy=alkubot-chat-iframe]", { log: false })
    .its("0.contentDocument.body", { log: false })
    .should("not.be.empty")
    .then((body) => cy.wrap(body, { log: false }));
});
  

Скриншот сообщения об ошибке

Комментарии:

1. Привет, вы также можете опубликовать пользовательскую команду для cy.getChatbotIframe()

2. Вы получаете какие-либо ошибки? если да, пожалуйста, опубликуйте скриншот. Также было бы полезно, если бы вы также могли опубликовать скриншот DOM.

3. Я опубликовал скриншот. Я думаю, что DOM не имеет значения, потому что, если я использую встроенную в WordPress кнопку «Добавить в корзину» и вручную перехожу в корзину внутри открытого cypress браузера Chrome, она пуста

4. Предполагая, что вы успешно достигли till cy.getChatbotIframe().find("[data-cy=go-to-cart-button]").click(); , поэтому вместо cy.get("[data-cy=coupon-code]").contains(text) этого вы можете использовать что-то вроде let getText = document.querySelector([data-cy=coupon-code]')[0].innerText; expect(getText).to.equal('expected text') .

5. Проблема не в тексте. Проблема в том, что товар не добавлен в корзину.