mirror of
https://github.com/btouchard/ackify-ce.git
synced 2026-02-08 06:48:32 -06:00
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
49 lines
1.1 KiB
TypeScript
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
|
|
}
|