Commit Graph

161 Commits

Author SHA1 Message Date
Claudio Ortolina ca01e94d47 ML-194: add selective smoke coverage
Add smoke tests for bulk cron workers, CSP browser header, and
on_mount hooks (GetTimezone/StaticAssets). 9 tests across 4 files,
all passing alongside 135 existing related tests.
2026-05-21 12:01:32 +01:00
Claudio Ortolina ec6980eea0 ML-193: add secondary parser, search, and API coverage tests
Add ~80 focused tests across 10 files covering:

- Record set search by name, description, contained record title, artist name
- Navigation events for records, artists, record sets, links, and view-all actions
- MusicBrainz.ReleaseGroup parser (artist credits, included RGs, release IDs, types)
- MusicBrainz.ReleaseSearchResult edge cases (missing RG, unknown formats)
- LastFm.Session XML edge cases (non-subscriber, missing nodes)
- MusicLibrary.HttpError default status-kind mapping
- Discogs.API.ErrorResponse fallback message and retry-delay behavior
- ArtistRefreshWikipediaData {:cancel, :no_english_wikipedia} worker path
- StatsComponents grouped on-this-day records and anniversary labels
2026-05-21 10:45:29 +01:00
Claudio Ortolina ff42f24972 ML-195: Add credo check for put_toast/put_toast! usage in live components 2026-05-21 08:08:11 +01:00
Claudio Ortolina 2983313426 ML-192: add high value missing tests
- Record editing + cover search
- Barcode scan errors + cart editing
- Notes
- Scrobble rules application over set of tracks
- Image conversion
2026-05-21 06:38:02 +01:00
Claudio Ortolina 07f43e59bb ML-192: plan refinement 2026-05-20 22:55:34 +01:00
Claudio Ortolina ab48d4b13a Add testing coverage backlog tasks 2026-05-20 18:22:08 +01:00
Claudio Ortolina 23960b5b23 ML-169.10.1: Add delete coverage
Cover current delete behavior across LiveView index and show paths, and strengthen existing delete tests with persistence assertions.\n\nValidation: mise run dev:precommit
2026-05-20 18:04:29 +01:00
Claudio Ortolina c537ea0d21 Backlog cleanup 2026-05-20 13:15:11 +01:00
Claudio Ortolina 004d2a2318 ML-169.10: refine implementation plan 2026-05-20 11:20:33 +01:00
Claudio Ortolina 760c44ccb5 ML-169.10: rescope to list pages and use async handling 2026-05-20 10:42:35 +01:00
Claudio Ortolina d2def9d0d3 ML-169.8: tighten task scope 2026-05-20 07:55:36 +01:00
Claudio Ortolina 4a6c80f7a9 ML-191: avoid VACUUM / scrobble refresh write collision
Set busy_timeout: 5_000 on MusicLibrary.Repo so SQLite waits up to
5 seconds on lock contention instead of throwing SQLITE_BUSY
immediately (default is 0).

Move RepoVacuum from 0 3 to 3 3 (3:03 AM London) to avoid the
deterministic collision with RefreshScrobbles which fires on the
every-5-min cadence at the hour mark.
2026-05-19 16:46:37 +01:00
Claudio Ortolina 78670268d5 ML-169.5: cancel task as it breaks functionality 2026-05-19 15:16:55 +01:00
Claudio Ortolina be371cbf4e ML-169.11: add correlated subquery fix task 2026-05-19 12:51:36 +01:00
Claudio Ortolina ab8062ddc6 ML-169.9: add pagination stream reset fix task 2026-05-19 12:51:29 +01:00
Claudio Ortolina e42e28992a ML-169.10: add optimistic delete UI fix task 2026-05-19 12:51:19 +01:00
Claudio Ortolina 96248231fa ML-169.7: add scrobble stream reset fix task 2026-05-19 12:51:05 +01:00
Claudio Ortolina c9f00c9360 ML-169.8: add StatsLive TTFB performance fix task 2026-05-19 12:50:56 +01:00
Claudio Ortolina e458f605c5 ML-169.6: add redundant stream reload fix task 2026-05-19 12:50:36 +01:00
Claudio Ortolina 0ec4b989c9 ML-169.5: add display toggle performance fix task 2026-05-19 12:50:09 +01:00
Claudio Ortolina f1fde63d42 ML-189: simplify release-component notifications
- Use a tagged type
- Leave skipping responsibility to subscribed process
2026-05-19 12:18:07 +01:00
Claudio Ortolina 73046bb0f5 ML-190: fix record subscription lifecycle 2026-05-19 12:10:34 +01:00
Claudio Ortolina e204e555bd ML-188: guard PubSub record updates during edit mode
Add live_action guard to handle_info({:update, record}) in both
CollectionLive.Show and WishlistLive.Show. When the user is editing,
background worker updates are skipped and a warning toast is shown
instead of overwriting the socket. Normal show-mode updates and
mismatched-ID no-ops are unchanged.

6 tests added covering all three code paths.
2026-05-19 11:38:42 +01:00
Claudio Ortolina 2fca0bb106 ML-190: fix redundant unsubscribe (plan) 2026-05-19 10:38:41 +01:00
Claudio Ortolina 0f529daa4e ML-189: fix dynamic tag type (plan) 2026-05-19 10:21:45 +01:00
Claudio Ortolina 5ee1d0b82a ML-188: race condition in background update (plan) 2026-05-19 10:03:58 +01:00
Claudio Ortolina 70dfce1346 Move audit tasks to done (should have done that earlier) 2026-05-19 09:51:14 +01:00
Claudio Ortolina 0881971635 Backlog cleanup 2026-05-19 09:48:55 +01:00
Claudio Ortolina 54b682a663 ML-190: add same-record reconnect optimization task
From audit doc-25 (Phase 2), Recommendation #2.
2026-05-19 09:46:31 +01:00
Claudio Ortolina b858c27f52 ML-189: add Release component tag type-safety task
From audit doc-24 (Phase 1), Recommendation #1.
2026-05-19 09:46:22 +01:00
Claudio Ortolina 8baaa7df27 ML-188: add form edit + background update race fix task
From audit doc-26 (Phase 3), Recommendation #1.
2026-05-19 09:46:11 +01:00
Claudio Ortolina 762b64659b ML-169: performed all audits 2026-05-19 08:47:08 +01:00
Claudio Ortolina 8de5d88c14 ML-169.2: performed performance audit 2026-05-19 08:45:58 +01:00
Claudio Ortolina 2a108660ae ML-169.1: performed concurrent state change safety audit 2026-05-19 08:33:55 +01:00
Claudio Ortolina 2d4b82e7bb ML-169.3: performed pubsub audit 2026-05-19 08:20:11 +01:00
Claudio Ortolina a2bb98679c ML-168.4: perform async messages audit 2026-05-19 07:38:37 +01:00
Claudio Ortolina af62cf38a6 ML-187: done 2026-05-18 16:11:57 +01:00
Claudio Ortolina 795e511fc1 ML-187: smarter precommit hook (plan) 2026-05-18 15:55:15 +01:00
Claudio Ortolina 122c07836b ML-182.5: migrate blocked LiveView tests
Replace direct LiveView PID and isolated component test patterns with PhoenixTest-backed page flows while keeping narrow unwrap bridges where PhoenixTest cannot express the component interaction.

Precommit: mise run dev:precommit
2026-05-17 21:24:29 +01:00
Claudio Ortolina aab16b2c66 ML-186: improve presto redraw performance with partial updates 2026-05-16 21:29:02 +01:00
Claudio Ortolina d61dd6c7b8 [presto] Update tests/references to medium cover size 2026-05-16 21:28:09 +01:00
Claudio Ortolina 9f5a26198f ML-182.4: convert tests to phoenix_test 2026-05-16 16:30:42 +01:00
Claudio Ortolina 07d65fe78f ML-182.3: finish wave-3 of conversion LiveViewTest to PhoenixTest 2026-05-16 15:23:53 +01:00
Claudio Ortolina 3a7a89002a ML-185.2: use API-sized Presto covers 2026-05-15 22:56:22 +01:00
Claudio Ortolina b4710e10c8 ML-185.1: expose named cover sizes in collection API 2026-05-15 22:49:06 +01:00
Claudio Ortolina f1b33fdc5f ML-185: simplify presto artwork handling (requirements) 2026-05-15 22:41:17 +01:00
Claudio Ortolina 6a3e9695db ML-184: add Presto smoke test harness
Add a headless smoke-test harness for the Presto microPython app using
pimoroni-emulator mock modules.  A PRESTO_TEST_MODE=1 guard prevents
main() from running at import time so draw functions can be called
directly from tests.

- presto/main.py: wrap main() with PRESTO_TEST_MODE guard
- presto/tests/: conftest with emulator fixtures, 7 smoke tests
- presto/mise.toml: add [tasks.test]
- presto/README.md, presto/AGENTS.md: add Testing section
- .gitignore: exclude test __pycache__, pytest_cache, fixture pngs
2026-05-15 10:53:08 +01:00
Claudio Ortolina 2ec19f3a88 ML-184: presto testing harness (plan) 2026-05-15 09:54:18 +01:00
Claudio Ortolina 7338825606 ML-183: scale Presto full-res layout 2026-05-15 08:22:27 +01:00
Claudio Ortolina 8391cf275a ML-180: remove backup download feature
Delete ArchiveController, its routes, the maintenance UI backup
button, and the test file. Management scripts and Litestream
supersede this functionality.
2026-05-15 07:13:33 +01:00