Skip to content

Restore the "All" page size in signal-list; fix the #5573 e2e intermittents - #5576

Merged
norman-abramovitz merged 2 commits into
cloudfoundry:developfrom
nabramovitz:norm/feat/5573-restore-all-page-size
Jul 5, 2026
Merged

Restore the "All" page size in signal-list; fix the #5573 e2e intermittents#5576
norman-abramovitz merged 2 commits into
cloudfoundry:developfrom
nabramovitz:norm/feat/5573-restore-all-page-size

Conversation

@nabramovitz

Copy link
Copy Markdown
Contributor

What the investigation found (#5573)

Neither "intermittent" was an app race — both specs were asserting UI that the signal-list migration replaced:

  • endpoints (non-admin visibility): the spec asserted the legacy cards-default view. The migrated endpoints list is table-primary by design (documented in EndpointsSignalConfigService) and provides no card template; persisted viewMode state made results vary run to run.
  • pagination ("All"): app-paginator is no longer rendered anywhere in the app, so the spec's selectors could never match. Under the 90s test budget the two-attempt navigation helper surfaced that as a skip (looked green); over it, as a bare timeout — the "flake" was a skip-vs-timeout race. Along the way this exposed a real feature loss: the "All" page-size option (and the option ladders' All entry) shipped on app-paginator and vanished in the migration.

Changes

App — restore All at the shared layer (4302fd0e):

  • ViewPipeline treats pageSize <= 0 as no slicing (single page)
  • signal-list offers All (-1) in card view; table views deliberately keep concrete sizes, and the view-mode snap validates against the effective option set so a per-view remembered All survives returning to card view
  • range counter reports the full window; pager select/range gain data-test hooks; filter input regains Escape-to-clear
  • unit tests: ViewPipeline paging, per-view option sets, snap in both directions, input validation

E2E — realign specs (6f2eafea):

  • endpoints: table-row assertions; list harness learns signal-list view detection (count-based, no auto-wait hangs) and card-grid cards
  • pagination: rewritten against the signal-list pager; condition waits replace fixed delays; per-list + per-view size-memory semantics; navigation budgets keep the no-data path a clean skip

Verification

  • Unit: 61 tests across the touched specs green; full lint + unit gate green
  • E2E: endpoints non-admin group 7/7; pagination spec 0 hard failures across repeated runs (passes vary 5–11 with the rest clean skips, see below)

Residual finding (separate issue to follow)

The orgs page can wedge on "Loading organizations…" when its in-flight CF fetches are canceled: jetstream logs 502 "context canceled" for orgs/apps/spaces, EndpointDataService records the error, and nothing retries. This is the remaining true intermittent behind the pagination skips — evidence (request timelines, jetstream logs) is in the investigation notes. Also observed while auditing: local SQLite runs journal_mode=delete with no busy_timeout, and ~60 e2e-* orgs have accumulated on the shared test CF.

Closes #5573

The signal-list migration dropped the legacy app-paginator's "All"
(-1) page-size option — app-paginator itself is no longer rendered
anywhere, so the feature silently vanished from every list
(e2e/cloudfoundry#5573 was the only thing noticing, via a flake).

Restore it at the shared layer:
- ViewPipeline treats pageSize <= 0 as "no slicing" (single page)
- signal-list offers All (-1, labelled "All") in card view; table
  views deliberately keep concrete sizes and the setViewMode snap
  reverts All on switch — validated against the effective option
  set so a per-view remembered All survives returning to card view
- range counter reports the full window for All
- pager select/range gain data-test hooks (page-size, page-range)
- filter input regains Escape-to-clear and a name-filter hook

Unit tests: ViewPipeline All paging; option sets per view; snap
behavior both directions; -1 accepted, 0/garbage still rejected.

Refs cloudfoundry#5573
Both cloudfoundry#5573 intermittents were specs targeting UI the migration
replaced, not app races:

- endpoints: the spec asserted the legacy cards-default view, but
  the migrated endpoints list is table-primary by design and has no
  card template. The "intermittency" was persisted viewMode state
  varying across runs. Assert table rows instead; the list harness
  learns signal-list view detection (plain <table> / card-grid,
  count-based so a missing legacy element can't hang the auto-wait)
  and card-grid children as cards.

- pagination: app-paginator is rendered nowhere, so goToOrgsPage
  never found its selectors — under the 90s budget that surfaced as
  a skip, over it as a bare timeout (the "flake"). Rewritten against
  the signal-list pager (page-size/page-range hooks, single view
  toggle, en-dash range, per-list + per-view size memory), with
  condition waits replacing fixed delays and navigation budgets that
  keep the no-data path a clean skip.

Refs cloudfoundry#5573

@norman-abramovitz norman-abramovitz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Investigated and verified: All option restored at the shared signal-list layer with per-view snap semantics; specs realigned to migrated UI; residual platform-blip resilience tracked in #5577.

@norman-abramovitz
norman-abramovitz merged commit 3ae2f30 into cloudfoundry:develop Jul 5, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Intermittent e2e failures: pagination 'All' and non-admin endpoint visibility

2 participants