From 7c11c06ed6536f4261cb875422cf5427d526949e Mon Sep 17 00:00:00 2001 From: Punyapal Shah <53343069+MrPunyapal@users.noreply.github.com> Date: Wed, 4 Nov 2026 02:29:46 +0530 Subject: [PATCH] fix: keep accessible controls inside commits from navigating --- resources/js/lib/commit-click.ts | 4 ++++ tests/Unit/CommitClick.test.ts | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/resources/js/lib/commit-click.ts b/resources/js/lib/commit-click.ts index 7309fc79c..ddf5c3ffc 100644 --- a/resources/js/lib/commit-click.ts +++ b/resources/js/lib/commit-click.ts @@ -18,6 +18,10 @@ const interactiveSelector = [ '[role="checkbox"]', '[role="radio"]', '[role="menuitem"]', + '[role="switch"]', + '[role="tab"]', + '[role="slider"]', + '[role="combobox"]', ].join(', '); export type CommitClick = { diff --git a/tests/Unit/CommitClick.test.ts b/tests/Unit/CommitClick.test.ts index 61e7ee071..3bffaef9a 100644 --- a/tests/Unit/CommitClick.test.ts +++ b/tests/Unit/CommitClick.test.ts @@ -137,3 +137,14 @@ await test('deleted commits have no permalink to open', () => { assert.equal(clickedCommit(click(element(['p'], tombstone)), '', '/'), null); }); + +await test('accessible controls inside a commit do not navigate', () => { + for (const role of ['switch', 'tab', 'slider', 'combobox']) { + const control = element([`[role="${role}"]`], card); + assert.equal(clickedCommit(click(control), '', '/'), null); + assert.equal( + clickedCommit(click(element(['span'], control)), '', '/'), + null, + ); + } +});