PSA/ee/server/vitest.config.ts
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

157 lines
13 KiB
TypeScript

import { defineConfig } from 'vitest/config';
import path from 'path';
export default defineConfig({
test: {
globals: true,
environment: 'node',
setupFiles: ['./src/__tests__/setup.ts'],
globalSetup: ['./vitest.globalSetup.js'],
isolate: true,
sequence: {
concurrent: false,
shuffle: true
},
pool: 'forks',
poolOptions: {
threads: {
singleThread: true
},
forks: {
singleFork: true
}
},
logHeapUsage: true,
testTimeout: 30000, // Increased for integration tests
include: [
'src/__tests__/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
'src/__tests__/**/*.playwright.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
'src/components/**/__tests__/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'
]
},
resolve: {
alias: [
// EE alias used in code/tests.
{ find: /^@ee\/(.*)$/, replacement: `${path.resolve(__dirname, './src')}/$1` },
{ find: /^@enterprise$/, replacement: `${path.resolve(__dirname, '../../packages/ee/src/index.ts')}` },
{ find: /^@enterprise\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/ee/src')}/$1` },
// Match tsconfig-style subpath overrides before the generic `@/` mapping.
{ find: /^@\/lib\/db\/db$/, replacement: `${path.resolve(__dirname, '../../server/src/lib/db/db.tsx')}` },
{ find: /^@\/lib\/db\/index$/, replacement: `${path.resolve(__dirname, '../../server/src/lib/db/index.ts')}` },
{ find: /^@\/lib\/iap\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/lib/iap')}/$1` },
{ find: /^@\/config\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/config')}/$1` },
{ find: /^@\/utils\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/utils')}/$1` },
{ find: /^@\/interfaces\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/interfaces')}/$1` },
{ find: /^@\/models\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/models')}/$1` },
{ find: /^@\/services\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/services')}/$1` },
{ find: /^@\/hooks\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/hooks')}/$1` },
{ find: /^@\/constants\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/constants')}/$1` },
{ find: /^@\/context\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/context')}/$1` },
{ find: /^@\/middleware\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/middleware')}/$1` },
{ find: /^@\/pages\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/pages')}/$1` },
{ find: /^@\/components\/(.*)$/, replacement: `${path.resolve(__dirname, '../../server/src/components')}/$1` },
// Generic `@/` => EE source root.
{ find: /^@\//, replacement: `${path.resolve(__dirname, './src')}/` },
// Root shared + server imports.
{ find: /^@shared\/(.*)$/, replacement: `${path.resolve(__dirname, '../../shared')}/$1` },
{ find: /^@alga-psa\/shared\/(.*)$/, replacement: `${path.resolve(__dirname, '../../shared')}/$1` },
{ find: /^@alga-psa\/workflow-streams$/, replacement: `${path.resolve(__dirname, '../../packages/workflow-streams/src/streams/index.ts')}` },
{ find: /^@alga-psa\/ui\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/ui/src')}/$1` },
{ find: /^@alga-psa\/ui$/, replacement: `${path.resolve(__dirname, '../../packages/ui/src/index.ts')}` },
{ find: /^@alga-psa\/billing$/, replacement: `${path.resolve(__dirname, '../../packages/billing/src/index.ts')}` },
{ find: /^@alga-psa\/billing\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/billing/src')}/$1` },
{ find: /^@alga-psa\/tenancy\/actions$/, replacement: `${path.resolve(__dirname, '../../packages/tenancy/src/actions/index.ts')}` },
{ find: /^@alga-psa\/tags$/, replacement: `${path.resolve(__dirname, '../../packages/tags/src/index.ts')}` },
{ find: /^@alga-psa\/tags\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/tags/src')}/$1` },
{ find: /^@alga-psa\/integrations$/, replacement: `${path.resolve(__dirname, '../../packages/integrations/src/index.ts')}` },
{ find: /^@alga-psa\/integrations\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/integrations/src')}/$1` },
{ find: /^@alga-psa\/event-bus$/, replacement: `${path.resolve(__dirname, '../../packages/event-bus/src/index.ts')}` },
{ find: /^@alga-psa\/event-bus\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/event-bus/src')}/$1` },
{ find: /^@alga-psa\/scheduling$/, replacement: `${path.resolve(__dirname, '../../packages/scheduling/src/index.ts')}` },
{ find: /^@alga-psa\/scheduling\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/scheduling/src')}/$1` },
{ find: /^@alga-psa\/documents$/, replacement: `${path.resolve(__dirname, '../../packages/documents/src/index.ts')}` },
{ find: /^@alga-psa\/documents\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/documents/src')}/$1` },
{ find: /^@alga-psa\/storage$/, replacement: `${path.resolve(__dirname, '../../packages/storage/src/index.ts')}` },
{ find: /^@alga-psa\/storage\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/storage/src')}/$1` },
{ find: /^@alga-psa\/ee-stubs$/, replacement: `${path.resolve(__dirname, './src/index.ts')}` },
{ find: /^@alga-psa\/ee-stubs\/(.*)$/, replacement: `${path.resolve(__dirname, './src')}/$1` },
{ find: /^@alga-psa\/clients$/, replacement: `${path.resolve(__dirname, '../../packages/clients/src/index.ts')}` },
{ find: /^@alga-psa\/clients\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/clients/src')}/$1` },
{ find: /^@alga-psa\/tickets$/, replacement: `${path.resolve(__dirname, '../../packages/tickets/src/index.ts')}` },
{ find: /^@alga-psa\/tickets\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/tickets/src')}/$1` },
{ find: /^@alga-psa\/projects$/, replacement: `${path.resolve(__dirname, '../../packages/projects/src/index.ts')}` },
{ find: /^@alga-psa\/projects\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/projects/src')}/$1` },
{ find: /^@alga-psa\/teams$/, replacement: `${path.resolve(__dirname, '../../packages/teams/src/index.ts')}` },
{ find: /^@alga-psa\/teams\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/teams/src')}/$1` },
{ find: /^@alga-psa\/assets$/, replacement: `${path.resolve(__dirname, '../../packages/assets/src/index.ts')}` },
{ find: /^@alga-psa\/assets\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/assets/src')}/$1` },
{ find: /^@alga-psa\/surveys$/, replacement: `${path.resolve(__dirname, '../../packages/surveys/src/index.ts')}` },
{ find: /^@alga-psa\/surveys\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/surveys/src')}/$1` },
{ find: /^@alga-psa\/notifications$/, replacement: `${path.resolve(__dirname, '../../packages/notifications/src/index.ts')}` },
{ find: /^@alga-psa\/notifications\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/notifications/src')}/$1` },
{ find: /^@alga-psa\/product-extension-actions$/, replacement: `${path.resolve(__dirname, '../../packages/product-extension-actions/oss/entry.ts')}` },
{ find: /^@product\/billing\/entry$/, replacement: `${path.resolve(__dirname, '../../packages/product-billing/oss/entry.tsx')}` },
{ find: /^@alga-psa\/user-composition$/, replacement: `${path.resolve(__dirname, '../../packages/user-composition/src/index.ts')}` },
{ find: /^@alga-psa\/user-composition\/actions$/, replacement: `${path.resolve(__dirname, '../../packages/user-composition/src/actions/index.ts')}` },
{ find: /^@alga-psa\/user-composition\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/user-composition/src')}/$1` },
{ find: /^@alga-psa\/types$/, replacement: `${path.resolve(__dirname, '../../packages/types/src/index.ts')}` },
{ find: /^@alga-psa\/types\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/types/src')}/$1` },
{ find: /^@alga-psa\/validation$/, replacement: `${path.resolve(__dirname, '../../packages/validation/src/index.ts')}` },
{ find: /^@alga-psa\/validation\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/validation/src')}/$1` },
{ find: /^@alga-psa\/auth$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/index.ts')}` },
{ find: /^@alga-psa\/auth\/sso\/entry$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/components/SsoProviderButtons.tsx')}` },
{ find: /^@alga-psa\/auth\/session$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/session.ts')}` },
{ find: /^@alga-psa\/auth\/rbac$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/rbac.ts')}` },
{ find: /^@alga-psa\/auth\/withAuth$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/withAuth.ts')}` },
{ find: /^@alga-psa\/auth\/apiAuth$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/apiAuth.ts')}` },
{ find: /^@alga-psa\/auth\/types\/next-auth$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/types/next-auth.ts')}` },
{ find: /^@alga-psa\/auth\/lib\/sso\/mspSsoResolution$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/sso/mspSsoResolution.ts')}` },
{ find: /^@alga-psa\/auth\/deviceFingerprint$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/deviceFingerprint.ts')}` },
{ find: /^@alga-psa\/auth\/ipAddress$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/ipAddress.ts')}` },
{ find: /^@alga-psa\/auth\/geolocation$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/geolocation.ts')}` },
{ find: /^@alga-psa\/auth\/twoFactorHelpers$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/twoFactorHelpers.ts')}` },
{ find: /^@alga-psa\/auth\/lib\/mspRememberedEmail$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/mspRememberedEmail.ts')}` },
{ find: /^@alga-psa\/auth\/nextAuthOptions$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/nextAuthOptions.ts')}` },
{ find: /^@alga-psa\/auth\/getCurrentUser$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src/lib/getCurrentUser.ts')}` },
{ find: /^@alga-psa\/auth\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/auth/src')}/$1` },
{ find: /^@alga-psa\/analytics$/, replacement: `${path.resolve(__dirname, '../../packages/analytics/src/index.ts')}` },
{ find: /^@alga-psa\/analytics\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/analytics/src')}/$1` },
{ find: /^@alga-psa\/event-schemas$/, replacement: `${path.resolve(__dirname, '../../packages/event-schemas/src/index.ts')}` },
{ find: /^@alga-psa\/event-schemas\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/event-schemas/src')}/$1` },
{ find: /^@alga-psa\/core\/server$/, replacement: `${path.resolve(__dirname, '../../packages/core/src/server.ts')}` },
{ find: /^@alga-psa\/core\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/core/src/lib')}/$1` },
{ find: /^@alga-psa\/core$/, replacement: `${path.resolve(__dirname, '../../packages/core/src/index.ts')}` },
{ find: /^@alga-psa\/db\/admin$/, replacement: `${path.resolve(__dirname, '../../packages/db/src/lib/admin.ts')}` },
{ find: /^@alga-psa\/db\/models$/, replacement: `${path.resolve(__dirname, '../../packages/db/src/models/index.ts')}` },
{ find: /^@alga-psa\/db\/models\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/db/src/models')}/$1` },
{ find: /^@alga-psa\/db\/(.*)$/, replacement: `${path.resolve(__dirname, '../../packages/db/src/lib')}/$1` },
{ find: /^@alga-psa\/db$/, replacement: `${path.resolve(__dirname, '../../packages/db/src/index.ts')}` },
// Convenience aliases used by tests/code.
{ find: '@main-server', replacement: path.resolve(__dirname, '../../server/src') },
{ find: '@main-test-utils', replacement: path.resolve(__dirname, '../../server/test-utils') },
{ find: 'server', replacement: path.resolve(__dirname, '../../server') },
// Next.js server stubs for non-Next test runtime (required by next-auth env helpers).
{ find: 'fs', replacement: 'node:fs' },
{ find: 'fs/promises', replacement: 'node:fs/promises' },
{ find: 'next/server', replacement: path.resolve(__dirname, '../../server/src/test/stubs/next-server.ts') },
],
},
server: {
deps: {
inline: [
'next-auth',
'@auth/core',
'next',
],
},
fs: {
allow: [path.resolve(__dirname, '../..')],
},
},
});