@@ -322,9 +322,15 @@ describe("DashboardPage — tab badge counts", () => {
322322 await waitFor ( ( ) => {
323323 expect ( screen . getByRole ( "tab" , { name : / P u l l R e q u e s t s / } ) . textContent ?. replace ( / \D + / g, "" ) ) . toBe ( "2" ) ;
324324 } ) ;
325+
326+ // Un-ignore — badge should increment back to 3
327+ viewStore . unignoreItem ( "10" ) ;
328+ await waitFor ( ( ) => {
329+ expect ( screen . getByRole ( "tab" , { name : / P u l l R e q u e s t s / } ) . textContent ?. replace ( / \D + / g, "" ) ) . toBe ( "3" ) ;
330+ } ) ;
325331 } ) ;
326332
327- it ( "decrements Actions badge on ignore" , async ( ) => {
333+ it ( "decrements Actions badge on ignore and increments on un-ignore " , async ( ) => {
328334 vi . mocked ( pollService . fetchAllData ) . mockResolvedValue ( {
329335 issues : [ ] ,
330336 pullRequests : [ ] ,
@@ -344,6 +350,12 @@ describe("DashboardPage — tab badge counts", () => {
344350 await waitFor ( ( ) => {
345351 expect ( screen . getByRole ( "tab" , { name : / A c t i o n s / } ) . textContent ?. replace ( / \D + / g, "" ) ) . toBe ( "1" ) ;
346352 } ) ;
353+
354+ // Un-ignore — badge should increment back to 2
355+ viewStore . unignoreItem ( "20" ) ;
356+ await waitFor ( ( ) => {
357+ expect ( screen . getByRole ( "tab" , { name : / A c t i o n s / } ) . textContent ?. replace ( / \D + / g, "" ) ) . toBe ( "2" ) ;
358+ } ) ;
347359 } ) ;
348360
349361 it ( "excludes PR-triggered runs from badge count by default" , async ( ) => {
@@ -389,6 +401,31 @@ describe("DashboardPage — tab badge counts", () => {
389401 } ) ;
390402 } ) ;
391403
404+ it ( "combines showPrRuns and ignore exclusions for Actions badge" , async ( ) => {
405+ vi . mocked ( pollService . fetchAllData ) . mockResolvedValue ( {
406+ issues : [ ] ,
407+ pullRequests : [ ] ,
408+ workflowRuns : [
409+ makeWorkflowRun ( { id : 20 , isPrRun : false } ) ,
410+ makeWorkflowRun ( { id : 21 , isPrRun : true } ) ,
411+ makeWorkflowRun ( { id : 22 , isPrRun : true } ) ,
412+ ] ,
413+ errors : [ ] ,
414+ } ) ;
415+ viewStore . updateViewState ( { showPrRuns : true } ) ;
416+
417+ render ( ( ) => < DashboardPage /> ) ;
418+ await waitFor ( ( ) => {
419+ expect ( screen . getByRole ( "tab" , { name : / A c t i o n s / } ) . textContent ?. replace ( / \D + / g, "" ) ) . toBe ( "3" ) ;
420+ } ) ;
421+
422+ // Ignore one PR-triggered run — badge should drop to 2
423+ viewStore . ignoreItem ( { id : "21" , type : "workflowRun" , repo : "owner/repo" , title : "CI" , ignoredAt : Date . now ( ) } ) ;
424+ await waitFor ( ( ) => {
425+ expect ( screen . getByRole ( "tab" , { name : / A c t i o n s / } ) . textContent ?. replace ( / \D + / g, "" ) ) . toBe ( "2" ) ;
426+ } ) ;
427+ } ) ;
428+
392429 it ( "filters badge counts by globalFilter repo" , async ( ) => {
393430 vi . mocked ( pollService . fetchAllData ) . mockResolvedValue ( {
394431 issues : [
0 commit comments