Files
autotest/tests/core/interoperability.spec.ts
T
2026-05-22 11:46:43 +02:00

73 lines
3.3 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { login, BASE_URL } from '../../helpers/auth';
test.describe('core-interoperability', () => {
test.beforeEach(async ({ page }) => {
await login(page);
});
test('core-interoperability-check-addm', async ({ page }, testInfo) => {
testInfo.annotations.push({ type: 'automationStatus', description: 'automated' });
testInfo.annotations.push({ type: 'testType', description: 'check' });
testInfo.annotations.push({ type: 'description', description: 'Verify ADDM (Automatic Discovery and Dependency Mapping) integration is configured and reporting data correctly' });
await test.step('Navigate to Integrations → ADDM', async () => {
await page.goto(`${BASE_URL}/admin/integrations/addm`);
});
await test.step('Verify ADDM integration page loads without errors', async () => {
await expect(page.locator('body')).not.toContainText(/500|not found/i);
});
await test.step('Verify ADDM connection status is shown', async () => {
const status = page.locator('.connection-status, .addm-status, [data-field="addm-status"]').first();
await expect(status).toBeVisible();
});
await test.step('Verify ADDM last discovery timestamp is recent', async () => {
const tsEl = page.locator('[data-field="last-discovery"],[class*="timestamp"],[class*="last-sync"]').first();
if (await tsEl.count() > 0) {
const tsText = await tsEl.textContent() ?? '';
expect(tsText.trim()).not.toBe('');
}
});
await test.step('Verify no ADDM errors are reported', async () => {
await expect(page.locator('.alert-danger, .error-badge').filter({ hasText: /addm/i })).toHaveCount(0);
});
});
test('core-interoperability-check-siem', async ({ page }, testInfo) => {
testInfo.annotations.push({ type: 'automationStatus', description: 'automated' });
testInfo.annotations.push({ type: 'testType', description: 'check' });
testInfo.annotations.push({ type: 'description', description: 'Verify SIEM (Security Information and Event Management) integration is configured and forwarding security events' });
await test.step('Navigate to Integrations → SIEM', async () => {
await page.goto(`${BASE_URL}/admin/integrations/siem`);
});
await test.step('Verify SIEM integration page loads without errors', async () => {
await expect(page.locator('body')).not.toContainText(/500|not found/i);
});
await test.step('Verify SIEM destination (syslog/SIEM server) is configured', async () => {
const destField = page.locator('[name*="siem"],[name*="syslog"],[id*="siem"],[id*="syslog"]').first();
if (await destField.count() > 0) {
const value = await destField.inputValue();
expect(value.trim()).not.toBe('');
}
});
await test.step('Verify SIEM event forwarding is enabled', async () => {
const enableToggle = page.locator('[name*="siem_enabled"],[id*="siem-enable"],[data-field="siem-enabled"]').first();
if (await enableToggle.count() > 0) {
await expect(enableToggle).toBeChecked();
}
});
await test.step('Verify SIEM connection status shows no errors', async () => {
await expect(page.locator('.siem-status, .connection-status').filter({ hasText: /error|fail/i })).toHaveCount(0);
});
});
});