Skip to content

feat: search builds by CI build id - #380

Merged
nGervasyuk merged 6 commits into
Visual-Regression-Tracker:masterfrom
nGervasyuk:feat/search-builds-by-ci-build-id
Jul 27, 2026
Merged

feat: search builds by CI build id#380
nGervasyuk merged 6 commits into
Visual-Regression-Tracker:masterfrom
nGervasyuk:feat/search-builds-by-ci-build-id

Conversation

@nGervasyuk

@nGervasyuk nGervasyuk commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

What & why

The build list is paginated, so locating a run in a project with a long history means clicking through pages. This adds a search field above the list that filters builds by CI build id.

Depends on Visual-Regression-Tracker/backend#355, which adds the ciBuildId query param to GET /builds. Until that ships, the param is ignored and the list behaves exactly as before.

Changes

  • Search field above the build list. Debounced (300 ms) and passed to GET /builds, so the server filters and paginates the whole history rather than the ten loaded builds. Changing the query resets to page 1 and clears the selection, so bulk delete can't act on hidden builds.
  • Styled like the test run filters — the same small outlined field as the Name filter, with browser autocomplete off.
  • No more skeleton flash on refetch. request no longer empties the list; the skeletons now appear only when there is nothing to show yet. A new reset action clears the list when the project changes, so another project's builds never linger. This also removes the flash that page changes already caused.
  • Empty state reads No builds match "<query>", wraps long queries and no longer uses a heading-sized font.
  • The left column of the project page now sizes the project select to its content and lets the list flex, matching the right column, instead of splitting the height 9%/91%.

Testing

  • Playwright 23/23, including two new tests: search filters the list, and the empty-search message stays inside the sidebar. The latter was verified to fail (216 px of overflow) before the fix.
  • tsc --noEmit, eslint, prettier and vite build clean on changed files.
  • Updated the project-page-test-run-list.png snapshot (the sidebar now has a search field).
  • Verified against a local instance with 40 builds: filtering, page reset from page 2, case-insensitive match, empty result, and project switching.

Screenshots

Screen.Recording.2026-07-27.at.11.11.14.mov
Screenshot 2026-07-27 at 11 11 53 Screenshot 2026-07-27 at 11 12 10 Screenshot 2026-07-27 at 11 12 19

The build list is paginated, so finding a run meant clicking through
pages. Add a debounced search field above the list that passes the query
to GET /builds, letting the server filter and paginate the whole
history instead of the loaded page.
Every search keystroke pause and every page change replaced the whole
list with pulsing skeletons. Show them only when there is nothing to
display yet, use a progress bar for subsequent refetches, and clear the
list explicitly when the project changes. Also turn off browser
autocomplete on the search field.
Use the same outlined, small text field as the Name filter instead of
the standard one, whose animated underline and progress bar were the
only moving parts in the sidebar. Size the project select to its content
so the field sits right below it.
A long query without spaces had nothing to wrap on and spilled over the
test run list. Wrap it anywhere, drop the heading-sized font, and cover
it with a test that measures the overflow.
@nGervasyuk nGervasyuk self-assigned this Jul 27, 2026
@nGervasyuk
nGervasyuk requested a review from pashidlos July 27, 2026 10:04
…by-ci-build-id

# Conflicts:
#	integration_tests/test/projec.spec.ts
…by-ci-build-id

# Conflicts:
#	integration_tests/pages/components/BuildList.ts
#	integration_tests/test/projec.spec.ts
#	integration_tests/utils/mocks.ts
#	src/components/BuildList/index.tsx
@sonarqubecloud

Copy link
Copy Markdown

@pashidlos pashidlos left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@nGervasyuk
nGervasyuk merged commit 8534c92 into Visual-Regression-Tracker:master Jul 27, 2026
3 checks passed
@nGervasyuk
nGervasyuk deleted the feat/search-builds-by-ci-build-id branch July 27, 2026 18:56
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.

2 participants