Files
ackify-ce/webapp/tests/setup.ts
Benjamin a7891618c1 feat: comprehensive CI/CD refactoring with unified code coverage
Reorganize GitHub Actions workflows into reusable components and implement
complete code coverage tracking across backend, frontend, and E2E tests.

**CI/CD Improvements:**
- Split monolithic ci.yml into 6 specialized reusable workflows
- New workflows: test-backend, test-frontend, test-e2e, build-docker, security, coverage-report
- Orchestrated execution with proper dependencies and parallel jobs
- Codecov integration with multi-flag coverage (backend/frontend/e2e)

**Frontend Testing:**
- Add Vitest for unit testing with coverage-v8 provider
- Create test setup with window mocks for Ackify globals
- Add 34 unit tests for titleExtractor, referenceDetector, and http utils
- Configure Istanbul instrumentation for E2E coverage collection
- Integrate @cypress/code-coverage for E2E test coverage

**Test Infrastructure:**
- Create run-tests-suite.sh for local comprehensive test execution
- Proper Docker Compose orchestration for integration and E2E tests
- Automatic cleanup handlers with trap for test environments
- Coverage summary aggregation across all test types

**Bug Fixes:**
- Fix backend config tests after OAuth/MagicLink validation changes
- Update tests from panic expectations to error checking
- Ensure OAUTH_COOKIE_SECRET is properly configured in tests

**Configuration:**
- Add .codecov.yml for coverage reporting with flags
- Add .nycrc.json for E2E LCOV generation
- Update .gitignore for test artifacts and coverage reports
- Configure Vite for test environment and code instrumentation
2025-11-23 23:36:02 +01:00

49 lines
1.1 KiB
TypeScript

// SPDX-License-Identifier: AGPL-3.0-or-later
import { config } from '@vue/test-utils'
import { vi } from 'vitest'
// Mock window globals injectés par le backend
Object.defineProperty(window, 'ACKIFY_BASE_URL', {
value: 'http://localhost:8080',
writable: true,
configurable: true
})
Object.defineProperty(window, 'ACKIFY_VERSION', {
value: 'v0.0.0-test',
writable: true,
configurable: true
})
Object.defineProperty(window, 'ACKIFY_OAUTH_ENABLED', {
value: true,
writable: true,
configurable: true
})
Object.defineProperty(window, 'ACKIFY_MAGICLINK_ENABLED', {
value: true,
writable: true,
configurable: true
})
Object.defineProperty(window, 'ACKIFY_SMTP_ENABLED', {
value: true,
writable: true,
configurable: true
})
// Mock navigator.clipboard pour les tests
Object.defineProperty(navigator, 'clipboard', {
value: {
writeText: vi.fn(() => Promise.resolve())
},
writable: true,
configurable: true
})
// Configuration globale de @vue/test-utils
config.global.mocks = {
$t: (key: string) => key // Mock simple pour vue-i18n
}