diff --git a/frontend/test/metabase-db/postgres/custom-column.cy.spec.js b/frontend/test/metabase-db/postgres/custom-column.cy.spec.js
index 413b97510ef7e4fe4b83fe84ef01123339417cc6..125a68bc2d2d5d2da0dba457187877a2d27c2d66 100644
--- a/frontend/test/metabase-db/postgres/custom-column.cy.spec.js
+++ b/frontend/test/metabase-db/postgres/custom-column.cy.spec.js
@@ -8,7 +8,7 @@ import {
 const PG_DB_NAME = "QA Postgres12";
 
 describe("postgres > question > custom columns", () => {
-  before(() => {
+  beforeEach(() => {
     restore();
     signInAsAdmin();
     addPostgresDatabase(PG_DB_NAME);
diff --git a/frontend/test/metabase/scenarios/admin/databases/add.cy.spec.js b/frontend/test/metabase/scenarios/admin/databases/add.cy.spec.js
index 0abde5e56805412d572fb403200a05f89e5bb7a7..810ad99558ff575094b486c5b16107439e48949b 100644
--- a/frontend/test/metabase/scenarios/admin/databases/add.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/databases/add.cy.spec.js
@@ -15,9 +15,8 @@ function toggleFieldWithDisplayName(displayName) {
 }
 
 describe("scenarios > admin > databases > add", () => {
-  before(restore);
-
   beforeEach(() => {
+    restore();
     signInAsAdmin();
     cy.server();
   });
diff --git a/frontend/test/metabase/scenarios/admin/databases/edit.cy.spec.js b/frontend/test/metabase/scenarios/admin/databases/edit.cy.spec.js
index 8868d4467cfb3a275fed33796d589b410f3fd22d..d5335be7959551d6c67e9f5092d4edf4b0451c08 100644
--- a/frontend/test/metabase/scenarios/admin/databases/edit.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/databases/edit.cy.spec.js
@@ -1,9 +1,8 @@
 import { signInAsAdmin, restore, popover, modal } from "__support__/cypress";
 
 describe("scenarios > admin > databases > edit", () => {
-  before(restore);
-
   beforeEach(() => {
+    restore();
     signInAsAdmin();
     cy.server();
     cy.route("GET", "/api/database/*").as("databaseGet");
@@ -65,13 +64,23 @@ describe("scenarios > admin > databases > edit", () => {
   });
 
   describe("Scheduling tab", () => {
+    beforeEach(() => {
+      // Turn on scheduling without relying on the previous test(s)
+      cy.request("PUT", "/api/database/1", {
+        details: {
+          "let-user-control-scheduling": true,
+        },
+        engine: "h2",
+      });
+    });
+
     it("shows the initial scheduling settings correctly", () => {
       cy.visit("/admin/databases/1");
 
       cy.findByText("Scheduling").click();
 
       cy.findByText("Database syncing")
-        .parent()
+        .closest(".Form-field")
         .findByText("Hourly");
 
       cy.findByText("Regularly, on a schedule")
@@ -85,7 +94,7 @@ describe("scenarios > admin > databases > edit", () => {
       cy.findByText("Scheduling").click();
 
       cy.findByText("Database syncing")
-        .parent()
+        .closest(".Form-field")
         .as("sync");
 
       cy.get("@sync")
diff --git a/frontend/test/metabase/scenarios/admin/databases/list.cy.spec.js b/frontend/test/metabase/scenarios/admin/databases/list.cy.spec.js
index e4887b91604c6827be4126a7e8cfea0c41458675..e1e7b846e71782473bcc1cbf1de6f970425c84db 100644
--- a/frontend/test/metabase/scenarios/admin/databases/list.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/databases/list.cy.spec.js
@@ -1,9 +1,8 @@
 import { signInAsAdmin, restore } from "__support__/cypress";
 
 describe("scenarios > admin > databases > list", () => {
-  before(restore);
-
   beforeEach(() => {
+    restore();
     signInAsAdmin();
     cy.server();
   });
@@ -60,6 +59,7 @@ describe("scenarios > admin > databases > list", () => {
   it("should let you bring back the sample dataset", () => {
     cy.route("POST", "/api/database/sample_dataset").as("sample_dataset");
 
+    cy.request("DELETE", "/api/database/1").as("delete");
     cy.visit("/admin/databases");
     cy.contains("Bring the sample dataset back").click();
     cy.wait("@sample_dataset");
diff --git a/frontend/test/metabase/scenarios/admin/datamodel/hide_tables.cy.spec.js b/frontend/test/metabase/scenarios/admin/datamodel/hide_tables.cy.spec.js
index 9c27c14f81f357812a238ef44b2beb1b2261eaff..0dac0fc421aab73d1cfabec94880a7e5f6e45413 100644
--- a/frontend/test/metabase/scenarios/admin/datamodel/hide_tables.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/datamodel/hide_tables.cy.spec.js
@@ -7,7 +7,7 @@ import {
 const ORDERS_URL = "/admin/datamodel/database/1/table/2";
 
 describe("scenarios > admin > datamodel > hidden tables (metabase#9759)", () => {
-  before(restore);
+  beforeEach(restore);
 
   it("can hide a table and not show up in 'Our Data'", () => {
     cy.server();
diff --git a/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js b/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js
index bdb53ebfc98d1383caebf8c7565fc791a84c3312..065cedab85b25e7466810d88dd5726d50e5177ba 100644
--- a/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js
@@ -1,11 +1,11 @@
 import { restore, signInAsAdmin, popover, modal } from "__support__/cypress";
 import { SAMPLE_DATASET } from "__support__/cypress_sample_dataset";
 
-const { ORDERS_ID } = SAMPLE_DATASET;
+const { ORDERS, ORDERS_ID } = SAMPLE_DATASET;
 
 describe("scenarios > admin > datamodel > metrics", () => {
-  before(restore);
   beforeEach(() => {
+    restore();
     signInAsAdmin();
     cy.viewport(1400, 860);
   });
@@ -43,50 +43,23 @@ describe("scenarios > admin > datamodel > metrics", () => {
   });
 
   describe("with metrics", () => {
-    before(() => {
+    beforeEach(() => {
       // CREATE METRIC
-      signInAsAdmin();
-      cy.visit("/admin");
-      cy.contains("Data Model").click();
-      cy.contains("Metrics").click();
-      cy.contains("New metric").click();
-      cy.contains("Select a table").click();
-      popover()
-        .contains("Orders")
-        .click({ force: true }); // this shouldn't be needed, but there were issues with reordering as loads happeend
-
-      cy.url().should("match", /metric\/create$/);
-      cy.contains("Create Your Metric");
-
-      // filter to orders with total under 100
-      cy.contains("Add filters").click();
-      cy.contains("Total").click();
-      cy.contains("Equal to").click();
-      cy.contains("Less than").click();
-      cy.get('[placeholder="Enter a number"]').type("100");
-      popover()
-        .contains("Add filter")
-        .click();
-
-      //
-      cy.contains("Result: 12765");
-
-      // fill in name/description
-      cy.get('[name="name"]').type("orders <100");
-      cy.get('[name="description"]').type(
-        "Count of orders with a total under $100.",
-      );
-
-      // saving bounces you back and you see new metric in the list
-      cy.contains("Save changes").click();
-      cy.url().should("match", /datamodel\/metrics$/);
-      cy.contains("orders <100");
-      cy.contains("Count, Filtered by Total");
+      cy.request("POST", "/api/metric", {
+        definition: {
+          aggregation: ["count"],
+          filter: ["<", ["field-id", ORDERS.TOTAL], 100],
+          "source-table": ORDERS_ID,
+        },
+        name: "orders < 100",
+        description: "Count of orders with a total under $100.",
+        table_id: ORDERS_ID,
+      });
     });
 
     it("should show no questions based on a new metric", () => {
       cy.visit("/reference/metrics/1/questions");
-      cy.findAllByText("Questions about orders <100");
+      cy.findAllByText("Questions about orders < 100");
       cy.findByText("Loading...");
       cy.findByText("Loading...").should("not.exist");
       cy.findByText(
@@ -115,8 +88,8 @@ describe("scenarios > admin > datamodel > metrics", () => {
       // Check the list
       cy.visit("/reference/metrics/1/questions");
       cy.findByText("Our analysis").should("not.exist");
-      cy.findAllByText("Questions about orders <100");
-      cy.findByText("Orders, orders <100, Filtered by Total");
+      cy.findAllByText("Questions about orders < 100");
+      cy.findByText("Orders, orders < 100, Filtered by Total");
     });
 
     it("should show the metric detail view for a specific id", () => {
@@ -130,7 +103,7 @@ describe("scenarios > admin > datamodel > metrics", () => {
       cy.contains("Data Model").click();
       cy.contains("Metrics").click();
 
-      cy.contains("orders <100")
+      cy.contains("orders < 100")
         .parent()
         .parent()
         .find(".Icon-ellipsis")
@@ -158,7 +131,7 @@ describe("scenarios > admin > datamodel > metrics", () => {
       cy.contains("Result: 18703");
 
       // update name and description, set a revision note, and save the update
-      cy.get('[name="name"]').type("{selectall}orders >10");
+      cy.get('[name="name"]').type("{selectall}orders > 10");
       cy.get('[name="description"]').type(
         "{selectall}Count of orders with a total over $10.",
       );
@@ -167,10 +140,10 @@ describe("scenarios > admin > datamodel > metrics", () => {
 
       // get redirected to previous page and see the new metric name
       cy.url().should("match", /datamodel\/metrics$/);
-      cy.contains("orders >10");
+      cy.contains("orders > 10");
 
       // clean up
-      cy.contains("orders >10")
+      cy.contains("orders > 10")
         .parent()
         .parent()
         .find(".Icon-ellipsis")
@@ -196,7 +169,14 @@ describe("scenarios > admin > datamodel > metrics", () => {
           aggregation: [
             [
               "aggregation-options",
-              ["sum", ["*", ["field-id", 9], ["field-id", 10]]],
+              [
+                "sum",
+                [
+                  "*",
+                  ["field-id", ORDERS.DISCOUNT],
+                  ["field-id", ORDERS.QUANTITY],
+                ],
+              ],
               { "display-name": "CE" },
             ],
           ],
diff --git a/frontend/test/metabase/scenarios/admin/datamodel/segments.cy.spec.js b/frontend/test/metabase/scenarios/admin/datamodel/segments.cy.spec.js
index 770054187776130d3f74786f82ac5c2664bb560d..69827904beb7b8a77510cbc73f9c034dcc8ef4c0 100644
--- a/frontend/test/metabase/scenarios/admin/datamodel/segments.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/datamodel/segments.cy.spec.js
@@ -12,8 +12,8 @@ import { SAMPLE_DATASET } from "__support__/cypress_sample_dataset";
 const { ORDERS, ORDERS_ID } = SAMPLE_DATASET;
 
 describe("scenarios > admin > datamodel > segments", () => {
-  before(restore);
   beforeEach(() => {
+    restore();
     signInAsAdmin();
     cy.viewport(1400, 860);
   });
@@ -52,9 +52,7 @@ describe("scenarios > admin > datamodel > segments", () => {
   describe("with segment", () => {
     const SEGMENT_NAME = "Orders < 100";
 
-    before(() => {
-      signInAsAdmin();
-
+    beforeEach(() => {
       // Create a segment through API
       cy.request("POST", "/api/segment", {
         name: SEGMENT_NAME,
diff --git a/frontend/test/metabase/scenarios/admin/datamodel/table.cy.spec.js b/frontend/test/metabase/scenarios/admin/datamodel/table.cy.spec.js
index 50abdca2fce601b201da63a4724d3e8e75dc753d..e7ab0112fc3c64c6cd4eb9af9b7c5107f2151405 100644
--- a/frontend/test/metabase/scenarios/admin/datamodel/table.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/datamodel/table.cy.spec.js
@@ -2,8 +2,10 @@ import { signInAsAdmin, restore } from "__support__/cypress";
 // Ported from `databases.e2e.spec.js`
 
 describe("scenarios > admin > databases > table", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should see four tables in sample database", () => {
     cy.visit("/admin/datamodel/database/1");
diff --git a/frontend/test/metabase/scenarios/admin/permissions/permissions.cy.spec.js b/frontend/test/metabase/scenarios/admin/permissions/permissions.cy.spec.js
index 2e96dedbede82ded25b84b97020b2f8264e08f8b..296c446200e0d7aa34c547d25a544c49bbadf6db 100644
--- a/frontend/test/metabase/scenarios/admin/permissions/permissions.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/permissions/permissions.cy.spec.js
@@ -1,8 +1,10 @@
 import { restore, signInAsAdmin } from "__support__/cypress";
 
 describe("scenarios > admin > permissions", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should display error on failed save", () => {
     // revoke some permissions
diff --git a/frontend/test/metabase/scenarios/admin/settings/settings.cy.spec.js b/frontend/test/metabase/scenarios/admin/settings/settings.cy.spec.js
index 86144543d2762c613656db5b06536ed659870571..fce822bffcd55835dd41e25a733c20ed461bb4d6 100644
--- a/frontend/test/metabase/scenarios/admin/settings/settings.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/settings/settings.cy.spec.js
@@ -7,8 +7,10 @@ import {
 } from "__support__/cypress";
 
 describe("scenarios > admin > settings", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should surface an error when validation for any field fails (metabase#4506)", () => {
     const BASE_URL = Cypress.config().baseUrl;
@@ -280,6 +282,15 @@ describe("scenarios > admin > settings", () => {
       cy.findByText("Changes saved!");
     });
     it("should show an error if test email fails", () => {
+      // Reuse Email setup without relying on the previous test
+      cy.request("PUT", "/api/setting", {
+        "email-from-address": "admin@metabase.com",
+        "email-smtp-host": "localhost",
+        "email-smtp-password": null,
+        "email-smtp-port": "1234",
+        "email-smtp-security": "none",
+        "email-smtp-username": null,
+      });
       cy.visit("/admin/settings/email");
       cy.findByText("Send test email").click();
       cy.findByText("Sorry, something went wrong. Please try again.");
diff --git a/frontend/test/metabase/scenarios/admin/settings/spinner.cy.spec.js b/frontend/test/metabase/scenarios/admin/settings/spinner.cy.spec.js
index 82219a9113e1bd15d4e52b2f1df7fdd523f31cd1..d2fa5c80c5ad4bb3d669267ae97c6bc7abfff057 100644
--- a/frontend/test/metabase/scenarios/admin/settings/spinner.cy.spec.js
+++ b/frontend/test/metabase/scenarios/admin/settings/spinner.cy.spec.js
@@ -1,8 +1,10 @@
 import { restore, signInAsAdmin } from "__support__/cypress";
 
 describe("scenarios > admin > spinner", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   describe("API request", () => {
     it("should return correct DB", () => {
diff --git a/frontend/test/metabase/scenarios/alert/alert.cy.spec.js b/frontend/test/metabase/scenarios/alert/alert.cy.spec.js
index c4cf62796175a889449eea8c119d88bd4c1800ac..41b5a7a2bc7648ecb2e343c59458914f2e4915f7 100644
--- a/frontend/test/metabase/scenarios/alert/alert.cy.spec.js
+++ b/frontend/test/metabase/scenarios/alert/alert.cy.spec.js
@@ -27,10 +27,12 @@ export function setGoal(number) {
 }
 
 describe("scenarios > alert", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
-
   describe("with nothing set", () => {
+    beforeEach(() => {
+      restore();
+      signInAsAdmin();
+    });
+
     it("should prompt you to add email/slack credentials", () => {
       cy.visit("/question/1");
       cy.get(".Icon-bell").click();
@@ -38,6 +40,7 @@ describe("scenarios > alert", () => {
         "To send alerts, you'll need to set up email or Slack integration.",
       );
     });
+
     it("should say to non-admins that admin must add email credentials", () => {
       signInAsNormalUser();
       cy.visit("/question/1");
diff --git a/frontend/test/metabase/scenarios/auth/search.cy.spec.js b/frontend/test/metabase/scenarios/auth/search.cy.spec.js
index 8412c99940cc648dcf00dff1260b4896b909c1e1..d1cb4c81fe995f2ab89c33a4b6f462d6370e449d 100644
--- a/frontend/test/metabase/scenarios/auth/search.cy.spec.js
+++ b/frontend/test/metabase/scenarios/auth/search.cy.spec.js
@@ -6,7 +6,7 @@ import {
 } from "__support__/cypress";
 
 describe("scenarios > auth > search", () => {
-  before(restore);
+  beforeEach(restore);
 
   describe("universal search", () => {
     it("should work for admin", () => {
diff --git a/frontend/test/metabase/scenarios/auth/signin.cy.spec.js b/frontend/test/metabase/scenarios/auth/signin.cy.spec.js
index 0d05175c8dd7ca13989abb1390d76ba543d76bd7..521717442ff51a3eaf02383c01bfe7f5a291eb97 100644
--- a/frontend/test/metabase/scenarios/auth/signin.cy.spec.js
+++ b/frontend/test/metabase/scenarios/auth/signin.cy.spec.js
@@ -3,8 +3,10 @@ import { restore, signIn, signOut, USERS } from "__support__/cypress";
 const sizes = [[1280, 800], [640, 360]];
 
 describe("scenarios > auth > signin", () => {
-  before(restore);
-  beforeEach(signOut);
+  beforeEach(() => {
+    restore();
+    signOut();
+  });
 
   it("should redirect to  /auth/login", () => {
     cy.visit("/");
diff --git a/frontend/test/metabase/scenarios/dashboard/dashboard-drill.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/dashboard-drill.cy.spec.js
index bfcfd677a6098324a32a3c207dc3a126d2092c40..c5bb976e1d506defae981ae83f2afe52bcc4fefc 100644
--- a/frontend/test/metabase/scenarios/dashboard/dashboard-drill.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/dashboard-drill.cy.spec.js
@@ -11,8 +11,10 @@ import { SAMPLE_DATASET } from "__support__/cypress_sample_dataset";
 const { REVIEWS, REVIEWS_ID } = SAMPLE_DATASET;
 
 describe("scenarios > dashboard > dashboard drill", () => {
-  before(restore);
-  beforeEach(signIn);
+  beforeEach(() => {
+    restore();
+    signIn();
+  });
 
   it("should handle URL click through on a table", () => {
     createDashboardWithQuestion({}, dashboardId =>
diff --git a/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js
index f60edbe8aa991efcb4b76cd53270c7cc81c6fe3f..b5afd1750a0715073f7c1abec6c215ca7bc78ba3 100644
--- a/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js
@@ -25,7 +25,7 @@ function filterDashboard(suggests = true) {
 }
 
 describe("support > permissions (metabase#8472)", () => {
-  before(() => {
+  beforeEach(() => {
     restore();
     signIn("admin");
 
@@ -48,7 +48,6 @@ describe("support > permissions (metabase#8472)", () => {
   });
 
   it("should allow an admin user to select the filter", () => {
-    signIn("admin");
     filterDashboard();
   });
 
diff --git a/frontend/test/metabase/scenarios/dashboard/embed.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/embed.cy.spec.js
index 3eb53c1ca3bbe175e2e73f262fda8feab4b94288..2f659609458735c35371c24459158c7f6a52f2b6 100644
--- a/frontend/test/metabase/scenarios/dashboard/embed.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/embed.cy.spec.js
@@ -1,8 +1,10 @@
 import { signInAsAdmin, restore, popover, modal } from "__support__/cypress";
 
 describe("scenarios > dashboard > embed", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should have the correct embed snippet", () => {
     cy.visit("/dashboard/1");
diff --git a/frontend/test/metabase/scenarios/dashboard/nested-cards.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/nested-cards.cy.spec.js
index ffe6864ef9bc0061ddc41b6865eeee44481b7b82..c950d01fce8c67c3b26e0652d66352543c8d63c0 100644
--- a/frontend/test/metabase/scenarios/dashboard/nested-cards.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/nested-cards.cy.spec.js
@@ -1,8 +1,10 @@
 import { signIn, restore, popover } from "__support__/cypress";
 
 describe("scenarios > dashboard > nested cards", () => {
-  before(restore);
-  beforeEach(signIn);
+  beforeEach(() => {
+    restore();
+    signIn();
+  });
 
   it("should show fields on nested cards", () => {
     createDashboardWithNestedCard(dashId => {
@@ -32,9 +34,7 @@ function createDashboardWithNestedCard(callback) {
       database: 1,
     },
     display: "table",
-    description: null,
     visualization_settings: {},
-    collection_id: null,
   }).then(({ body }) =>
     cy
       .request("POST", "/api/card", {
diff --git a/frontend/test/metabase/scenarios/dashboard/parameters-embedded.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/parameters-embedded.cy.spec.js
index a9cf7e62fb014aa02791e8ac0901b0c38f38b1e4..39e26626838ce0d317279dc4d6affac9b80d4721 100644
--- a/frontend/test/metabase/scenarios/dashboard/parameters-embedded.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/parameters-embedded.cy.spec.js
@@ -19,7 +19,7 @@ const DASHBOARD_JWT_TOKEN =
 describe("scenarios > dashboard > parameters-embedded", () => {
   let dashboardId, questionId, dashcardId;
 
-  before(() => {
+  beforeEach(() => {
     restore();
     signInAsAdmin();
 
@@ -86,8 +86,7 @@ describe("scenarios > dashboard > parameters-embedded", () => {
 
   describe("public question", () => {
     let uuid;
-    before(() => {
-      signInAsAdmin();
+    beforeEach(() => {
       cy.request("POST", `/api/card/${questionId}/public_link`).then(
         res => (uuid = res.body.uuid),
       );
@@ -103,8 +102,7 @@ describe("scenarios > dashboard > parameters-embedded", () => {
   });
 
   describe("embedded question", () => {
-    before(() => {
-      signInAsAdmin();
+    beforeEach(() => {
       cy.request("PUT", `/api/card/${questionId}`, {
         embedding_params: {
           id: "enabled",
@@ -138,8 +136,7 @@ describe("scenarios > dashboard > parameters-embedded", () => {
 
   describe("public dashboard", () => {
     let uuid;
-    before(() => {
-      signInAsAdmin();
+    beforeEach(() => {
       cy.request("POST", `/api/dashboard/${dashboardId}/public_link`).then(
         res => (uuid = res.body.uuid),
       );
@@ -155,8 +152,7 @@ describe("scenarios > dashboard > parameters-embedded", () => {
   });
 
   describe("embedded dashboard", () => {
-    before(() => {
-      signInAsAdmin();
+    beforeEach(() => {
       cy.request("PUT", `/api/dashboard/${dashboardId}`, {
         embedding_params: {
           id: "enabled",
diff --git a/frontend/test/metabase/scenarios/dashboard/permissions.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/permissions.cy.spec.js
index 029d7407a8610cd88e09ee8dc3008d6b5bbc9a9a..b59c52b868a5f848428aa0995680136287512f10 100644
--- a/frontend/test/metabase/scenarios/dashboard/permissions.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/permissions.cy.spec.js
@@ -1,10 +1,10 @@
 import { signInAsAdmin, signIn, restore } from "__support__/cypress";
 
 describe("scenarios > dashboard > permissions", () => {
-  before(restore);
   let dashboardId;
 
-  it("should let admins view all cards in a dashboard", () => {
+  beforeEach(() => {
+    restore();
     // This first test creates a dashboard with two questions.
     // One is in Our Analytics the other is in a more locked down collection.
     signInAsAdmin();
@@ -87,7 +87,9 @@ describe("scenarios > dashboard > permissions", () => {
         cy.visit(`/dashboard/${dashId}`);
       },
     );
+  });
 
+  it("should let admins view all cards in a dashboard", () => {
     // Admin can see both questions
     cy.findByText("First Question");
     cy.findByText("foo");
diff --git a/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js
index e7cd9b399b7965497050d6d1e84b5cb7312284ed..4cc01f532f5c5147ff0ffd1bf7ec13a58beabec6 100644
--- a/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js
@@ -9,13 +9,13 @@ function addTextBox(string) {
 }
 
 describe("scenarios > dashboard > text-box", () => {
-  before(restore);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   describe("Editing", () => {
     beforeEach(() => {
-      restore();
-      signInAsAdmin();
-
       // Create text box card
       cy.visit("/dashboard/1");
       addTextBox("Text *text* __text__");
@@ -45,8 +45,6 @@ describe("scenarios > dashboard > text-box", () => {
 
   describe("when text-box is the only element on the dashboard", () => {
     beforeEach(() => {
-      restore(); // restore before each so we can reuse dashboard id
-      signInAsAdmin();
       // Create dashboard
       cy.server();
       cy.request("POST", "/api/dashboard", {
diff --git a/frontend/test/metabase/scenarios/dashboard/title-drill.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/title-drill.cy.spec.js
index 2ac52d0e81811413d3f72a774e536d8bbc208642..f39c5b8699fcea25089a9a7c66ddcbb103c77df0 100644
--- a/frontend/test/metabase/scenarios/dashboard/title-drill.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/title-drill.cy.spec.js
@@ -1,8 +1,10 @@
 import { signIn, restore } from "__support__/cypress";
 
 describe("scenarios > dashboard > title drill", () => {
-  before(restore);
-  beforeEach(signIn);
+  beforeEach(() => {
+    restore();
+    signIn();
+  });
 
   it("should let you click through the title to the query builder", () => {
     createDashboard(dashId => {
diff --git a/frontend/test/metabase/scenarios/home/activity-page.cy.spec.js b/frontend/test/metabase/scenarios/home/activity-page.cy.spec.js
index 58e47b1fa1b8e6a4245922a6c8e94ce0d4bf4eda..dd3ac17a319dd804c5388cb0dd9cebf04b735c83 100644
--- a/frontend/test/metabase/scenarios/home/activity-page.cy.spec.js
+++ b/frontend/test/metabase/scenarios/home/activity-page.cy.spec.js
@@ -8,8 +8,10 @@ import {
 //Replaces HomepageApp.e2e.spec.js
 
 describe("metabase > scenarios > home > activity-page", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should show test startup activity ", () => {
     cy.visit("/activity");
diff --git a/frontend/test/metabase/scenarios/home/overworld.cy.spec.js b/frontend/test/metabase/scenarios/home/overworld.cy.spec.js
index 9709fe383c4db9691c946cdbb23a047c5b8b4400..e4b389446b02ca31a76d391bbd464f9819738dee 100644
--- a/frontend/test/metabase/scenarios/home/overworld.cy.spec.js
+++ b/frontend/test/metabase/scenarios/home/overworld.cy.spec.js
@@ -5,7 +5,7 @@ import {
 } from "__support__/cypress";
 
 describe("scenarios > home > overworld", () => {
-  before(restore);
+  beforeEach(restore);
 
   describe("content management", () => {
     describe("as admin", () => {
diff --git a/frontend/test/metabase/scenarios/permissions.cy.spec.js b/frontend/test/metabase/scenarios/permissions.cy.spec.js
index d93c9cb2eea294edc5c393970a6ea0849238f88a..cfbc0d134e334b89d0dbb8db753e9296eb42405a 100644
--- a/frontend/test/metabase/scenarios/permissions.cy.spec.js
+++ b/frontend/test/metabase/scenarios/permissions.cy.spec.js
@@ -1,7 +1,7 @@
 import { signIn, restore } from "__support__/cypress";
 
 describe("scenarios > permissions", () => {
-  before(restore);
+  beforeEach(restore);
 
   const PATHS = [
     "/dashboard/1",
diff --git a/frontend/test/metabase/scenarios/pulse/pulse.cy.spec.js b/frontend/test/metabase/scenarios/pulse/pulse.cy.spec.js
index 24b313abe17ed4152c6d168e43d2438f6668bc35..9ec17e4cbf58f30fbd479153200d7ed5c38386af 100644
--- a/frontend/test/metabase/scenarios/pulse/pulse.cy.spec.js
+++ b/frontend/test/metabase/scenarios/pulse/pulse.cy.spec.js
@@ -14,8 +14,10 @@ const MOCK_PULSE_FORM_INPUT = {
 };
 
 describe("scenarios > pulse", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
   it("should be able get to the new pulse page from the nav bar", () => {
     cy.visit("/");
 
@@ -31,8 +33,8 @@ describe("scenarios > pulse", () => {
 
     cy.visit("/pulse/create");
 
-    cy.get('[placeholder="Important metrics"]')
-      .wait(100)
+    cy.findByPlaceholderText("Important metrics")
+      .click()
       .type("pulse title");
 
     cy.contains("Select a question").click();
@@ -47,20 +49,44 @@ describe("scenarios > pulse", () => {
     cy.contains("pulse title");
   });
 
-  it("should load existing pulses", () => {
-    cy.visit("/collection/root");
-    cy.contains("pulse title").click({ force: true });
-    cy.contains("18,760");
-  });
+  describe("existing pulses", () => {
+    beforeEach(() => {
+      cy.server();
+      // Create new pulse without relying on the previous test
+      cy.request("POST", "/api/pulse", {
+        name: "pulse title",
+        cards: [{ id: 2, include_csv: false, include_xls: false }],
+        channels: [
+          {
+            channel_type: "email",
+            details: {},
+            enabled: true,
+            recipients: [],
+            schedule_day: "mon",
+            schedule_frame: "first",
+            schedule_hour: 8,
+            schedule_type: "daily",
+          },
+        ],
+        skip_if_empty: false,
+      });
+    });
 
-  it("should edit existing pulses", () => {
-    cy.visit("/pulse/1");
-    cy.get('[placeholder="Important metrics"]')
-      .clear()
-      .type("new pulse title");
+    it("should load existing pulses", () => {
+      cy.visit("/collection/root");
+      cy.contains("pulse title").click({ force: true });
+      cy.contains("18,760");
+    });
 
-    cy.contains("Save changes").click();
-    cy.url().should("match", /\/collection\/root$/);
-    cy.contains("new pulse title");
+    it("should edit existing pulses", () => {
+      cy.visit("/pulse/1");
+      cy.get('[placeholder="Important metrics"]')
+        .clear()
+        .type("new pulse title");
+
+      cy.contains("Save changes").click();
+      cy.url().should("match", /\/collection\/root$/);
+      cy.contains("new pulse title");
+    });
   });
 });
diff --git a/frontend/test/metabase/scenarios/question/data_ref.cy.spec.js b/frontend/test/metabase/scenarios/question/data_ref.cy.spec.js
index 562f9e420266865aa9b99aa4bfc679ad7d80e16d..87a34ffb0707d053b788486f42bb1d94429f3ccc 100644
--- a/frontend/test/metabase/scenarios/question/data_ref.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/data_ref.cy.spec.js
@@ -1,8 +1,10 @@
 import { signInAsAdmin, restore } from "__support__/cypress";
 
 describe("scenarios > question > data reference sidebar", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should load needed data", () => {
     cy.visit("/question/new");
diff --git a/frontend/test/metabase/scenarios/question/downloads.cy.spec.js b/frontend/test/metabase/scenarios/question/downloads.cy.spec.js
index e13b05dec442420bad7839d35ddf00af2f10ea6a..c5559ce96b060074adffb8a36daa992f98e65a40 100644
--- a/frontend/test/metabase/scenarios/question/downloads.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/downloads.cy.spec.js
@@ -9,8 +9,8 @@ const testCases = [
 ];
 
 describe("scenarios > question > download", () => {
-  before(restore);
   beforeEach(() => {
+    restore();
     signInAsAdmin();
   });
 
diff --git a/frontend/test/metabase/scenarios/question/loading.cy.spec.js b/frontend/test/metabase/scenarios/question/loading.cy.spec.js
index 5fb0627e13381485f8be54e77b4df92cbf73821d..6fd3c77a6f5fa162b37ac0e99ca88af8e22f53be 100644
--- a/frontend/test/metabase/scenarios/question/loading.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/loading.cy.spec.js
@@ -1,8 +1,10 @@
 import { signInAsAdmin, restore } from "__support__/cypress";
 
 describe("scenarios > question > loading behavior", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should preload tables on the new question page", () => {
     cy.server();
diff --git a/frontend/test/metabase/scenarios/question/native_subquery.cy.spec.js b/frontend/test/metabase/scenarios/question/native_subquery.cy.spec.js
index 6613577d23f2072a6a48403cd812bae672cb8f02..6ea4e627652da0c584e4abcf13ee351072f16f3a 100644
--- a/frontend/test/metabase/scenarios/question/native_subquery.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/native_subquery.cy.spec.js
@@ -1,8 +1,10 @@
 import { signInAsAdmin, restore, signIn } from "__support__/cypress";
 
 describe("scenarios > question > native subquery", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should allow a user with no data access to execute a native subquery", () => {
     // Create the initial SQL question and followup nested question
diff --git a/frontend/test/metabase/scenarios/question/nested.cy.spec.js b/frontend/test/metabase/scenarios/question/nested.cy.spec.js
index 8af02c5c08e9eb7ff02ae1229c9d6d9863180486..56237792619b4c46dd36dcbe3910887fcbe7f956 100644
--- a/frontend/test/metabase/scenarios/question/nested.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/nested.cy.spec.js
@@ -11,7 +11,7 @@ import { SAMPLE_DATASET } from "__support__/cypress_sample_dataset";
 const { ORDERS, ORDERS_ID, PRODUCTS } = SAMPLE_DATASET;
 
 describe("scenarios > question > nested (metabase#12568)", () => {
-  before(() => {
+  beforeEach(() => {
     restore();
     signInAsAdmin();
 
@@ -45,11 +45,7 @@ describe("scenarios > question > nested (metabase#12568)", () => {
         database: 1,
       },
       display: "scalar",
-      description: null,
       visualization_settings: {},
-      collection_id: null,
-      result_metadata: null,
-      metadata_checksum: null,
     });
 
     // Create a complex native question
@@ -87,16 +83,10 @@ describe("scenarios > question > nested (metabase#12568)", () => {
         database: 1,
       },
       display: "scalar",
-      description: null,
       visualization_settings: {},
-      collection_id: null,
-      result_metadata: null,
-      metadata_checksum: null,
     });
   });
 
-  beforeEach(signInAsAdmin);
-
   it("should allow Distribution on a Saved Simple Question", () => {
     cy.visit("/question/new");
     cy.contains("Simple question").click();
@@ -154,7 +144,7 @@ describe("scenarios > question > nested (metabase#12568)", () => {
 });
 
 describe("scenarios > question > nested", () => {
-  before(() => {
+  beforeEach(() => {
     restore();
     signInAsAdmin();
   });
diff --git a/frontend/test/metabase/scenarios/question/operators.cy.spec.js b/frontend/test/metabase/scenarios/question/operators.cy.spec.js
index a9cba2ce680e6b59c62a8be26024f0019e9ea72c..ae4fc18c56b29fdf91c7c3796d0a9f4d61a3507e 100644
--- a/frontend/test/metabase/scenarios/question/operators.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/operators.cy.spec.js
@@ -1,8 +1,10 @@
 import { restore, signInAsNormalUser, popover } from "__support__/cypress";
 
 describe("operators in questions", () => {
-  before(restore);
-  beforeEach(signInAsNormalUser);
+  beforeEach(() => {
+    restore();
+    signInAsNormalUser();
+  });
 
   const expected = {
     text: {
diff --git a/frontend/test/metabase/scenarios/question/settings.cy.spec.js b/frontend/test/metabase/scenarios/question/settings.cy.spec.js
index d7e4fdd1d12afc7344bc7b85075eab1712f0032d..a4458131357d7dcbd6dbee813a66510dc2e79d05 100644
--- a/frontend/test/metabase/scenarios/question/settings.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/settings.cy.spec.js
@@ -1,8 +1,10 @@
 import { signInAsAdmin, restore, openOrdersTable } from "__support__/cypress";
 
 describe("scenarios > question > settings", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   describe("column settings", () => {
     it("should allow you to remove a column and add two foreign columns", () => {
diff --git a/frontend/test/metabase/scenarios/question/snippets.cy.spec.js b/frontend/test/metabase/scenarios/question/snippets.cy.spec.js
index e291d86e13e5f8542250137424c3ec21ef725d2b..7106d1b6f8461eb0425d3b2eb38ab6f03e339d47 100644
--- a/frontend/test/metabase/scenarios/question/snippets.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/snippets.cy.spec.js
@@ -18,44 +18,61 @@ function _clearAndIterativelyTypeUsingLabel(label, string) {
 //       - There is a related issue: https://github.com/metabase/metabase-enterprise/issues/543
 // TODO: Once the above issue is (re)solved, change back to `signInAsNormalUser`
 describe("scenarios > question > snippets", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should let you create and use a snippet", () => {
     cy.visit("/question/new");
     cy.contains("Native query").click();
 
-    // type a query and highlight some of the text
-    cy.get(".ace_content").as("ace");
-    cy.get("@ace").type(
+    // Type a query and highlight some of the text
+    cy.get(".ace_content").as("editor");
+    cy.get("@editor").type(
       "select 'stuff'" + "{shift}{leftarrow}".repeat("'stuff'".length),
     );
 
-    // add a snippet of that text
+    // Add a snippet of that text
     cy.get(".Icon-snippet").click();
     cy.contains("Create a snippet").click();
 
-    modal()
-      .find("input[name=name]")
-      .type("stuff-snippet");
-    modal()
-      .contains("Save")
-      .click();
+    modal().within(() => {
+      cy.findByLabelText("Give your snippet a name").type("stuff-snippet");
+      cy.findByText("Save").click();
+    });
 
     // SQL editor should get updated automatically
-    cy.get("@ace").contains("select {{snippet: stuff-snippet}}");
+    cy.get("@editor").contains("select {{snippet: stuff-snippet}}");
 
-    // run the query and check the displayed scalar
+    // Run the query and check the value
     cy.get(".NativeQueryEditor .Icon-play").click();
     cy.get(".ScalarValue").contains("stuff");
   });
 
   it("should let you edit snippet", () => {
-    // open the snippet edit modal
+    // Re-create the above snippet via API without the need to rely on the previous test
+    cy.request("POST", "/api/native-query-snippet", {
+      name: "stuff-snippet",
+      content: "stuff",
+    });
+
+    cy.visit("/question/new");
+    cy.findByText("Native query").click();
+
+    // Populate the native editor first
+    // 1. select
+    cy.get(".ace_content").as("editor");
+    cy.get("@editor").type("select ");
+    // 2. snippet
+    cy.get(".Icon-snippet").click();
+    cy.findByText("stuff-snippet").click();
+
+    // Open the snippet edit modal
     cy.get(".Icon-chevrondown").click({ force: true });
     cy.findByText("Edit").click();
 
-    // update the name and content
+    // Update the name and content
     modal().within(() => {
       cy.findByText("Editing stuff-snippet");
 
@@ -69,9 +86,9 @@ describe("scenarios > question > snippets", () => {
     });
 
     // SQL editor should get updated automatically
-    cy.get(".ace_content").contains("select {{snippet: Math}}");
+    cy.get("@editor").contains("select {{snippet: Math}}");
 
-    // run the query and check the displayed scalar
+    // Run the query and check the new value
     cy.get(".NativeQueryEditor .Icon-play").click();
     cy.get(".ScalarValue").contains("2");
   });
diff --git a/frontend/test/metabase/scenarios/question/trendline.cy.spec.js b/frontend/test/metabase/scenarios/question/trendline.cy.spec.js
index 0d441f650807302c5ea3c63121ec78b2a4721e8e..022b8dd1d1a07c3f243d966cc9412dcad7489759 100644
--- a/frontend/test/metabase/scenarios/question/trendline.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/trendline.cy.spec.js
@@ -6,8 +6,10 @@ import {
 } from "__support__/cypress";
 
 describe("scenarios > question > trendline", () => {
-  before(restore);
-  beforeEach(signInAsNormalUser);
+  beforeEach(() => {
+    restore();
+    signInAsNormalUser();
+  });
 
   it.skip("displays trendline when there are multiple numeric outputs (for simple question) (metabase#12781)", () => {
     // Create question: orders summarized with "Average of Subtotal" and "Sum of Total" by CreatedAt:Year
diff --git a/frontend/test/metabase/scenarios/question/view.cy.spec.js b/frontend/test/metabase/scenarios/question/view.cy.spec.js
index 84bfe35308bb53372f550eac4d805ff58595eb60..686c715c4290070d2de0d2b77440bba5ae918041 100644
--- a/frontend/test/metabase/scenarios/question/view.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/view.cy.spec.js
@@ -11,8 +11,10 @@ import { SAMPLE_DATASET } from "__support__/cypress_sample_dataset";
 const { PRODUCTS } = SAMPLE_DATASET;
 
 describe("scenarios > question > view", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   describe("summarize sidebar", () => {
     it("should summarize by category and show a bar chart", () => {
@@ -92,10 +94,9 @@ describe("scenarios > question > view", () => {
     });
   });
 
-  describe.only("apply filters without data permissions", () => {
-    before(() => {
+  describe("apply filters without data permissions", () => {
+    beforeEach(() => {
       // All users upgraded to collection view access
-      signInAsAdmin();
       cy.visit("/admin/permissions/collections");
       cy.get(".Icon-close")
         .first()
diff --git a/frontend/test/metabase/scenarios/reference/databases.cy.spec.js b/frontend/test/metabase/scenarios/reference/databases.cy.spec.js
index 68ec8c10391be535a605aac4bec1a68deff0ec09..fabc026e902896124048854df5db81b1f7473317 100644
--- a/frontend/test/metabase/scenarios/reference/databases.cy.spec.js
+++ b/frontend/test/metabase/scenarios/reference/databases.cy.spec.js
@@ -1,8 +1,10 @@
 import { signInAsAdmin, restore } from "__support__/cypress";
 
 describe("scenarios > reference > databases", () => {
-  before(restore);
-  beforeEach(signInAsAdmin);
+  beforeEach(() => {
+    restore();
+    signInAsAdmin();
+  });
 
   it("should see the listing", () => {
     cy.visit("/reference/databases");
diff --git a/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js b/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js
index f55f77d0e09a0f75d72362bedc385f0f6025c60a..db0c5253f3f86b2a3026845b3efac7ba7ea54ac6 100644
--- a/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js
+++ b/frontend/test/metabase/scenarios/visualizations/drillthroughs/chart_drill.cy.spec.js
@@ -331,9 +331,7 @@ describe("scenarios > visualizations > drillthroughs > chart drill", () => {
   });
 
   describe("for an unsaved question", () => {
-    before(() => {
-      restore();
-      signInAsAdmin();
+    beforeEach(() => {
       // Build a question without saving
       openProductsTable();
       cy.findByText("Summarize").click();
diff --git a/frontend/test/metabase/scenarios/visualizations/drillthroughs/dash_drill.cy.spec.js b/frontend/test/metabase/scenarios/visualizations/drillthroughs/dash_drill.cy.spec.js
index 5972426d375234020d51eb32a5fc805d0314d5d7..a46e5a6e8d4ca0db1fe69e82f4501c22252bb29d 100644
--- a/frontend/test/metabase/scenarios/visualizations/drillthroughs/dash_drill.cy.spec.js
+++ b/frontend/test/metabase/scenarios/visualizations/drillthroughs/dash_drill.cy.spec.js
@@ -12,13 +12,14 @@ const Q2 = {
 
 describe("scenarios > visualizations > drillthroughs > dash_drill", () => {
   describe("card title click action", () => {
+    beforeEach(() => {
+      restore();
+      signInAsAdmin();
+    });
     describe("from a scalar card", () => {
       const DASHBOARD_NAME = "Scalar Dash";
 
-      before(() => {
-        restore();
-        signInAsAdmin();
-
+      beforeEach(() => {
         // Convert the second question to a scalar (Orders, summarized by count)
         cy.request("PUT", `/api/card/${Q2.id}`, {
           display: "scalar",
@@ -41,10 +42,7 @@ describe("scenarios > visualizations > drillthroughs > dash_drill", () => {
     describe("from a scalar with active filter applied", () => {
       const DASHBOARD_NAME = "Scalar w Filter Dash";
 
-      before(() => {
-        restore();
-        signInAsAdmin();
-
+      beforeEach(() => {
         // Convert Q2 to a scalar with a filter applied
         cy.request("PUT", `/api/card/${Q2.id}`, {
           dataset_query: {
@@ -75,10 +73,7 @@ describe("scenarios > visualizations > drillthroughs > dash_drill", () => {
       const DASHBOARD_NAME = "Multiscalar Dash";
       const CARD_NAME = "Multiscalar Question";
 
-      before(() => {
-        restore();
-        signInAsAdmin();
-
+      beforeEach(() => {
         // Create muliscalar card
         cy.request("POST", "/api/card", {
           name: CARD_NAME,
@@ -131,11 +126,6 @@ describe("scenarios > visualizations > drillthroughs > dash_drill", () => {
     });
 
     describe("saved visualizations", () => {
-      beforeEach(() => {
-        restore();
-        signInAsAdmin();
-      });
-
       it.skip("should respect visualization type when entering a question from a dashboard (metabase#13415)", () => {
         const QUESTION_NAME = "13415";
 
@@ -159,7 +149,6 @@ describe("scenarios > visualizations > drillthroughs > dash_drill", () => {
             type: "query",
           },
           display: "table",
-          description: null,
           visualization_settings: {
             "table.pivot_column": "CATEGORY",
             "table.cell_column": "count",