Skip to content

feat: allow replaying multiple selected status action logs - #1685

Open
mutambaraf wants to merge 9 commits into
developfrom
add-multiple-rerun-status-actions
Open

feat: allow replaying multiple selected status action logs#1685
mutambaraf wants to merge 9 commits into
developfrom
add-multiple-rerun-status-actions

Conversation

@mutambaraf

Copy link
Copy Markdown
Contributor

Description

Adds checkbox row selection to the Status Actions Logs table (used by both the Email and Proposal Download logs pages) so a User Officer can select multiple log rows and replay them all in a single bulk action, instead of replaying one row at a time.

The selected rows persist across pagination (stored in the URL's selection query param), so navigating between pages doesn't lose the selection. A badge on the bulk replay button always reflects the true total number of selected rows, even while viewing a page that has no rows checked locally. After a successful bulk replay, the selection is cleared and the table refreshes.

Motivation and Context

Previously, User Officers could only replay one status action log at a time via the per-row replay icon. When many status actions failed (e.g. after an outage) and needed to be replayed, this meant repeating the same manual confirmation for every single row. Bulk selection removes that repetitive work.

How Has This Been Tested

  • Added new Cypress e2e tests in apps/e2e/cypress/e2e/statusActions.cy.ts:
    • Selecting multiple rows and running a bulk replay, verifying the confirmation dialog, success notification, and that the selection is cleared afterwards.
    • Selecting rows, paginating away and back, and verifying the selection (and the bulk replay button/badge count) persists correctly even on pages with no local selection.
  • Manually verified in the browser against both the Email and Proposal Download status actions logs pages.

Fixes

Closes #1487

Changes

  • apps/frontend/src/components/statusActionsLogs/StatusActionsLogsTable.tsx:
    • Enabled row selection (options.selection: true) with onSelectionChange persisting selected log IDs to the selection URL search param, merged correctly across page changes.
    • Added a bulk "Replay selected status actions" action (registered under both toolbar and toolbarOnSelect positions so it stays visible regardless of whether the current page has any rows checked), showing a badge with the live cross-page selected count.
    • Overrode the nRowsSelected toolbar text to reflect the true persisted total selection rather than material-table's per-page count.
    • Always set tableData.checked explicitly per row (instead of only when a selection exists) to avoid stale checked state bleeding through after the selection is cleared.
  • apps/frontend/src/graphql/statusActionsLogs/replayStatusActionLogs.graphql renamed to replayStatusActionsLogs.graphql for consistency with its sibling replayStatusActionsLog.graphql.
  • apps/e2e/cypress/e2e/statusActions.cy.ts: added e2e coverage for bulk replay and cross-page selection persistence.

Depends on

N/A

Tests included/Docs Updated?

  • I have added tests to cover my changes.
  • All relevant doc has been updated

@mutambaraf
mutambaraf requested a review from a team as a code owner July 28, 2026 11:44
@mutambaraf
mutambaraf requested review from a team, EdwardHaynes, ellen-wright and martin-trajanovski and removed request for a team July 28, 2026 11:44
@mutambaraf
mutambaraf requested review from a team and janosbabik and removed request for a team and martin-trajanovski July 29, 2026 07:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow multiple select for status action reruns

2 participants