From 0f54f772edbd23a9ce60525d6279c3df84029fea Mon Sep 17 00:00:00 2001 From: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Date: Fri, 6 Oct 2023 14:40:04 +0200 Subject: [PATCH] Remove and disallow H2 from E2E tests (#34364) * Make it easy to add SQLite database * Replace H2 with SQLite in E2E tests * Remove long unused E2E reproduction It's been sufficiently covered with backend tests. * Remove H2 database helper from E2E tests --- e2e/support/commands.js | 2 +- .../commands/database/addH2SampleDatabase.js | 16 ----- .../commands/database/addSQLiteDatabase.js | 27 ++++++++ .../database-prompt-banner.cy.spec.js | 2 +- .../reproductions/14145.cy.spec.js | 68 ------------------- ...n-before-it-is-possible-to-save.cy.spec.js | 4 +- .../onboarding/home/homepage.cy.spec.js | 10 +-- .../onboarding/reference/databases.cy.spec.js | 2 +- e2e/test/scenarios/question/new.cy.spec.js | 2 +- 9 files changed, 38 insertions(+), 95 deletions(-) delete mode 100644 e2e/support/commands/database/addH2SampleDatabase.js create mode 100644 e2e/support/commands/database/addSQLiteDatabase.js delete mode 100644 e2e/test/scenarios/native-filters/reproductions/14145.cy.spec.js diff --git a/e2e/support/commands.js b/e2e/support/commands.js index 2a070cb4f5a..9ee7e01d14b 100644 --- a/e2e/support/commands.js +++ b/e2e/support/commands.js @@ -23,7 +23,7 @@ import "./commands/user/authentication"; import "./commands/permissions/updatePermissions"; import "./commands/permissions/sandboxTable"; -import "./commands/database/addH2SampleDatabase"; +import "./commands/database/addSQLiteDatabase"; import "./commands/visibility/isVisibleInPopover"; import "./commands/visibility/findByTextEnsureVisible"; diff --git a/e2e/support/commands/database/addH2SampleDatabase.js b/e2e/support/commands/database/addH2SampleDatabase.js deleted file mode 100644 index 2f957bd1e29..00000000000 --- a/e2e/support/commands/database/addH2SampleDatabase.js +++ /dev/null @@ -1,16 +0,0 @@ -Cypress.Commands.add( - "addH2SampleDatabase", - ({ name, auto_run_queries = false, is_full_sync = false } = {}) => { - cy.log(`Add another H2 sample database DB called "${name}"`); - cy.request("POST", "/api/database", { - engine: "h2", - name, - details: { - db: "zip:./target/uberjar/metabase.jar!/sample-database.db;USER=GUEST;PASSWORD=guest", - }, - auto_run_queries, - is_full_sync, - schedules: {}, - }); - }, -); diff --git a/e2e/support/commands/database/addSQLiteDatabase.js b/e2e/support/commands/database/addSQLiteDatabase.js new file mode 100644 index 00000000000..69f20e1fbdb --- /dev/null +++ b/e2e/support/commands/database/addSQLiteDatabase.js @@ -0,0 +1,27 @@ +Cypress.Commands.add( + "addSQLiteDatabase", + ({ name = "sqlite", auto_run_queries = true, is_full_sync = true } = {}) => { + cy.log(`Add SQLite database DB called "${name}"`); + cy.request("POST", "/api/database", { + engine: "sqlite", + name, + details: { db: "./resources/sqlite-fixture.db" }, + auto_run_queries, + is_full_sync, + schedules: { + cache_field_values: { + schedule_day: null, + schedule_frame: null, + schedule_hour: 0, + schedule_type: "daily", + }, + metadata_sync: { + schedule_day: null, + schedule_frame: null, + schedule_hour: null, + schedule_type: "hourly", + }, + }, + }); + }, +); diff --git a/e2e/test/scenarios/admin/databases/database-prompt-banner.cy.spec.js b/e2e/test/scenarios/admin/databases/database-prompt-banner.cy.spec.js index a63c16d0475..5528e9b40df 100644 --- a/e2e/test/scenarios/admin/databases/database-prompt-banner.cy.spec.js +++ b/e2e/test/scenarios/admin/databases/database-prompt-banner.cy.spec.js @@ -105,7 +105,7 @@ describeEE("database prompt banner", () => { it("should not render for any other condition", () => { // Adding a second database should prevent the database prompt - cy.addH2SampleDatabase({ name: "H2 DB" }); + cy.addSQLiteDatabase(); visitFullAppEmbeddingUrl({ url: "/", diff --git a/e2e/test/scenarios/native-filters/reproductions/14145.cy.spec.js b/e2e/test/scenarios/native-filters/reproductions/14145.cy.spec.js deleted file mode 100644 index 98826fb928a..00000000000 --- a/e2e/test/scenarios/native-filters/reproductions/14145.cy.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -import { restore } from "e2e/support/helpers"; -import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database"; - -const { PRODUCTS } = SAMPLE_DATABASE; - -const filter = { - id: "774521fb-e03f-3df1-f2ae-e952c97035e3", - name: "FILTER", - "display-name": "Filter", - type: "dimension", - dimension: ["field-id", PRODUCTS.CATEGORY], - "widget-type": "category", - default: null, -}; - -const nativeQuery = { - name: "14145", - native: { - query: "SELECT COUNT(*) FROM products WHERE {{filter}}", - "template-tags": { - filter, - }, - }, -}; - -describe.skip("issue 14145", () => { - beforeEach(() => { - cy.intercept("POST", "/api/dataset").as("dataset"); - - restore(); - cy.signInAsAdmin(); - - cy.addH2SampleDatabase({ - name: "Sample2", - auto_run_queries: true, - is_full_sync: true, - }); - - cy.createNativeQuestion(nativeQuery, { visitQuestion: true }); - }); - - it("`field-id` should update when database source is changed (metabase#14145)", () => { - // Change the source from "Sample Database" to the other database - // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage - cy.findByText(/Open Editor/i).click(); - - cy.get(".GuiBuilder-data").as("source").contains("Sample Database").click(); - // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage - cy.findByText("Sample2").click(); - - // First assert on the UI - cy.icon("variable").click(); - // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage - cy.findByText(/Field to map to/) - .siblings("a") - .contains("Category"); - - // Rerun the query and assert on the dimension (field-id) that didn't change - cy.findByTestId("native-query-editor-container").icon("play").click(); - - cy.wait("@dataset").then(xhr => { - const { dimension } = - xhr.response.body.json_query.native["template-tags"].FILTER; - - expect(dimension).not.to.contain(PRODUCTS.CATEGORY); - }); - }); -}); diff --git a/e2e/test/scenarios/native/reproductions/18148-save-button-before-it-is-possible-to-save.cy.spec.js b/e2e/test/scenarios/native/reproductions/18148-save-button-before-it-is-possible-to-save.cy.spec.js index 175e5f591f7..edf7e19a594 100644 --- a/e2e/test/scenarios/native/reproductions/18148-save-button-before-it-is-possible-to-save.cy.spec.js +++ b/e2e/test/scenarios/native/reproductions/18148-save-button-before-it-is-possible-to-save.cy.spec.js @@ -1,13 +1,13 @@ import { restore, openNativeEditor } from "e2e/support/helpers"; -const dbName = "Sample2"; +const dbName = "sqlite"; describe("issue 18148", () => { beforeEach(() => { restore(); cy.signInAsAdmin(); - cy.addH2SampleDatabase({ + cy.addSQLiteDatabase({ name: dbName, }); diff --git a/e2e/test/scenarios/onboarding/home/homepage.cy.spec.js b/e2e/test/scenarios/onboarding/home/homepage.cy.spec.js index 4143633a5f6..3d3082bb4f4 100644 --- a/e2e/test/scenarios/onboarding/home/homepage.cy.spec.js +++ b/e2e/test/scenarios/onboarding/home/homepage.cy.spec.js @@ -53,15 +53,15 @@ describe("scenarios > home > homepage", () => { it("should display x-rays for a user database", () => { cy.signInAsAdmin(); - cy.addH2SampleDatabase({ name: "H2" }); + cy.addSQLiteDatabase(); cy.visit("/"); cy.wait("@getXrayCandidates"); // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage cy.findByText("Here are some explorations of"); - cy.findAllByRole("link").contains("H2"); + cy.findAllByRole("link").contains("sqlite"); // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage - cy.findByText("Orders").click(); + cy.findByText("Number With Nulls").click(); cy.wait("@getXrayDashboard"); // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage @@ -70,7 +70,7 @@ describe("scenarios > home > homepage", () => { it("should allow switching between multiple schemas for x-rays", () => { cy.signInAsAdmin(); - cy.addH2SampleDatabase({ name: "H2" }); + cy.addSQLiteDatabase({ name: "sqlite" }); cy.intercept("/api/automagic-*/database/**", getXrayCandidates()); cy.visit("/"); @@ -78,7 +78,7 @@ describe("scenarios > home > homepage", () => { cy.findByText(/Here are some explorations of the/); // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage cy.findByText("public"); - cy.findAllByRole("link").contains("H2"); + cy.findAllByRole("link").contains("sqlite"); // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage cy.findByText("Orders"); // eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage diff --git a/e2e/test/scenarios/onboarding/reference/databases.cy.spec.js b/e2e/test/scenarios/onboarding/reference/databases.cy.spec.js index ab907a01a27..2b7c0d71b2d 100644 --- a/e2e/test/scenarios/onboarding/reference/databases.cy.spec.js +++ b/e2e/test/scenarios/onboarding/reference/databases.cy.spec.js @@ -66,7 +66,7 @@ describe("scenarios > reference > databases", () => { describe("multiple databases sorting order", () => { beforeEach(() => { ["d", "b", "a", "c"].forEach(name => { - cy.addH2SampleDatabase({ name }); + cy.addSQLiteDatabase({ name }); }); }); diff --git a/e2e/test/scenarios/question/new.cy.spec.js b/e2e/test/scenarios/question/new.cy.spec.js index cb31ec259e4..e6c9bb7c6de 100644 --- a/e2e/test/scenarios/question/new.cy.spec.js +++ b/e2e/test/scenarios/question/new.cy.spec.js @@ -35,7 +35,7 @@ describe("scenarios > question > new", () => { it("data selector popover should not be too small (metabase#15591)", () => { // Add 10 more databases for (let i = 0; i < 10; i++) { - cy.addH2SampleDatabase({ name: "Sample" + i }); + cy.addSQLiteDatabase({ name: "Sample" + i }); } startNewQuestion(); -- GitLab