|
Some checks failed
Veza CI / Rust (Stream Server) (push) Successful in 5m35s
E2E Playwright / e2e (full) (push) Failing after 9m56s
Veza CI / Frontend (Web) (push) Failing after 15m21s
Veza CI / Notify on failure (push) Successful in 4s
Veza CI / Backend (Go) (push) Failing after 4m44s
Security Scan / Secret Scanning (gitleaks) (push) Failing after 39s
Backend - services/search_service.go : new SearchFilters struct (Genre, MusicalKey, BPMMin, BPMMax, YearFrom, YearTo) + appendTrackFacets helper that composes additional AND clauses onto the existing FTS WHERE condition. Filters apply ONLY to the track query — users + playlists ignore them silently (no relevant columns). - handlers/search_handlers.go : new parseSearchFilters reads + bounds- checks query params (BPM in [1,999], year in [1900,2100], min<=max). Search() now passes filters into the service ; OTel span attribute search.filtered surfaces whether facets were applied. - elasticsearch/search_service.go : signature updated to match the interface ; ES path doesn't translate facets yet (different filter DSL needed) — logs a warning when facets arrive on this path. - handlers/search_handlers_test.go : MockSearchService.Search updated + 4 mock.On call sites pass mock.Anything for the new filters arg. Frontend - services/api/search.ts : new SearchFacets shape ; searchApi.search accepts an opts.facets bag. When non-empty, bypasses orval's typed getSearch (its GetSearchParams pre-dates the new query params) and uses apiClient.get directly with snake_case keys matching the backend's parseSearchFilters(). - features/search/components/FacetSidebar.tsx (new) : sidebar with genre + musical_key inputs (datalist suggestions), BPM min/max pair, year from/to pair. Stateless ; SearchPage owns state. data-testids on every control for E2E. - features/search/components/search-page/useSearchPage.ts : facets state stored in URL (genre, musical_key, bpm_min, bpm_max, year_from, year_to) so deep links reproduce the result set. 300 ms debounce on facet changes. - features/search/components/search-page/SearchPage.tsx : layout switches to a 2-column grid (sidebar + results) when query is non-empty ; discovery view keeps the full width when empty. Collateral cleanup - internal/api/routes_users.go : removed unused strconv + time imports that were blocking the build (pre-existing dead imports surfaced by the SearchServiceInterface signature change). E2E - tests/e2e/32-faceted-search.spec.ts : 4 tests. (36) backend rejects bpm_min > bpm_max with 400. (37) out-of-range BPM rejected. (38) valid range returns 200 with a tracks array. (39) UI — typing in the sidebar updates URL query params within the 300 ms debounce. Acceptance (Day 18) : promtool not relevant ; backend test suite green for handlers + services + api ; TS strict pass ; E2E spec covers the gates the roadmap acceptance asked for. The 'rock + BPM 120-130 = restricted results' assertion needs seed data with measurable BPM (none today) — flagged in the spec as a follow-up to un-skip once seed BPM data lands. W4 progress : Day 16 done · Day 17 done · Day 18 done · Day 19 (HAProxy sticky WS) pending · Day 20 (k6 nightly) pending. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 23-visual-regression.spec.ts-snapshots | ||
| audit | ||
| fixtures | ||
| helpers | ||
| scripts | ||
| tests/e2e/audit/results/screenshots | ||
| 01-auth.spec.ts | ||
| 02-navigation.spec.ts | ||
| 03-player.spec.ts | ||
| 04-tracks.spec.ts | ||
| 05-playlists.spec.ts | ||
| 06-search-discover.spec.ts | ||
| 07-social.spec.ts | ||
| 08-marketplace.spec.ts | ||
| 09-chat-notifications-settings.spec.ts | ||
| 10-features.spec.ts | ||
| 11-accessibility-ethics.spec.ts | ||
| 12-api.spec.ts | ||
| 13-workflows.spec.ts | ||
| 14-edge-cases.spec.ts | ||
| 15-routes-coverage.spec.ts | ||
| 16-forms-validation.spec.ts | ||
| 17-modals-dialogs.spec.ts | ||
| 18-empty-states.spec.ts | ||
| 19-responsive.spec.ts | ||
| 20-network-errors.spec.ts | ||
| 21-error-boundary.spec.ts | ||
| 22-performance.spec.ts | ||
| 23-visual-regression.spec.ts | ||
| 24-cross-browser.spec.ts | ||
| 25-profile.spec.ts | ||
| 25-register-defer-jwt.spec.ts | ||
| 26-smoke.spec.ts | ||
| 26-verify-email-header.spec.ts | ||
| 27-chunked-upload-s3.spec.ts | ||
| 27-upload.spec.ts | ||
| 28-storybook.spec.ts | ||
| 29-chat-functional.spec.ts | ||
| 29-dmca-notice.spec.ts | ||
| 30-embed-and-share.spec.ts | ||
| 30-marketplace-checkout.spec.ts | ||
| 31-auth-sessions.spec.ts | ||
| 31-sw-offline-cache.spec.ts | ||
| 32-deep-pages.spec.ts | ||
| 32-faceted-search.spec.ts | ||
| 33-visual-bugs.spec.ts | ||
| 34-workflows-empty.spec.ts | ||
| 35-register.spec.ts | ||
| 36-forgot-password.spec.ts | ||
| 37-reset-password.spec.ts | ||
| 38-user-profile.spec.ts | ||
| 39-feed.spec.ts | ||
| 40-library.spec.ts | ||
| 41-chat-deep.spec.ts | ||
| 42-player-deep.spec.ts | ||
| 43-upload-deep.spec.ts | ||
| 44-auth-deep.spec.ts | ||
| 45-playlists-deep.spec.ts | ||
| 46-search-discover-deep.spec.ts | ||
| 47-social-deep.spec.ts | ||
| 48-marketplace-deep.spec.ts | ||
| 49-notifications-settings-deep.spec.ts | ||
| COVERAGE_MAP.md | ||
| dashboard-audit.spec.ts | ||
| design-system.spec.ts | ||
| discover.spec.ts | ||
| global-setup.ts | ||
| global-teardown.ts | ||
| helpers.ts | ||
| launch-audit.spec.ts | ||
| login-audit.spec.ts | ||
| playlists-audit.spec.ts | ||
| playlists-detail-audit.spec.ts | ||
| playlists-edit-audit.spec.ts | ||
| playlists-favoris-audit.spec.ts | ||
| playlists-shared-token.spec.ts | ||
| playwright.config.ts | ||
| queue-audit.spec.ts | ||
| search-audit.spec.ts | ||
| SKIPPED_TESTS.md | ||
| tracks-detail-audit.spec.ts | ||
| verify-email-audit.spec.ts | ||
| VEZA_AUDIT_REPORT.md | ||