diff --git a/models/fixtures/commit_status.yml b/models/fixtures/commit_status.yml
index 6b82e3fd6..0ba6caafe 100644
--- a/models/fixtures/commit_status.yml
+++ b/models/fixtures/commit_status.yml
@@ -52,3 +52,14 @@
description: My awesome deploy service
context: deploy/awesomeness
creator_id: 2
+
+-
+ id: 6
+ index: 6
+ repo_id: 62
+ state: "failure"
+ sha: "774f93df12d14931ea93259ae93418da4482fcc1"
+ target_url: "/user2/test_workflows/actions"
+ description: My awesome deploy service
+ context: deploy/awesomeness
+ creator_id: 2
diff --git a/tests/e2e/dashboard-ci-status.test.e2e.js b/tests/e2e/dashboard-ci-status.test.e2e.js
new file mode 100644
index 000000000..fdf868f08
--- /dev/null
+++ b/tests/e2e/dashboard-ci-status.test.e2e.js
@@ -0,0 +1,21 @@
+// @ts-check
+import {test, expect} from '@playwright/test';
+import {login_user, load_logged_in_context} from './utils_e2e.js';
+
+test.beforeAll(async ({browser}, workerInfo) => {
+ await login_user(browser, workerInfo, 'user2');
+});
+
+test('Correct link and tooltip', async ({browser}, workerInfo) => {
+ const context = await load_logged_in_context(browser, workerInfo, 'user2');
+ const page = await context.newPage();
+ const response = await page.goto('/?repo-search-query=test_workflows');
+ await expect(response?.status()).toBe(200);
+
+ await page.waitForLoadState('networkidle');
+
+ const repoStatus = page.locator('.dashboard-repos .repo-owner-name-list > li:nth-child(1) > a:nth-child(2)');
+
+ await expect(repoStatus).toHaveAttribute('href', '/user2/test_workflows/actions');
+ await expect(repoStatus).toHaveAttribute('data-tooltip-content', 'Failure');
+});
diff --git a/web_src/js/components/DashboardRepoList.vue b/web_src/js/components/DashboardRepoList.vue
index 548324b4b..69a8ced47 100644
--- a/web_src/js/components/DashboardRepoList.vue
+++ b/web_src/js/components/DashboardRepoList.vue
@@ -415,7 +415,7 @@ export default sfc; // activate the IDE's Vue plugin
-
+