diff --git a/frontend/src/metabase/query_builder/containers/test-utils.tsx b/frontend/src/metabase/query_builder/containers/test-utils.tsx
index d620e34219444d1b7bc4647775a9bc15a597a914..04e45e34c5f4f6d539bb848907f5b96030980488 100644
--- a/frontend/src/metabase/query_builder/containers/test-utils.tsx
+++ b/frontend/src/metabase/query_builder/containers/test-utils.tsx
@@ -285,6 +285,8 @@ export const setup = async ({
     },
   );
 
+  await waitForLoadingRequests(getState);
+  await waitForLoaderToBeRemoved();
   await waitForLoadingRequests(getState);
 
   return {
diff --git a/frontend/src/metabase/questions/actions.ts b/frontend/src/metabase/questions/actions.ts
index 359bc84d2d09f0fecc388ab5465c28cd484c83f3..4931a356a405afecbc02bd2a9d57ae91675bb67d 100644
--- a/frontend/src/metabase/questions/actions.ts
+++ b/frontend/src/metabase/questions/actions.ts
@@ -2,6 +2,7 @@ import { loadMetadataForDependentItems } from "metabase/redux/metadata";
 import { getMetadata } from "metabase/selectors/metadata";
 import * as Lib from "metabase-lib";
 import Question from "metabase-lib/v1/Question";
+import { getQuestionVirtualTableId } from "metabase-lib/v1/metadata/utils/saved-questions";
 import type { Card } from "metabase-types/api";
 import type { Dispatch, GetState } from "metabase-types/store";
 
@@ -13,11 +14,16 @@ export const loadMetadataForCard =
   (card: Card, options?: LoadMetadataOptions) =>
   async (dispatch: Dispatch, getState: GetState) => {
     const question = new Question(card, getMetadata(getState()));
-    const dependencies = Lib.dependentMetadata(question.query());
+    const loadAdhocMetadata =
+      question.isSaved() && question.type() !== "question";
+    const dependencies = [...Lib.dependentMetadata(question.query())];
+    if (loadAdhocMetadata) {
+      const tableId = getQuestionVirtualTableId(question.id());
+      dependencies.push({ id: tableId, type: "table" });
+    }
     await dispatch(loadMetadataForDependentItems(dependencies, options));
 
-    // metadata for an ad-hoc question based on this question
-    if (question.isSaved() && question.type() !== "question") {
+    if (loadAdhocMetadata) {
       const questionWithMetadata = new Question(card, getMetadata(getState()));
       const adhocQuestion = questionWithMetadata.composeQuestionAdhoc();
       const adhocDependencies = Lib.dependentMetadata(adhocQuestion.query());