Gan, Jimmy
b981c06d59
feat: comprehensive test infrastructure improvements
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m26s
Run Tests / Backend Tests (push) Failing after 2m36s
Run Tests / Frontend Tests (push) Failing after 2m23s
Run Tests / Test Summary (push) Failing after 13s
- Fix unit test imports: add env setup in conftest.py before module imports
- Add 24 new auth router tests (RBAC, preferences, password validation)
- Add 16 new tests for litellm and chat_summary routers
- Apply black formatting and ruff linting across codebase
- Add pre-commit hooks configuration (black, ruff, file checks)
- Increase CI coverage threshold from 40% to 50%
Test Results:
- 206 tests passing (91 unit + 115 integration)
- Coverage: 58.79% on core modules
- auth.py: 57% → 85%, litellm.py: 23% → 87%, chat_summary.py: 41% → 100%
- auth_service: 96.51%, config: 100%, rbac: 93.48%
2026-04-08 00:21:32 +08:00
Gan, Jimmy
e98cbb0abb
feat: comprehensive test infrastructure improvements
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m35s
Run Tests / Backend Tests (push) Successful in 2m36s
Run Tests / Frontend Tests (push) Failing after 51s
Run Tests / Test Summary (push) Failing after 14s
Phase 1: Fix immediate test failures
- Fix path handling in files router (strip leading slashes)
- Fix test assertions to match actual API behavior
- Add proper error handling for missing files in download endpoint
- Reload files router in test fixtures to pick up config changes
- Fix upload endpoint test to use query params instead of form data
Phase 2: Improve test reliability
- Standardize error responses: docker_router now uses HTTPException
- Add global exception handlers for validation, Docker errors, and unhandled exceptions
- Fix flaky TOTP replay protection test
- Fix flaky password hash loading test with proper module reload
- Enhanced Docker mock fixtures with error scenarios and factory pattern
Phase 3: Add coverage reporting
- Add pytest-cov with 40% minimum coverage threshold
- Add pyproject.toml with pytest and coverage configuration
- Update test workflow to generate coverage and JUnit XML reports
- Remove -x flag to see all test failures
- Configure asyncio_default_fixture_loop_scope to fix deprecation warning
Results:
- All 144 tests passing (was 137 passed, 5 failed, 2 skipped)
- Test execution time: ~3s locally
- Coverage: 43% (above 40% threshold)
- No skipped tests
- Standardized error handling across all endpoints
2026-04-07 08:02:38 +08:00
Gan, Jimmy
17c1fb3057
perf: use Tsinghua PyPI mirror for faster pip installs
Run Tests / Backend Tests (push) Failing after 1m52s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
2026-04-06 22:53:22 +08:00
Gan, Jimmy
95ba45f4d4
fix: use pip cache instead of --no-cache-dir
...
Run Tests / Backend Tests (push) Failing after 13m48s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
- Remove --no-cache-dir flag that was forcing slow downloads
- Use pip's own cache directory at /tmp/pip-cache
- This allows pip to cache downloaded packages between runs
- Venv cache still works for when requirements don't change
- Should significantly speed up dependency installation
2026-04-06 22:23:38 +08:00
Gan, Jimmy
2991250adf
fix: improve dependency caching in test workflow
...
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
- Fix cache key generation (cat files before hashing, not hash twice)
- Use cp -a instead of cp -r to preserve symlinks and permissions
- Add --no-cache-dir to pip to avoid double caching
- Export CACHE_KEY to env for better logging
- Cache should now work properly and speed up subsequent runs
2026-04-06 22:13:21 +08:00
Gan, Jimmy
c17bcd8444
perf: optimize deploy-dev workflow
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m54s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
- Skip base image pre-pull if images already exist locally
- Reduce timeout from 60s to 30s for mirror pulls
- Remove redundant --build flag (image already built)
- Remove unnecessary cleanup steps (docker rm -f, network disconnect)
- Simplify to just docker compose down before up
2026-04-06 22:07:53 +08:00
Gan, Jimmy
a86f11a3db
fix: correct test assertions and add dependency caching
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m18s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
- Fix logout test to expect {ok: true} instead of {message: ...}
- Fix logout without auth test (endpoint doesn't require auth)
- Fix password change tests to use current_password instead of old_password
- Fix password change error code expectation (400 instead of 401)
- Add Python venv caching to speed up backend tests
- Add Node modules caching to speed up frontend tests
- Cache is keyed by requirements/package-lock file hashes
2026-04-06 22:03:10 +08:00
Gan, Jimmy
6f838b76bc
fix: replace GitHub actions with direct commands in test workflow
...
Run Tests / Backend Tests (push) Failing after 11m19s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Replace actions/checkout@v4 and actions/setup-* with direct git clone
and version checks to avoid GitHub connectivity issues.
2026-04-06 21:34:13 +08:00
Gan, Jimmy
cc3c56f7df
fix: remove networks from compose, connect manually after
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m22s
Run Tests / Backend Tests (push) Failing after 16m26s
Run Tests / Frontend Tests (push) Failing after 1m44s
Run Tests / Test Summary (push) Failing after 22s
Docker compose fails to connect to multiple external networks during
container creation. Create container first, then manually connect.
2026-04-06 21:04:54 +08:00
Gan, Jimmy
c6cf757d6b
fix: add aggressive cleanup before deploying
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m17s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
Stop container, disconnect from networks, then redeploy to avoid
'Container cannot be connected to network endpoints' error.
2026-04-06 21:01:15 +08:00
Gan, Jimmy
ce3a5fc6ef
fix: use direct git clone instead of actions/checkout
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m23s
Run Tests / Backend Tests (push) Failing after 44s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Replace actions/checkout@v4 (which requires GitHub access) with
direct git clone from Gitea to avoid network connectivity issues.
2026-04-06 20:56:41 +08:00
Gan, Jimmy
1b7161b82b
fix: remove manual network connect (already in compose file)
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m46s
Run Tests / Backend Tests (push) Failing after 45s
Run Tests / Frontend Tests (push) Failing after 37s
Run Tests / Test Summary (push) Failing after 16s
The compose file already declares both networks, so the manual
docker network connect causes a conflict.
2026-04-06 20:52:15 +08:00
Gan, Jimmy
6db672a56e
fix: revert to runs-on: ubuntu-latest (the working configuration)
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m31s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
The runner was always configured with ubuntu-latest label, not nas.
Using ubuntu-latest with Docker-in-Docker works because runner has
/volume1/docker/nas-dashboard in valid_volumes.
Also keep the network creation fix to prevent duplicates.
2026-04-06 20:48:44 +08:00
Gan, Jimmy
3e62abfc65
fix: clone repo into /tmp for runner accessibility
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m5s
Run Tests / Backend Tests (push) Failing after 2m46s
Run Tests / Frontend Tests (push) Failing after 1m59s
Run Tests / Test Summary (push) Failing after 14s
Runner container doesn't have access to /volume1/repos, so clone
into /tmp which is accessible. Clean up after deployment.
2026-04-06 19:34:10 +08:00
Gan, Jimmy
81c06ee5b3
fix: use direct git commands instead of actions/checkout
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 0s
Run Tests / Backend Tests (push) Failing after 2m7s
Run Tests / Frontend Tests (push) Failing after 3m8s
Run Tests / Test Summary (push) Failing after 18s
Replace actions/checkout@v4 with direct git commands to avoid
GitHub connectivity issues. Use absolute paths for all operations.
2026-04-06 19:26:17 +08:00
Gan, Jimmy
c1e8e9b1a4
fix: revert to runs-on: nas now that runner has nas label
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 30s
Run Tests / Backend Tests (push) Failing after 37s
Run Tests / Frontend Tests (push) Failing after 41s
Run Tests / Test Summary (push) Failing after 17s
Runner now has nas:host label which runs directly on NAS host,
avoiding Docker-in-Docker and GitHub connectivity issues.
2026-04-06 19:19:44 +08:00
Gan, Jimmy
dc6aefd0ab
fix: prevent duplicate network creation in deploy-dev
...
Run Tests / Backend Tests (push) Waiting to run
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 16m40s
Run Tests / Frontend Tests (push) Has started running
Run Tests / Test Summary (push) Has been cancelled
Use docker network inspect to check if network exists before creating.
2026-04-06 18:52:40 +08:00
Gan, Jimmy
555a3209dc
fix: change deploy-dev runner from 'nas' to 'ubuntu-latest'
...
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
The runner only has ubuntu labels, not 'nas', causing workflows to get stuck in queued state.
2026-04-06 18:38:26 +08:00
Gan, Jimmy
50107a94f3
fix: restore dashboard dev CI and Immich mobile uploads
...
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
- Change deploy-dev workflow runner from ubuntu-latest to nas
Fixes: CI failing to access /volume1/docker paths
- Add missing immich-machine-learning service to compose
Fixes: Mobile photo uploads failing due to ML model download timeouts
- Add 10min timeout for model downloads (MACHINE_LEARNING_REQUEST_TIMEOUT=600)
- Add 4GB memory limit to prevent OOM during model loading
- Mount model-cache volume for persistent model storage
- Add health check and proper logging
Impact: Restores dev deployment pipeline and mobile photo backup functionality
2026-04-06 00:50:00 +08:00
Gan, Jimmy
6c7af5dff6
fix: isolate dev deployment and stabilize nas networking
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 5m14s
Run Tests / Frontend Tests (push) Failing after 10m52s
Run Tests / Backend Tests (push) Failing after 11m9s
Run Tests / Test Summary (push) Has been cancelled
2026-04-05 03:07:15 +08:00
Gan, Jimmy
bd0b68d952
fix: ensure nas-dashboard_internal network exists before docker run
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 7m24s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
2026-04-05 02:41:18 +08:00
Gan, Jimmy
135f9468ec
fix: restore bridge networking for dev deployment to fix port 4000 conflict with production
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 7m46s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
2026-04-05 02:26:38 +08:00
Gan, Jimmy
f0d3652c81
fix: add missing SECRET_KEY to dev deployment workflow to prevent crash loops
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 6m11s
Run Tests / Backend Tests (push) Failing after 1m34s
Run Tests / Frontend Tests (push) Failing after 7m5s
Run Tests / Test Summary (push) Failing after 27s
2026-04-05 02:06:40 +08:00
Gan, Jimmy
585a4c0500
ci: enforce strict v8 memory and thread limit to prevent CI from crashing the NAS kernel
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 11m14s
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 14m4s
Run Tests / Backend Tests (push) Failing after 16m38s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has started running
2026-04-05 00:39:46 +08:00
Gan, Jimmy
6bc81f409c
ci: fix workflow stability by using standard actions
2026-04-04 23:18:24 +08:00
Gan, Jimmy
939a99ac22
fix: use full git clone in test workflow to ensure SHA is available
Run Tests / Test Summary (push) Blocked by required conditions
Run Tests / Backend Tests (push) Failing after 9m59s
Run Tests / Frontend Tests (push) Failing after 2h2m49s
2026-04-04 19:54:30 +08:00
Gan, Jimmy
8aa48d26b7
fix: force remove existing container before deploying
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 6m40s
Run Tests / Backend Tests (push) Failing after 8m58s
Run Tests / Frontend Tests (push) Has started running
Run Tests / Test Summary (push) Has been cancelled
2026-04-04 18:25:11 +08:00
Gan, Jimmy
c296a8e50a
fix: use host network for dashboard deployment in CI
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m6s
Run Tests / Backend Tests (push) Failing after 5m11s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has started running
Avoid network conflicts by using host network instead of bridge networks.
The runner is already in gitea_gitea network causing endpoint conflicts.
2026-04-04 18:07:12 +08:00
Gan, Jimmy
0dd836131e
fix: use docker compose down before deploying dashboard
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 4m29s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
Use compose down --remove-orphans to properly clean up before deployment.
2026-04-04 18:00:26 +08:00
Gan, Jimmy
9fd16a42fe
fix: create required Docker networks before deploying dashboard
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 2m47s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
2026-04-04 17:55:21 +08:00
Gan, Jimmy
7af1e3cfc4
fix: create nas-dashboard directory before copying compose file
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 2m14s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
2026-04-04 17:51:07 +08:00
Gan, Jimmy
71e1991420
fix: set DOCKER_API_VERSION=1.43 for all docker commands
...
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 2m12s
Run Tests / Backend Tests (push) Failing after 3m54s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has started running
The runner's Docker client version 1.53 is too new for the NAS daemon (1.43).
Export DOCKER_API_VERSION=1.43 in all steps that use docker commands.
2026-04-04 17:26:53 +08:00
Gan, Jimmy
7dd2d6df9f
fix: use manual checkout instead of GitHub Actions
...
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 10m10s
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 4m22s
Gitea Actions runner cannot fetch actions from GitHub (connection reset).
Revert to manual git clone for checkout and direct tool installation.
2026-04-04 17:03:22 +08:00
Gan, Jimmy
c3ab14fa30
perf: split claude-dev into base and runtime images for faster builds
...
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 10m18s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
- Create Dockerfile.base with all tools and dependencies (built once)
- Slim down Dockerfile to just copy scripts from base image
- CI checks for base image existence, builds if missing
- Runtime builds drop from ~17min to ~10sec (only copies scripts)
- Base image only needs rebuild when tools/versions change
2026-04-04 16:24:05 +08:00
Gan, Jimmy
55d3348085
fix: simplify CI workflows to run directly on runner without nested containers
...
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 15m27s
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Has started running
- Remove container blocks causing Docker-in-Docker permission issues
- Use actions/checkout@v4 instead of manual git cloning
- Use actions/setup-python@v5 and actions/setup-node@v4 for clean environments
- Remove nsenter workarounds and mount complexity
- Fix volume paths to use /volume1/docker/* directly
- Add /volume1/docker/claude-dev to runner valid_volumes config
This eliminates 20+ commits of permission/namespace hacks by letting
workflows run directly in the runner's environment which already has
Docker access and proper volume mounts configured.
2026-04-04 16:00:49 +08:00
Gan, Jimmy
87af015ef1
fix: use virtual environment for Python dependencies in CI
Run Tests / Frontend Tests (push) Waiting to run
Run Tests / Backend Tests (push) Failing after 14m51s
Run Tests / Test Summary (push) Has been cancelled
2026-04-04 15:36:09 +08:00
Gan, Jimmy
e60c5d534e
fix: use --break-system-packages for pip install in CI
Run Tests / Backend Tests (push) Failing after 6m0s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has started running
2026-04-04 15:17:22 +08:00
Gan, Jimmy
0c0f3bb6d8
fix: manually clone repo from Gitea in test workflow
Run Tests / Backend Tests (push) Failing after 1m35s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
2026-04-04 15:15:06 +08:00
Gan, Jimmy
a7fa54476d
debug: check workspace contents
Run Tests / Backend Tests (push) Failing after 4m46s
Run Tests / Frontend Tests (push) Failing after 4m27s
Run Tests / Test Summary (push) Failing after 39s
2026-04-04 15:03:40 +08:00
Gan, Jimmy
1c2ac48efd
fix: run tests without custom containers to access repo files
Run Tests / Backend Tests (push) Failing after 1m42s
Run Tests / Frontend Tests (push) Failing after 11m33s
Run Tests / Test Summary (push) Failing after 48s
2026-04-04 14:33:22 +08:00
Gan, Jimmy
8629f594a3
debug: check workspace contents in test workflow
Run Tests / Backend Tests (push) Failing after 2m41s
Run Tests / Frontend Tests (push) Failing after 10m8s
Run Tests / Test Summary (push) Has been cancelled
2026-04-04 14:11:56 +08:00
Gan, Jimmy
366d535f02
fix: simplify test workflow to avoid GitHub Actions dependencies
Run Tests / Backend Tests (push) Failing after 51s
Run Tests / Frontend Tests (push) Failing after 1m0s
Run Tests / Test Summary (push) Failing after 40s
2026-04-04 13:55:14 +08:00
Gan, Jimmy
4769297ab9
fix: use host path when executing deploy script via nsenter
Run Tests / Backend Tests (push) Failing after 14m37s
Run Tests / Frontend Tests (push) Failing after 13m3s
Run Tests / Test Summary (push) Failing after 56s
2026-04-04 12:44:25 +08:00
Gan, Jimmy
d588a48529
fix: write deploy script to host filesystem and execute via nsenter
Run Tests / Backend Tests (push) Failing after 2m5s
Run Tests / Frontend Tests (push) Failing after 7m35s
Run Tests / Test Summary (push) Failing after 11m28s
2026-04-04 11:37:47 +08:00
Gan, Jimmy
8e27885ca1
fix: add mount namespace (-m) to nsenter for filesystem access
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 5m53s
2026-04-04 11:32:37 +08:00
Gan, Jimmy
78aff7523e
fix: use full docker path in nsenter commands
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 3m7s
Run Tests / Backend Tests (push) Failing after 2m8s
Run Tests / Frontend Tests (push) Failing after 4m44s
Run Tests / Test Summary (push) Failing after 7m37s
2026-04-04 10:42:37 +08:00
Gan, Jimmy
f21f129a48
fix: add --pid=host to workflow container for nsenter access
Deploy Dashboard (Dev) / deploy-dev (push) Has started running
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-04-04 10:36:33 +08:00
Gan, Jimmy
3191381bbf
fix: use nsenter with privileged runner for deploy
Run Tests / Frontend Tests (push) Waiting to run
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 4m35s
Run Tests / Backend Tests (push) Failing after 3m24s
Run Tests / Test Summary (push) Has been cancelled
2026-04-04 10:18:18 +08:00
Gan, Jimmy
0dbf647bb7
fix: use docker run with host network for deploy to avoid permissions issue
Deploy Dashboard (Dev) / deploy-dev (push) Waiting to run
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
2026-04-04 10:11:41 +08:00
Gan, Jimmy
89d0b8d341
fix: use nsenter to run deploy in host network namespace
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 6m21s
Run Tests / Backend Tests (push) Has started running
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-04-04 10:02:43 +08:00