From 0f1bb337bc700dcd677fc634396958d2b5c7dfa3 Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Thu, 13 Jan 2022 13:01:14 -0500 Subject: [PATCH] E2e test stability: Fix free observer detached dom flakiness, remove waits on visit profile RBAC (#3659) --- .../integration/all/app/resetsessions.spec.ts | 11 +++++++---- cypress/integration/free/admin.spec.ts | 8 +++++--- cypress/integration/free/maintainer.spec.ts | 11 +++++++---- cypress/integration/free/observer.spec.ts | 18 ++++++++++-------- cypress/integration/premium/admin.spec.ts | 11 ++++++----- cypress/integration/premium/maintainer.spec.ts | 15 +++++++++------ cypress/integration/premium/observer.spec.ts | 15 +++++++++------ .../premium/team_maintainer_observer.spec.ts | 15 +++++++++------ 8 files changed, 62 insertions(+), 42 deletions(-) diff --git a/cypress/integration/all/app/resetsessions.spec.ts b/cypress/integration/all/app/resetsessions.spec.ts index 257945f6ab..8770760b7a 100644 --- a/cypress/integration/all/app/resetsessions.spec.ts +++ b/cypress/integration/all/app/resetsessions.spec.ts @@ -39,11 +39,14 @@ describe("Reset user sessions flow", () => { cy.login(); cy.visit("/profile"); - cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting - cy.findByRole("button", { name: /get api token/i }).click(); - cy.findByText(/reveal token/i).click(); - cy.get(".user-settings__secret-input").within(() => { + cy.getAttached(".user-settings__additional").within(() => { + cy.findByRole("button", { name: /get api token/i }).click(); + }); + cy.getAttached(".modal__content").within(() => { + cy.findByText(/reveal token/i).click(); + }); + cy.getAttached(".user-settings__secret-input").within(() => { cy.get("input").invoke("val").as("token2"); }); diff --git a/cypress/integration/free/admin.spec.ts b/cypress/integration/free/admin.spec.ts index cbbf6af379..9b5d915454 100644 --- a/cypress/integration/free/admin.spec.ts +++ b/cypress/integration/free/admin.spec.ts @@ -160,9 +160,11 @@ describe( // On the Profile page, they should… // See Admin in Role section, and no Team section cy.visit("/profile"); - cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting - cy.findByText(/teams/i).should("not.exist"); - cy.findByText("Role").next().contains(/admin/i); + + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText(/teams/i).should("not.exist"); + cy.findByText("Role").next().contains(/admin/i); + }); }); } ); diff --git a/cypress/integration/free/maintainer.spec.ts b/cypress/integration/free/maintainer.spec.ts index fa6e80a3e1..78761dc748 100644 --- a/cypress/integration/free/maintainer.spec.ts +++ b/cypress/integration/free/maintainer.spec.ts @@ -180,10 +180,13 @@ describe( // On the Profile page, they should… // See Maintainer in Role section, and no Team section cy.visit("/profile"); - cy.findByText(/teams/i).should("not.exist"); - cy.findByText("Role") - .next() - .contains(/maintainer/i); + + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText(/teams/i).should("not.exist"); + cy.findByText("Role") + .next() + .contains(/maintainer/i); + }); }); } ); diff --git a/cypress/integration/free/observer.spec.ts b/cypress/integration/free/observer.spec.ts index c63b540879..bf8eee18ac 100644 --- a/cypress/integration/free/observer.spec.ts +++ b/cypress/integration/free/observer.spec.ts @@ -60,7 +60,7 @@ describe("Free tier - Observer user", () => { // Queries pages: Observer can or cannot run UI cy.visit("/queries/manage"); - cy.get("thead").within(() => { + cy.getAttached("thead").within(() => { cy.findByText(/observer can run/i).should("not.exist"); }); @@ -85,14 +85,15 @@ describe("Free tier - Observer user", () => { // Not see the "Add a policy", "delete", "save", "run" policy cy.findByRole("button", { name: /add a policy/i }).should("not.exist"); - cy.get("tbody").within(() => { + cy.getAttached("tbody").within(() => { cy.get("tr") .first() .within(() => { cy.get(".fleet-checkbox__input").should("not.exist"); }); + cy.findByText(/filevault enabled/i).click(); }); - cy.findByText(/filevault enabled/i).click(); + cy.getAttached(".policy-form__wrapper").within(() => { cy.findByRole("button", { name: /run/i }).should("not.exist"); cy.findByRole("button", { name: /save/i }).should("not.exist"); @@ -102,10 +103,11 @@ describe("Free tier - Observer user", () => { // See Observer in Role section, and no Team section cy.visit("/profile"); - cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting - cy.findByText(/teams/i).should("not.exist"); - cy.findByText("Role") - .next() - .contains(/observer/i); + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText(/teams/i).should("not.exist"); + cy.findByText("Role") + .next() + .contains(/observer/i); + }); }); }); diff --git a/cypress/integration/premium/admin.spec.ts b/cypress/integration/premium/admin.spec.ts index 240014c194..76eab82db3 100644 --- a/cypress/integration/premium/admin.spec.ts +++ b/cypress/integration/premium/admin.spec.ts @@ -273,12 +273,13 @@ describe( // On the Profile page, they should… // See Global in the Team section and Admin in the Role section cy.visit("/profile"); - cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting - cy.findByText(/team/i) - .next() - .contains(/global/i); - cy.findByText("Role").next().contains(/admin/i); + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText(/team/i) + .next() + .contains(/global/i); + cy.findByText("Role").next().contains(/admin/i); + }); } ); } diff --git a/cypress/integration/premium/maintainer.spec.ts b/cypress/integration/premium/maintainer.spec.ts index 30381c0554..d8afdd632d 100644 --- a/cypress/integration/premium/maintainer.spec.ts +++ b/cypress/integration/premium/maintainer.spec.ts @@ -121,12 +121,15 @@ describe( // On the Profile page, they should… // See Global in the Team section and Maintainer in the Role section cy.visit("/profile"); - cy.findByText(/team/i) - .next() - .contains(/global/i); - cy.findByText("Role") - .next() - .contains(/maintainer/i); + + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText(/team/i) + .next() + .contains(/global/i); + cy.findByText("Role") + .next() + .contains(/maintainer/i); + }); }); } ); diff --git a/cypress/integration/premium/observer.spec.ts b/cypress/integration/premium/observer.spec.ts index e55116d087..8c9ba8b316 100644 --- a/cypress/integration/premium/observer.spec.ts +++ b/cypress/integration/premium/observer.spec.ts @@ -139,11 +139,14 @@ describe("Premium tier - Observer user", () => { // On the Profile page, they should… // See Global in the Team section and Observer in the Role section cy.visit("/profile"); - cy.findByText(/team/i) - .next() - .contains(/apples/i); - cy.findByText("Role") - .next() - .contains(/observer/i); + + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText(/team/i) + .next() + .contains(/apples/i); + cy.findByText("Role") + .next() + .contains(/observer/i); + }); }); }); diff --git a/cypress/integration/premium/team_maintainer_observer.spec.ts b/cypress/integration/premium/team_maintainer_observer.spec.ts index bfa68d053d..b594799f86 100644 --- a/cypress/integration/premium/team_maintainer_observer.spec.ts +++ b/cypress/integration/premium/team_maintainer_observer.spec.ts @@ -265,12 +265,15 @@ describe( // On the Profile page, they should… // See 2 Teams in the Team section and Various in the Role section cy.visit("/profile"); - cy.findByText("Teams") - .next() - .contains(/2 teams/i); - cy.findByText("Role") - .next() - .contains(/various/i); + + cy.getAttached(".user-settings__additional").within(() => { + cy.findByText("Teams") + .next() + .contains(/2 teams/i); + cy.findByText("Role") + .next() + .contains(/various/i); + }); }); } );