diff --git a/.circleci/config.yml b/.circleci/config.yml
index a6fb47de30285ca595858598dd8b4ea6c882bb8d..be99866e8be9b8b65c368db06ce29d59016b7c19 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -169,11 +169,11 @@ executors:
           ACCEPT_EULA: Y
           SA_PASSWORD: 'P@ssw0rd'
 
-  fe-mongo:
+  fe-mongo-4:
     working_directory: /home/circleci/metabase/metabase/
     docker:
       - image: circleci/clojure:lein-2.8.1-node-browsers
-      - image: circleci/mongo:4.0
+      - image: metabase/qa-databases:mongo-sample-4.0
 
   fe-postgres-12:
     working_directory: /home/circleci/metabase/metabase/
@@ -1057,13 +1057,12 @@ workflows:
           <<: *Matrix
 
       - fe-tests-cypress:
-          name: fe-tests-cypress-mongo-<< matrix.edition >>
+          name: fe-tests-cypress-mongo-4-<< matrix.edition >>
           requires:
             - build-uberjar-<< matrix.edition >>
             - fe-deps
-          e: fe-mongo
+          e: fe-mongo-4
           cypress-group: "mongo"
-          driver: mongo
           only-single-database: true
           test-files-location: frontend/test/metabase-db/mongo
           <<: *Matrix
diff --git a/frontend/test/__support__/cypress.js b/frontend/test/__support__/cypress.js
index 355778278d6f996e21be78e09734a229278a905d..e1d932e81c2edf772b6338e47fcaae974d353ebb 100644
--- a/frontend/test/__support__/cypress.js
+++ b/frontend/test/__support__/cypress.js
@@ -200,8 +200,47 @@ export function createBasicAlert({ firstAlert, includeNormal } = {}) {
   cy.findByText("Let's set up your alert").should("not.exist");
 }
 
-// Functions specific to QA databases that we started supporting recently in CI
+/*****************************************
+ **            QA DATABASES             **
+ ******************************************/
+export function addMongoDatabase(db_display_name = "QA Mongo4") {
+  // https://hub.docker.com/layers/metabase/qa-databases/mongo-sample-4.0/images/sha256-3f568127248b6c6dba0b114b65dc3b3bf69bf4c804310eb57b4e3de6eda989cf
+  cy.log("**-- Adding Mongo 4 DB --**");
+  cy.request("POST", "/api/database", {
+    engine: "mongo",
+    name: db_display_name,
+    details: {
+      host: "localhost",
+      dbname: "sample",
+      port: 27017,
+      user: "metabase",
+      pass: "metasample123",
+      authdb: "admin",
+      "additional-options": null,
+      "use-srv": false,
+      "tunnel-enabled": false,
+    },
+    auto_run_queries: true,
+    is_full_sync: true,
+    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",
+      },
+    },
+  });
+}
+
 export function addPostgresDatabase(db_display_name = "QA Postgres12") {
+  cy.log("**-- Adding Postgres 12 DB --**");
   cy.request("POST", "/api/database", {
     engine: "postgres",
     name: db_display_name,
diff --git a/frontend/test/metabase-db/mongo/add.cy.spec.js b/frontend/test/metabase-db/mongo/add.cy.spec.js
index dde062aa147700199c5f6587f46b2c7ea4521e5f..e2b35b43a77ba4df9c3f2fc6e0b9e059214e081e 100644
--- a/frontend/test/metabase-db/mongo/add.cy.spec.js
+++ b/frontend/test/metabase-db/mongo/add.cy.spec.js
@@ -5,23 +5,6 @@ import {
   typeAndBlurUsingLabel,
 } from "__support__/cypress";
 
-function addMongoDatabase() {
-  cy.visit("/admin/databases/create");
-  cy.contains("Database type")
-    .closest(".Form-field")
-    .find("a")
-    .click();
-  cy.contains("MongoDB").click({ force: true });
-  cy.contains("Additional Mongo connection");
-
-  typeAndBlurUsingLabel("Name", "MongoDB");
-  typeAndBlurUsingLabel("Database name", "admin");
-
-  cy.findByText("Save")
-    .should("not.be.disabled")
-    .click();
-}
-
 describe("mongodb > admin > add", () => {
   beforeEach(() => {
     restore();
@@ -30,12 +13,29 @@ describe("mongodb > admin > add", () => {
   });
 
   it("should add a database and redirect to listing", () => {
-    cy.route({
-      method: "POST",
-      url: "/api/database",
-    }).as("createDatabase");
+    cy.route("POST", "/api/database").as("createDatabase");
 
-    addMongoDatabase();
+    cy.visit("/admin/databases/create");
+    cy.contains("Database type")
+      .closest(".Form-field")
+      .find("a")
+      .click();
+    cy.contains("MongoDB").click({ force: true });
+    cy.contains("Additional Mongo connection");
+
+    typeAndBlurUsingLabel("Name", "QA Mongo4");
+    typeAndBlurUsingLabel("Host", "localhost");
+    cy.findByPlaceholderText("27017")
+      .click()
+      .type("27017");
+    typeAndBlurUsingLabel("Database name", "sample");
+    typeAndBlurUsingLabel("Username", "metabase");
+    typeAndBlurUsingLabel("Password", "metasample123");
+    typeAndBlurUsingLabel("Authentication Database", "admin");
+
+    cy.findByText("Save")
+      .should("not.be.disabled")
+      .click();
 
     cy.wait("@createDatabase");
 
@@ -45,14 +45,4 @@ describe("mongodb > admin > add", () => {
       .contains("I'm good thanks")
       .click();
   });
-
-  it("can query a Mongo database", () => {
-    addMongoDatabase();
-    cy.url().should("match", /\/admin\/databases\?created=\d+$/);
-    cy.visit("/question/new");
-    cy.contains("Simple question").click();
-    cy.contains("MongoDB").click();
-    cy.contains("Version").click();
-    cy.contains("featureCompatibilityVersion");
-  });
 });
diff --git a/frontend/test/metabase-db/mongo/query.cy.spec.js b/frontend/test/metabase-db/mongo/query.cy.spec.js
index 2ed85640ff4a579da433c3ddc12b69b75f907ce3..823b1b815d5a5dd783c4e70e1d76caaa66bcb6d3 100644
--- a/frontend/test/metabase-db/mongo/query.cy.spec.js
+++ b/frontend/test/metabase-db/mongo/query.cy.spec.js
@@ -3,42 +3,9 @@ import {
   restore,
   modal,
   signInAsNormalUser,
+  addMongoDatabase,
 } from "__support__/cypress";
 
-function addMongoDatabase() {
-  cy.request("POST", "/api/database", {
-    engine: "mongo",
-    name: "MongoDB",
-    details: {
-      host: "localhost",
-      dbname: "admin",
-      port: 27017,
-      user: null,
-      pass: null,
-      authdb: null,
-      "additional-options": null,
-      "use-srv": false,
-      "tunnel-enabled": false,
-    },
-    auto_run_queries: true,
-    is_full_sync: true,
-    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",
-      },
-    },
-  });
-}
-
 describe("mongodb > user > query", () => {
   before(() => {
     restore();
@@ -46,63 +13,75 @@ describe("mongodb > user > query", () => {
     addMongoDatabase();
   });
 
-  beforeEach(() => {
-    signInAsNormalUser();
+  context("as an admin", () => {
+    it("can query a Mongo database", () => {
+      queryMongoDB();
+    });
   });
 
-  it("can query a Mongo database as a user", () => {
-    cy.visit("/question/new");
-    cy.contains("Simple question").click();
-    cy.contains("MongoDB").click();
-    cy.contains("Version").click();
-    cy.contains("featureCompatibilityVersion");
-  });
+  context("as a user", () => {
+    beforeEach(() => {
+      signInAsNormalUser();
+    });
+
+    it("can query a Mongo database", () => {
+      queryMongoDB();
+    });
 
-  it.only("can write a native MongoDB query", () => {
-    cy.visit("/question/new");
-    cy.contains("Native query").click();
-    cy.contains("MongoDB").click();
+    it("can write a native MongoDB query", () => {
+      cy.visit("/question/new");
+      cy.contains("Native query").click();
+      cy.contains("QA Mongo4").click();
 
-    cy.get(".ace_content").type(`[ { $count: "Total" } ]`, {
-      parseSpecialCharSequences: false,
+      cy.get(".ace_content").type(`[ { $count: "Total" } ]`, {
+        parseSpecialCharSequences: false,
+      });
+      cy.get(".NativeQueryEditor .Icon-play").click();
+      cy.contains("1");
     });
-    cy.get(".NativeQueryEditor .Icon-play").click();
-    cy.contains("1");
-  });
 
-  it("can save a native MongoDB query", () => {
-    cy.server();
-    cy.route("POST", "/api/card").as("createQuestion");
+    it("can save a native MongoDB query", () => {
+      cy.server();
+      cy.route("POST", "/api/card").as("createQuestion");
 
-    cy.visit("/question/new");
-    cy.contains("Native query").click();
-    cy.contains("MongoDB").click();
+      cy.visit("/question/new");
+      cy.contains("Native query").click();
+      cy.contains("QA Mongo4").click();
 
-    cy.get(".ace_content").type(`[ { $count: "Total" } ]`, {
-      parseSpecialCharSequences: false,
-    });
-    cy.get(".NativeQueryEditor .Icon-play").click();
-    cy.contains("1");
+      cy.get(".ace_content").type(`[ { $count: "Total" } ]`, {
+        parseSpecialCharSequences: false,
+      });
+      cy.get(".NativeQueryEditor .Icon-play").click();
+      cy.contains("1");
 
-    // Close the Ace editor because it interferes with the modal for some reason
-    cy.get(".Icon-contract").click();
+      // Close the Ace editor because it interferes with the modal for some reason
+      cy.get(".Icon-contract").click();
 
-    cy.contains("Save").click();
-    modal()
-      .findByLabelText("Name")
-      .focus()
-      .type("mongo count");
-    modal()
-      .contains("button", "Save")
-      .should("not.be.disabled")
-      .click();
+      cy.contains("Save").click();
+      modal()
+        .findByLabelText("Name")
+        .focus()
+        .type("mongo count");
+      modal()
+        .contains("button", "Save")
+        .should("not.be.disabled")
+        .click();
 
-    cy.wait("@createQuestion").then(({ status }) => {
-      expect(status).to.equal(202);
-    });
+      cy.wait("@createQuestion").then(({ status }) => {
+        expect(status).to.equal(202);
+      });
 
-    cy.findByText("Not now").click();
+      cy.findByText("Not now").click();
 
-    cy.url().should("match", /\/question\/\d+$/);
+      cy.url().should("match", /\/question\/\d+$/);
+    });
   });
 });
+
+function queryMongoDB() {
+  cy.visit("/question/new");
+  cy.contains("Simple question").click();
+  cy.contains("QA Mongo4").click();
+  cy.contains("Orders").click();
+  cy.contains("37.65");
+}