chore: implement Phase 5 E2E tests for Tasks & Monitoring
Phase 5 adds comprehensive E2E test coverage for backup management, log viewing, import wizards, and uptime monitoring features. Backend Changes: Add POST /api/v1/uptime/monitors endpoint for creating monitors Add CreateMonitor service method with URL validation Add 9 unit tests for uptime handler create functionality Frontend Changes: Add CreateMonitorModal component to Uptime.tsx Add "Add Monitor" and "Sync with Hosts" buttons Add createMonitor() API function to uptime.ts Add data-testid attributes to 6 frontend components: Backups.tsx, Uptime.tsx, LiveLogViewer.tsx Logs.tsx, ImportCaddy.tsx, ImportCrowdSec.tsx E2E Test Files Created (7 files, ~115 tests): backups-create.spec.ts (17 tests) backups-restore.spec.ts (8 tests) logs-viewing.spec.ts (20 tests) import-caddyfile.spec.ts (20 tests) import-crowdsec.spec.ts (8 tests) uptime-monitoring.spec.ts (22 tests) real-time-logs.spec.ts (20 tests) Coverage: Backend 87.0%, Frontend 85.2%
This commit is contained in:
@@ -72,14 +72,31 @@ export const deleteMonitor = async (id: string) => {
|
||||
return response.data;
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a new uptime monitor.
|
||||
* @param data - Monitor configuration (name, url, type, interval, max_retries)
|
||||
* @returns Promise resolving to the created UptimeMonitor
|
||||
* @throws {AxiosError} If creation fails
|
||||
*/
|
||||
export const createMonitor = async (data: {
|
||||
name: string;
|
||||
url: string;
|
||||
type: string;
|
||||
interval?: number;
|
||||
max_retries?: number;
|
||||
}): Promise<UptimeMonitor> => {
|
||||
const response = await client.post<UptimeMonitor>('/uptime/monitors', data);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
/**
|
||||
* Syncs monitors with proxy hosts and remote servers.
|
||||
* @param body - Optional configuration for sync (interval, max_retries)
|
||||
* @returns Promise resolving to sync result
|
||||
* @returns Promise resolving to sync result with message
|
||||
* @throws {AxiosError} If sync fails
|
||||
*/
|
||||
export async function syncMonitors(body?: { interval?: number; max_retries?: number }) {
|
||||
const res = await client.post('/uptime/sync', body || {});
|
||||
export async function syncMonitors(body?: { interval?: number; max_retries?: number }): Promise<{ message: string }> {
|
||||
const res = await client.post<{ message: string }>('/uptime/sync', body || {});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user