运行 赛普拉斯测试的所有断言

Run all assertions of a test in Cypress

我有一个关于测试结构的问题。 docs 明确指出要编写包​​含多个断言的测试,而不是包含单个断言的多个测试。

但是如果我想测试多个元素是否可见,如果第一个元素不可见,测试将失败,因此我对其他元素一无所知。我可以对 运行 所有断言做些什么吗?

it("Page should show two actions", () => {
  cy.visit("users/list");
  cy.get("[data-cy=createUser]")
    .should("be.visible")
    .and("have.text", "Create user");
  cy.get("[data-cy=exportUserData]")
    .should("be.visible")
    .and("have.text", "Export data");
});

为了运行 所有断言你必须确保元素是可见的。通常在 运行 宁柏它需要时间来加载所有东西,在每个断言之间你可以等待,通过使用这个函数 cy.wait(2000)

显然我只是没有找到正确的措辞。当然它被称为 soft assertion 而不是构建到 Cypress 中并且实际上违背了 Chai 的断言哲学。 虽然我找不到 Cypress 或 Chai 的官方文档可以告诉我他们为什么反对软断言,但有一些变通方法。

您可以做的是:

  • 使用 npm 包 soft-assert as mentioned here
  • 如前所述自己实现(可以破坏赛普拉斯的retry/timeout机制)