1.0: tenant isolation hardening, the satellite split, and a real benchmark suite #170
ci.yml
on: pull_request
Lint & Typecheck
49s
Integration Tests
3m 5s
E2E (websockets demo)
1m 14s
E2E (demo app)
1m 53s
Deploy assets (static validation)
11s
Deploy E2E (compose stack)
2m 51s
Aggregate coverage (unit + integration)
0s
Annotations
11 errors and 18 warnings
|
Lint & Typecheck
Process completed with exit code 1.
|
|
ImpersonationMiddleware (integration, HTTP + real Redis) / valid token: ctx.impersonation is the public context for the session:
tests/integration/middleware/impersonation_middleware.spec.ts#L70
expected 401 to equal 200
- Expected - 1
+ Received + 1
- 200
+ 401
|
|
enforceRateLimit plan-aware (integration, real Redis + PG) / per-tenant isolation: one tenant exhausting its budget does not affect another:
tests/integration/middleware/enforce_rate_limit_plan_aware.spec.ts#L61
expected 400 to equal 429
- Expected - 1
+ Received + 1
- 429
+ 400
|
|
enforceRateLimit plan-aware (integration, real Redis + PG) / a pro tenant gets the higher plan ceiling (10), proving per-tier limits:
tests/integration/middleware/enforce_rate_limit_plan_aware.spec.ts#L43
expected 400 to equal 200
- Expected - 1
+ Received + 1
- 200
+ 400
|
|
enforceRateLimit plan-aware (integration, real Redis + PG) / a starter tenant (default plan) is limited to its plan ceiling of 3:
tests/integration/middleware/enforce_rate_limit_plan_aware.spec.ts#L20
expected 400 to equal 200
- Expected - 1
+ Received + 1
- 200
+ 400
|
|
Tenant backend outage → 503 fail-closed (integration) / Universal route fails closed (503), not central-mode 200, when the registry is unreachable:
tests/integration/middleware/connection_failure_503.spec.ts#L128
expected 200 to equal 503
- Expected - 1
+ Received + 1
- 503
+ 200
|
|
Tenant backend outage → 503 fail-closed (integration) / TenantGuard route returns 503 when the central tenant registry is unreachable:
tests/integration/middleware/connection_failure_503.spec.ts#L114
expected 400 to equal 503
- Expected - 1
+ Received + 1
- 503
+ 400
|
|
Tenant backend outage → 503 fail-closed (integration) / Universal route surfaces 503, not a central-mode 200, for a resolved tenant whose DB is down:
tests/integration/middleware/connection_failure_503.spec.ts#L86
expected 200 to equal 503
- Expected - 1
+ Received + 1
- 503
+ 200
|
|
Tenant backend outage → 503 fail-closed (integration) / TenantGuard route returns 503 when the tenant DB is unreachable:
tests/integration/middleware/connection_failure_503.spec.ts#L70
expected 400 to equal 503
- Expected - 1
+ Received + 1
- 503
+ 400
|
|
bootstrapper enter/leave fire on the HTTP request path / universal route (/universal/ping) runs the bootstrapper lifecycle:
tests/integration/middleware/bootstrappers_run_on_http.spec.ts#L94
enter() must fire on a universal HTTP request with a tenant: expected +0 to be at least 1
- Expected - 1
+ Received + 1
- 1
+ 0
|
|
bootstrapper enter/leave fire on the HTTP request path / guarded route (/tenant/ping) runs the bootstrapper lifecycle:
tests/integration/middleware/bootstrappers_run_on_http.spec.ts#L76
expected 400 to equal 200
- Expected - 1
+ Received + 1
- 200
+ 400
|
|
Deploy assets (static validation)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Lint & Typecheck
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/reporting-unit. No artifacts will be uploaded.
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/websockets-unit. No artifacts will be uploaded.
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/billing-unit. No artifacts will be uploaded.
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/admin-unit. No artifacts will be uploaded.
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/backup-unit. No artifacts will be uploaded.
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/sso-unit. No artifacts will be uploaded.
|
|
Lint & Typecheck
No files were found with the provided path: coverage/.v8/unit. No artifacts will be uploaded.
|
|
E2E (websockets demo)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
E2E (demo app)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Deploy E2E (compose stack)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8, docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Integration Tests
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Integration Tests
No files were found with the provided path: coverage/.v8/reporting-integration. No artifacts will be uploaded.
|
|
Integration Tests
No files were found with the provided path: coverage/.v8/billing-integration. No artifacts will be uploaded.
|
|
Integration Tests
No files were found with the provided path: coverage/.v8/admin-integration. No artifacts will be uploaded.
|
|
Integration Tests
No files were found with the provided path: coverage/.v8/backup-integration. No artifacts will be uploaded.
|
|
Integration Tests
No files were found with the provided path: coverage/.v8/sso-integration. No artifacts will be uploaded.
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
Arcoders~Adonisjs-lasagna-saas-tenancy~YNZHZQ.dockerbuild
|
48.2 KB |
sha256:53876953d27a7ec6fddae12d4887140ec69899216f734a37896416710e3e3b13
|
|
|
c8-raw-integration
|
1.86 MB |
sha256:7ad4a032d4a92e63f14c8055f8e192db5a17565ad6bb2427f6ba9324b70e1ebc
|
|
|
c8-raw-websockets-integration
|
439 KB |
sha256:b6d86e1de13412b283702dc45a35934b26e327a1354f4dec61786feaa1074269
|
|