Bug 40043: Try to prevent Agreements_spec.ts to fail randomly
One test is failing with:
"""
https://on.cypress.io/element-has-detached-from-dom" type="CypressError"><![CDATA[CypressError: Timed out retrying after 10050ms: `cy.click()` failed because the page updated while this command was executing. Cypress tried to locate elements based on this query:
> <a.show>
We initially found matching element(s), but while waiting for them to become actionable, they disappeared from the page. Common situations why this happens:
- Your JS framework re-rendered asynchronously
- Your app code reacted to an event firing and removed the element
You can typically solve this by breaking up a chain. For example, rewrite:
> `cy.get('button').click().click()`
to
> `cy.get('button').as('btn').click()`
> `cy.get('@btn').click()`
https://on.cypress.io/element-has-detached-from-dom
at retryActionability (http://localhost:8081/__cypress/runner/cypress_runner.js:112246:74)
at tryCatcher (http://localhost:8081/__cypress/runner/cypress_runner.js:1807:23)
at Promise.attempt.Promise.try (http://localhost:8081/__cypress/runner/cypress_runner.js:4315:29)
at whenStable (http://localhost:8081/__cypress/runner/cypress_runner.js:143192:68)
at <unknown> (http://localhost:8081/__cypress/runner/cypress_runner.js:143133:14)
at tryCatcher (http://localhost:8081/__cypress/runner/cypress_runner.js:1807:23)
at Promise._settlePromiseFromHandler (http://localhost:8081/__cypress/runner/cypress_runner.js:1519:31)
at Promise._settlePromise (http://localhost:8081/__cypress/runner/cypress_runner.js:1576:18)
at Promise._settlePromise0 (http://localhost:8081/__cypress/runner/cypress_runner.js:1621:10)
at Promise._settlePromises (http://localhost:8081/__cypress/runner/cypress_runner.js:1701:18)
at Promise._fulfill (http://localhost:8081/__cypress/runner/cypress_runner.js:1645:18)
at <unknown> (http://localhost:8081/__cypress/runner/cypress_runner.js:5450:46)
From Your Spec Code:
at Context.eval (webpack://koha/./t/cypress/integration/ERM/Agreements_spec.ts:630:18)]]></failure>
</testcase>
</testsuite>
"""
My guess is that it happens because we don't wait for the /agreements
response.
Test plan:
Test should still pass, we will see how Jenkins behave after it's
pushed.
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit cebc45ad03)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
parent
073fbd2696
commit
7ae55e2274
|
|
@ -569,9 +569,10 @@ describe("Agreement CRUD operations", () => {
|
|||
"X-Base-Total-Count": "1",
|
||||
"X-Total-Count": "1",
|
||||
},
|
||||
});
|
||||
}).as("get-agreements");
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement);
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
cy.wait("@get-agreements");
|
||||
|
||||
cy.get("#agreements_list table tbody tr:first")
|
||||
.contains("Delete")
|
||||
|
|
@ -608,14 +609,8 @@ describe("Agreement CRUD operations", () => {
|
|||
|
||||
// Delete from show
|
||||
// Click the "name" link from the list
|
||||
cy.intercept("GET", "/api/v1/erm/agreements*", {
|
||||
statusCode: 200,
|
||||
body: agreements,
|
||||
headers: {
|
||||
"X-Base-Total-Count": "1",
|
||||
"X-Total-Count": "1",
|
||||
},
|
||||
});
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
cy.wait("@get-agreements");
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement).as(
|
||||
"get-agreement"
|
||||
);
|
||||
|
|
@ -629,7 +624,6 @@ describe("Agreement CRUD operations", () => {
|
|||
name_link.should("have.text", agreement.name);
|
||||
name_link.click();
|
||||
cy.wait("@get-agreement");
|
||||
cy.wait(500); // Cypress is too fast! Vue hasn't populated the form yet!
|
||||
cy.get("#agreements_show h2").contains(
|
||||
"Agreement #" + agreement.agreement_id
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in New Issue