[product-owner]
Component: E2E test coverage — ReportContentEditor column-visibility toggles
Priority: Should Have
Source: PR #1959, deliberately deferred at review time.
Problem
PR #1959 added column-visibility checkboxes above the summary table in ReportContentEditor (local state, no persistence). They shipped with no E2E coverage. The omission was deliberate: adding a test case changes Playwright's per-file test counts, which redistributes shard membership, and a worker-hash/shard-boundary change reddened an unrelated shard on PR #1961 the same day. On a branch gating the beta -> main promotion that risk was not worth taking, so the coverage was deferred here rather than rushed.
The feature is user-facing and has no automated guard: a renamed label, a removed checkbox, or an accidental switch to persisted preferences would all pass CI today.
Acceptance Criteria
Notes
[product-owner]
Component: E2E test coverage —
ReportContentEditorcolumn-visibility togglesPriority: Should Have
Source: PR #1959, deliberately deferred at review time.
Problem
PR #1959 added column-visibility checkboxes above the summary table in
ReportContentEditor(local state, no persistence). They shipped with no E2E coverage. The omission was deliberate: adding a test case changes Playwright's per-file test counts, which redistributes shard membership, and a worker-hash/shard-boundary change reddened an unrelated shard on PR #1961 the same day. On a branch gating thebeta->mainpromotion that risk was not worth taking, so the coverage was deferred here rather than rushed.The feature is user-facing and has no automated guard: a renamed label, a removed checkbox, or an accidental switch to persisted preferences would all pass CI today.
Acceptance Criteria
e2e/tests/budget/reportWizardEditableContent.spec.ts(or a sibling spec) contains coverage that, on the summary tab: asserts every column checkbox is present and locatable by accessible name; unticks one column; asserts the corresponding<th>and every matching<td>are absent from the DOM; re-ticks it; asserts both return.PATCHto/api/users/me/preferences(asserted by route interception or request logging). This pins the intended difference fromDataTable's persisted column preferences and guards against someone adding persistence and inheriting the BUG: enabling two DataTable columns in a row silently hides the second one (column-preference save races its own re-sync) #1955 race.Notes
ReportContentEditor; nothing about them should reach the report content model or the generated PDF.