diff --git a/src/Frontend/src/components/PermissionGate.spec.ts b/src/Frontend/src/components/PermissionGate.spec.ts
index eb60fc7528..1639d6c7af 100644
--- a/src/Frontend/src/components/PermissionGate.spec.ts
+++ b/src/Frontend/src/components/PermissionGate.spec.ts
@@ -6,7 +6,6 @@ function mountGate(allowed: boolean) {
return render(PermissionGate, {
props: { allowed, reason: "You don't have permission" },
slots: { default: '' },
- global: { directives: { tippy: () => {} } },
});
}
diff --git a/src/Frontend/src/components/configuration/EndpointConnection.spec.ts b/src/Frontend/src/components/configuration/EndpointConnection.spec.ts
index e4b82d55b1..c40ccb700f 100644
--- a/src/Frontend/src/components/configuration/EndpointConnection.spec.ts
+++ b/src/Frontend/src/components/configuration/EndpointConnection.spec.ts
@@ -119,9 +119,6 @@ async function renderComponent({ initialState = {} }: { initialState?: Record {},
- },
stubs: {
RouterLink: true,
},
diff --git a/src/Frontend/src/components/configuration/HealthCheckNotifications.spec.ts b/src/Frontend/src/components/configuration/HealthCheckNotifications.spec.ts
index 4e5fddee42..ebe6972551 100644
--- a/src/Frontend/src/components/configuration/HealthCheckNotifications.spec.ts
+++ b/src/Frontend/src/components/configuration/HealthCheckNotifications.spec.ts
@@ -313,10 +313,6 @@ function renderComponent({ initialState = {} }: { initialState?: Record {},
- },
stubs: {
// RouterLink is used deep inside ServiceControlAvailable; stub it to
// avoid "Failed to resolve component" warnings in unit tests
diff --git a/src/Frontend/src/components/failedmessages/messageGroupButtonPermissions.spec.ts b/src/Frontend/src/components/failedmessages/messageGroupButtonPermissions.spec.ts
index 55f02bcfaa..03d8b74886 100644
--- a/src/Frontend/src/components/failedmessages/messageGroupButtonPermissions.spec.ts
+++ b/src/Frontend/src/components/failedmessages/messageGroupButtonPermissions.spec.ts
@@ -60,7 +60,6 @@ async function renderGroupList(allowedRouteKeys: string[]) {
},
}),
],
- directives: { tippy: () => {} },
},
});
diff --git a/src/Frontend/src/components/messages/SagaDiagram.spec.ts b/src/Frontend/src/components/messages/SagaDiagram.spec.ts
index 0110eba352..8b60403a22 100644
--- a/src/Frontend/src/components/messages/SagaDiagram.spec.ts
+++ b/src/Frontend/src/components/messages/SagaDiagram.spec.ts
@@ -197,10 +197,6 @@ function rendercomponent({ initialState = {} }: { initialState?: { MessageStore?
CodeEditor: true,
CopyToClipboard: true,
},
- directives: {
- // Add stub for tippy directive
- tippy: () => {},
- },
},
});
diff --git a/src/Frontend/src/components/messages/messageButtonPermissions.spec.ts b/src/Frontend/src/components/messages/messageButtonPermissions.spec.ts
index 26c3fa0171..3711c86aaf 100644
--- a/src/Frontend/src/components/messages/messageButtonPermissions.spec.ts
+++ b/src/Frontend/src/components/messages/messageButtonPermissions.spec.ts
@@ -49,7 +49,6 @@ function renderButton(component: Component, allowedRouteKeys: string[], archived
},
}),
],
- directives: { tippy: () => {} },
},
});
}
diff --git a/src/Frontend/src/views/ThroughputReportView.spec.ts b/src/Frontend/src/views/ThroughputReportView.spec.ts
index d6664704b8..4d34cc4867 100644
--- a/src/Frontend/src/views/ThroughputReportView.spec.ts
+++ b/src/Frontend/src/views/ThroughputReportView.spec.ts
@@ -40,10 +40,6 @@ describe("EndpointsView tests", () => {
RouterLink: RouterLinkStub,
},
plugins: [makeRouter(), Toast],
- directives: {
- // Add stub for tippy directive
- tippy: () => {},
- },
},
});
await flushPromises();
diff --git a/src/Frontend/src/views/throughputreport/EndpointsView.spec.ts b/src/Frontend/src/views/throughputreport/EndpointsView.spec.ts
index 647a85b200..fbdd07cd38 100644
--- a/src/Frontend/src/views/throughputreport/EndpointsView.spec.ts
+++ b/src/Frontend/src/views/throughputreport/EndpointsView.spec.ts
@@ -34,10 +34,6 @@ describe("EndpointsView tests", () => {
RouterLink: RouterLinkStub,
},
plugins: [makeRouter()],
- directives: {
- // Add stub for tippy directive
- tippy: () => {},
- },
},
});
await flushPromises();
diff --git a/src/Frontend/src/views/throughputreport/SetupView.spec.ts b/src/Frontend/src/views/throughputreport/SetupView.spec.ts
index 4289a5cee1..39de31d8d2 100644
--- a/src/Frontend/src/views/throughputreport/SetupView.spec.ts
+++ b/src/Frontend/src/views/throughputreport/SetupView.spec.ts
@@ -55,10 +55,6 @@ describe("SetupView tests", () => {
RouterLink: RouterLinkStub,
},
plugins: [makeRouter()],
- directives: {
- // Add stub for tippy directive
- tippy: () => {},
- },
},
});
await flushPromises();
diff --git a/src/Frontend/src/views/throughputreport/setup/DiagnosticsView.spec.ts b/src/Frontend/src/views/throughputreport/setup/DiagnosticsView.spec.ts
index a8097b3239..14022e6446 100644
--- a/src/Frontend/src/views/throughputreport/setup/DiagnosticsView.spec.ts
+++ b/src/Frontend/src/views/throughputreport/setup/DiagnosticsView.spec.ts
@@ -51,10 +51,6 @@ describe("DiagnosticsView tests", () => {
const { debug } = render(DiagnosticsView, {
global: {
plugins: [],
- directives: {
- // Add stub for tippy directive
- tippy: () => {},
- },
},
});
diff --git a/src/Frontend/src/views/throughputreport/setup/MasksView.spec.ts b/src/Frontend/src/views/throughputreport/setup/MasksView.spec.ts
index 1a926d3f8b..49c1a3b003 100644
--- a/src/Frontend/src/views/throughputreport/setup/MasksView.spec.ts
+++ b/src/Frontend/src/views/throughputreport/setup/MasksView.spec.ts
@@ -28,7 +28,7 @@ describe("MaskView tests", () => {
driver.mockEndpoint(`${window.defaultConfig.service_control_url}licensing/settings/masks`, { body });
setActivePinia(createTestingPinia({ stubActions: false }));
- const { debug } = render(MasksView, { global: { plugins: [Toast], directives: { tippy: () => {} } } });
+ const { debug } = render(MasksView, { global: { plugins: [Toast] } });
await flushPromises();
return { debug, driver };
diff --git a/src/Frontend/test/drivers/vitest/setup.ts b/src/Frontend/test/drivers/vitest/setup.ts
index 94b9d44410..ce0e498c4b 100644
--- a/src/Frontend/test/drivers/vitest/setup.ts
+++ b/src/Frontend/test/drivers/vitest/setup.ts
@@ -1,8 +1,15 @@
import { afterAll, beforeAll, beforeEach, vi } from "vitest";
+import { config } from "@vue/test-utils";
import { mockServer } from "../../mock-server";
import "@testing-library/jest-dom/vitest";
import monitoringClient from "@/components/monitoring/monitoringClient";
import serviceControlClient from "@/components/serviceControlClient";
+import VueTippy from "vue-tippy";
+
+// Removes test warning noise failing to resolve tippy
+if (!config.global.plugins.includes(VueTippy)) {
+ config.global.plugins.push(VueTippy);
+}
const defaultConfig = {
default_route: "/dashboard",