From d1f09ed3157baa40a43ce64e876a4b0dd8408a88 Mon Sep 17 00:00:00 2001 From: Stephen Smith Date: Mon, 7 Apr 2025 10:49:09 -0400 Subject: [PATCH] 22395: Add waitfordom to trash test helpers, increase timeouts Arvados-DCO-1.1-Signed-off-by: Stephen Smith --- services/workbench2/cypress/e2e/trash.cy.js | 18 +++++++++--------- .../workbench2/cypress/support/commands.js | 6 +++++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/services/workbench2/cypress/e2e/trash.cy.js b/services/workbench2/cypress/e2e/trash.cy.js index b8555852c9..018979a6dd 100644 --- a/services/workbench2/cypress/e2e/trash.cy.js +++ b/services/workbench2/cypress/e2e/trash.cy.js @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -describe('trash tests', function () { +describe('Trash tests', function () { let adminUser; before(function () { @@ -50,7 +50,7 @@ describe('trash tests', function () { cy.doToolbarAction("Move to trash"); // Verify trashed and breadcrumbs correct - cy.get('[data-cy=data-table]').contains(testProject.name).should('not.exist'); + cy.assertDataExplorerContains(testProject.name, false); cy.assertBreadcrumbs(["Home Projects"]); // Restore with toolbar @@ -65,7 +65,7 @@ describe('trash tests', function () { // Verify present in home project cy.get('[data-cy=side-panel-tree]').contains('Home Projects').click(); cy.assertBreadcrumbs(["Home Projects"]); - cy.get('[data-cy=data-table]').contains(testProject.name).should('exist'); + cy.assertDataExplorerContains(testProject.name, true); }); }); @@ -86,7 +86,7 @@ describe('trash tests', function () { cy.doDataExplorerContextAction(testCollection.name, 'Move to trash'); // Verify trashed and breadcrumbs correct - cy.get('[data-cy=data-table]').contains(testCollection.name).should('not.exist'); + cy.assertDataExplorerContains(testCollection.name, false); cy.assertBreadcrumbs(["Home Projects"]); // Restore with context menu @@ -95,18 +95,18 @@ describe('trash tests', function () { cy.doDataExplorerContextAction(testCollection.name, 'Restore'); // Verify not in trash and in home project - cy.get('[data-cy=data-table]').contains(testCollection.name).should('not.exist'); + cy.assertDataExplorerContains(testCollection.name, false); cy.assertBreadcrumbs(["Trash"]); cy.get('[data-cy=side-panel-tree]').contains('Home Projects').click(); cy.assertBreadcrumbs(["Home Projects"]); - cy.get('[data-cy=data-table]').contains(testCollection.name).should('exist'); + cy.assertDataExplorerContains(testCollection.name, true); // Test delete from toolbar cy.doDataExplorerSelect(testCollection.name); cy.doToolbarAction("Move to trash"); // Verify trashed and breadcrumbs correct - cy.get('[data-cy=data-table]').contains(testCollection.name).should('not.exist'); + cy.assertDataExplorerContains(testCollection.name, false); cy.assertBreadcrumbs(["Home Projects"]); // Restore with toolbar @@ -116,11 +116,11 @@ describe('trash tests', function () { cy.doToolbarAction("Restore"); // Verify not in trash and in home project - cy.get('[data-cy=data-table]').contains(testCollection.name).should('not.exist'); + cy.assertDataExplorerContains(testCollection.name, false); cy.assertBreadcrumbs(["Trash"]); cy.get('[data-cy=side-panel-tree]').contains('Home Projects').click(); cy.assertBreadcrumbs(["Home Projects"]); - cy.get('[data-cy=data-table]').contains(testCollection.name).should('exist'); + cy.assertDataExplorerContains(testCollection.name, true); }); }); }); diff --git a/services/workbench2/cypress/support/commands.js b/services/workbench2/cypress/support/commands.js index 02188b4d3b..fd4ca45519 100644 --- a/services/workbench2/cypress/support/commands.js +++ b/services/workbench2/cypress/support/commands.js @@ -666,6 +666,7 @@ Cypress.Commands.add("setupDockerImage", (image_name) => { * @returns the path for further use if needed */ Cypress.Commands.add("assertUrlPathname", (path) => { + cy.waitForDom(); return cy.waitUntil(() => cy.location() .then((url) => url.pathname.endsWith(path) ? url.pathname : false) , { @@ -680,6 +681,7 @@ Cypress.Commands.add("assertUrlPathname", (path) => { * @returns the current breadcrumbs as a string array */ Cypress.Commands.add("assertBreadcrumbs", (names) => { + cy.waitForDom(); // waitUntil allows retrying with a non-assert test // This allows doing non-wrapped comparisons and improves retryability return cy.waitUntil(() => cy.get('[data-cy=breadcrumbs] button') @@ -699,6 +701,7 @@ Cypress.Commands.add("assertBreadcrumbs", (names) => { * Asserts whether the DE contains a certain item, default to true */ Cypress.Commands.add("assertDataExplorerContains", (name, contains = true) => { + cy.waitForDom(); contains ? cy.get('[data-cy=data-table]').contains(name).should('exist') : cy.get('[data-cy=data-table]').contains(name).should('not.exist'); @@ -718,7 +721,7 @@ Cypress.Commands.add("doToolbarAction", (name) => { */ Cypress.Commands.add("doDataExplorerContextAction", (name, action) => { cy.waitForDom(); - cy.get('[data-cy=data-table]', { timeout: 10000 }).contains(name).rightclick(); + cy.get('[data-cy=data-table]', { timeout: 10000 }).contains(name, { timeout: 10000 }).rightclick(); cy.get('[data-cy=context-menu]', { timeout: 5000 }).contains(action).click(); }); @@ -726,6 +729,7 @@ Cypress.Commands.add("doDataExplorerContextAction", (name, action) => { * Selects data explorer row checkbox by name */ Cypress.Commands.add("doDataExplorerSelect", (name) => { + cy.waitForDom(); cy.get('[data-cy=data-table]', { timeout: 10000 }) .contains(name) .parents('[data-cy=data-table-row]') -- 2.39.5