Files
breakpilot-compliance/admin-compliance/e2e/specs/sdk-module-reachability.spec.ts
T
Benjamin Admin d880c9d098 test: E2E tests — 47/49 passing against live instance
Results (https://macmini:3007):
- sdk-module-reachability: 40/42 (loeschfristen+vvt pre-existing bugs)
- vendor-transfers: 4/4
- isms-assets: 3/3
- document-generator: 3/4 (category label mismatch)

Added: playwright-live.config.ts (no webServer, live instance testing)
Test data NOT cleaned up — profiles persist for manual review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-01 19:34:37 +02:00

91 lines
2.1 KiB
TypeScript

/**
* SDK Module Reachability Test
*
* Prueft dass alle SDK-Module erreichbar sind (kein 404, kein Crash).
* Schnellster Test — findet kaputte Seiten sofort.
*/
import { test, expect } from '@playwright/test'
const BASE = process.env.PLAYWRIGHT_BASE_URL || 'https://macmini:3007'
// All SDK module routes to test
const SDK_ROUTES = [
// Phase 1: Vorbereitung
'/sdk/company-profile',
'/sdk/compliance-scope',
'/sdk/advisory-board',
'/sdk/screening',
'/sdk/source-policy',
// Phase 2: Analyse
'/sdk/requirements',
'/sdk/controls',
'/sdk/evidence',
'/sdk/risks',
'/sdk/ai-act',
'/sdk/audit-checklist',
'/sdk/audit-report',
// Phase 3: Dokumentation
'/sdk/obligations',
'/sdk/dsfa',
'/sdk/tom',
'/sdk/loeschfristen',
'/sdk/vvt',
// Phase 4: Rechtliche Texte
'/sdk/einwilligungen',
'/sdk/consent',
'/sdk/cookie-banner',
'/sdk/document-generator',
'/sdk/workflow',
// Phase 5: Betrieb
'/sdk/dsr',
'/sdk/escalations',
'/sdk/vendor-compliance',
'/sdk/vendor-compliance/transfers',
'/sdk/consent-management',
'/sdk/email-templates',
'/sdk/notfallplan',
'/sdk/incidents',
'/sdk/whistleblower',
'/sdk/academy',
'/sdk/training',
'/sdk/control-library',
// Zusatzmodule
'/sdk/isms',
'/sdk/iace',
'/sdk/agent',
'/sdk/rag',
'/sdk/quality',
'/sdk/security-backlog',
'/sdk/reporting',
'/sdk/tom-generator',
]
test.describe('SDK Module Reachability', () => {
for (const route of SDK_ROUTES) {
test(`${route} is reachable`, async ({ page }) => {
const response = await page.goto(`${BASE}${route}`, {
waitUntil: 'domcontentloaded',
timeout: 15000,
})
// Page should load successfully (not 404 or 500)
expect(response?.status()).toBeLessThan(400)
// Wait for client-side hydration
await page.waitForTimeout(2000)
// Check no visible 404 page or application error (not RSC payload)
const has404Page = await page.locator('h1').filter({ hasText: '404' }).count()
const hasAppError = await page.getByText('Application error').count()
expect(has404Page).toBe(0)
expect(hasAppError).toBe(0)
})
}
})