21762: test timeouts and assertions
[arvados.git] / services / workbench2 / cypress / support / commands.js
index e4930ff2a0e05716a2d3477fc81a1b79b789e96c..05664e6b30505cf932a45bc3d2c75fa71dcef8bd 100644 (file)
@@ -182,11 +182,11 @@ Cypress.Commands.add("createWorkflow", (token, data) => {
     });
 });
 
-Cypress.Commands.add("createCollection", (token, data) => {
+Cypress.Commands.add("createCollection", (token, data, keep = false) => {
     return cy.createResource(token, "collections", {
         collection: JSON.stringify(data),
         ensure_unique_name: true,
-    });
+    }, keep);
 });
 
 Cypress.Commands.add("getCollection", (token, uuid) => {
@@ -321,16 +321,19 @@ Cypress.Commands.add("getResource", (token, suffix, uuid) => {
         });
 });
 
-Cypress.Commands.add("createResource", (token, suffix, data) => {
+Cypress.Commands.add("createResource", (token, suffix, data, keep = false) => {
     return cy
         .doRequest("POST", "/arvados/v1/" + suffix, data, null, token, true)
         .its("body")
         .then(function (resource) {
-            createdResources.push({ suffix, uuid: resource.uuid });
+            if (! keep) {
+                createdResources.push({ suffix, uuid: resource.uuid });
+            };
             return resource;
         });
 });
 
+
 Cypress.Commands.add("deleteResource", (token, suffix, uuid, failOnStatusCode = true) => {
     return cy
         .doRequest("DELETE", "/arvados/v1/" + suffix + "/" + uuid, null, null, token, false, true, failOnStatusCode)
@@ -350,14 +353,19 @@ Cypress.Commands.add("updateResource", (token, suffix, uuid, data) => {
 });
 
 Cypress.Commands.add("loginAs", user => {
+    // This shouldn't be necessary unless we need to call loginAs multiple times
+    // in the same test.
     cy.clearCookies();
-    cy.clearLocalStorage();
+    cy.clearAllLocalStorage();
+    cy.clearAllSessionStorage();
     cy.visit(`/token/?api_token=${user.token}`);
     // Use waitUntil to avoid permafail race conditions with window.location being undefined
     cy.waitUntil(() => cy.window().then(win =>
         win?.location?.href &&
         win.location.href.includes("/projects/")
     ), { timeout: 15000 });
+    // Wait for page to settle before getting elements
+    cy.waitForDom();
     cy.get("div#root").should("contain", "Arvados Workbench (zzzzz)");
     cy.get("div#root").should("not.contain", "Your account is inactive");
 });
@@ -489,7 +497,7 @@ function b64toBlob(b64Data, contentType = "", sliceSize = 512) {
 // From https://github.com/cypress-io/cypress/issues/7306#issuecomment-1076451070=
 // This command requires the async package (https://www.npmjs.com/package/async)
 Cypress.Commands.add("waitForDom", () => {
-    cy.window().then(
+    cy.window({ timeout: 10000 }).then(
         {
             // Don't timeout before waitForDom finishes
             timeout: 10000,