CI / build-and-test (push) Successful in 14m45s
SearchService.fetchCatalogShorts (type shorts via /api/search : cache, provenance, FF) + pont pur shorts-catalog.ts (mapping, meta, fraicheur, spec 27 assertions). WatchShortComponent : catalogue d'abord (feed, pagination, Pour toi), repli legacy, Twitch clips inchanges, avatars paresseux via channelMeta. UI facon YouTube : plein ecran 100dvh, fond d'ambiance, rail overlay 48px, meta/fraicheur/pastille provider, safe-area.
111 lines
2.9 KiB
YAML
111 lines
2.9 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
jobs:
|
|
build-and-test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Typecheck (front + shared tsconfig)
|
|
run: npx tsc --noEmit
|
|
|
|
- name: Build Angular app
|
|
run: npm run build
|
|
|
|
- name: Server tests (playlists visibility)
|
|
run: npm run test:playlists
|
|
|
|
- name: Server tests (download jobs)
|
|
run: npm run test:downloads
|
|
|
|
- name: Server tests (preferences)
|
|
run: npm run test:preferences
|
|
|
|
- name: Server tests (telemetry)
|
|
run: npm run test:telemetry
|
|
|
|
- name: Unit tests (search UX)
|
|
run: npm run test:search
|
|
|
|
- name: Search filters (offline)
|
|
run: npm run test:filters
|
|
|
|
- name: E2E scenarios (search UX)
|
|
run: npm run test:search-e2e
|
|
|
|
- name: Suggest typeahead (Step 15)
|
|
run: npm run test:suggest
|
|
|
|
- name: Transcripts (Step 16)
|
|
run: npm run test:transcript
|
|
|
|
- name: YouTube scrape-first (Step 17, offline)
|
|
run: npm run test:ytscrape
|
|
|
|
- name: Provider contract v2 (offline)
|
|
run: npm run test:contract
|
|
|
|
- name: Rumble parsing / JSON-LD (offline)
|
|
run: npm run test:rumble
|
|
|
|
- name: Search cache + provider metrics + YouTube failover (offline)
|
|
run: npm run test:cache
|
|
|
|
- name: Video catalog + likes denormalization (offline)
|
|
run: npm run test:videos
|
|
|
|
- name: Channel identity `channelRef` (offline)
|
|
run: npm run test:channelref
|
|
|
|
- name: Suggestion shape on frozen provider fixtures (offline)
|
|
run: npm run test:shapes
|
|
|
|
- name: Twitch parallel sections + section budget (offline)
|
|
run: npm run test:twitch
|
|
|
|
- name: YouTube channel page tokens persistence (offline)
|
|
run: npm run test:tokens
|
|
|
|
- name: Channel banners + descriptions across 6 providers (offline)
|
|
run: npm run test:banners
|
|
|
|
- name: Provenance `capturedAt`/`source` + `?debug=1` payload (offline)
|
|
run: npm run test:provenance
|
|
|
|
- name: Client-side provenance helpers (offline)
|
|
run: npm run test:provenance-front
|
|
|
|
- name: Provider health classification (offline)
|
|
run: npm run test:provider-health
|
|
|
|
- name: Search NDJSON transport (offline)
|
|
run: npm run test:stream
|
|
|
|
- name: Unified ProviderAdapter contract (offline)
|
|
run: npm run test:adapter
|
|
|
|
- name: Shorts catalogue bridge (offline)
|
|
run: npm run test:shorts-catalog
|
|
|
|
- name: Contract v2 strict + `FF_<PROVIDER>` feature flags (offline)
|
|
run: npm run test:flags
|
|
|
|
- name: Video kind classification (offline)
|
|
run: npm run test:kind
|
|
|
|
- name: YouTube InnerTube (Step 18, offline)
|
|
run: npm run test:ytinnertube
|