赛普拉斯:内部在 CI 中失败

Cypress: within is failing in CI

我在 Ubuntu 20.04 上使用 Cypress v7.7。我正在使用以下内容来定位特定的产品卡片及其中的元素:

cy.getBySel("listing-container-loaded").should("exist");
cy.getBySelLike("product-card").should("have.length", 24);

cy.getBySel(`product-card LS T-SHIRT`).within(() => {
    cy.getBySel("palette-color")
        .filter('[aria-selected="true"]')
        .should("have.attr", "aria-label", "Black");
});

这在本地运行良好(无论是有头模式还是无头模式,以及多个浏览器)。在 Gitlab CI 中,尽管它一直因无法描述的错误而失败:

- within function(){}

以下是本地结果:

我的getBySelgetBySelLike命令如下:

Cypress.Commands.add("getBySel", (selector, ...args) => {
    return cy.get(`[data-test="${selector}"]`, ...args);
});

Cypress.Commands.add("getBySelLike", (selector, ...args) => {
    return cy.get(`[data-test*="${selector}"]`, ...args);
});

有没有其他人以前遇到过这个错误,或者对尝试的事情有什么建议?

在 cypress.json 中启用 junit 报告后,我发现抛出一个 TypeError,但在屏幕截图中看不到。 CI 中的数据存在无法在本地重现的问题。

{
    // ...
    "reporter": "junit",
    "reporterOptions": {
        "mochaFile": "cypress-report-[hash].xml"
    }
}
TypeError: Cannot read property 'Black' of undefined
    at Context.eval (http://localhost:8080/__cypress/tests?p=cypress/integration/selection.spec.js:234:82)