67 | await expect(dialog).not.toBeVisible({ timeout: 10000 });
+ | ^
+ 68 | });
+ 69 |
+ 70 | await test.step('Verify success', async () => {
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:67:34
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:40:7
+Error: 1) [chromium] › tests/dns-provider-crud.spec.ts:16:5 › DNS Provider CRUD Operations › Create Provider › should create a Manual DNS provider › Save provider
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(locator).not.toBeVisible() failed
+
+ Locator: getByRole('dialog')
+ Expected: not visible
+ Received: visible
+ Timeout: 10000ms
+
+ Call log:
+ - Expect "not toBeVisible" with timeout 10000ms
+ - waiting for getByRole('dialog')
+ 14 × locator resolved to
67 | await expect(dialog).not.toBeVisible({ timeout: 10000 });
+ | ^
+ 68 | });
+ 69 |
+ 70 | await test.step('Verify success', async () => {
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:67:34
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:40:7
+Error: 1) [chromium] › tests/dns-provider-crud.spec.ts:16:5 › DNS Provider CRUD Operations › Create Provider › should create a Manual DNS provider › Save provider
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(locator).not.toBeVisible() failed
+
+ Locator: getByRole('dialog')
+ Expected: not visible
+ Received: visible
+ Timeout: 10000ms
+
+ Call log:
+ - Expect "not toBeVisible" with timeout 10000ms
+ - waiting for getByRole('dialog')
+ 14 × locator resolved to
67 | await expect(dialog).not.toBeVisible({ timeout: 10000 });
+ | ^
+ 68 | });
+ 69 |
+ 70 | await test.step('Verify success', async () => {
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:67:34
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:40:7
+Error: 2) [chromium] › tests/dns-provider-crud.spec.ts:501:5 › DNS Provider CRUD Operations › API Operations › should list providers via API
+ Error: expect(received).toBeTruthy()
+
+ Received: false
+
+ 449 | test('should list providers via API', async ({ request }) => {
+ 450 | const response = await request.get('/api/v1/dns-providers');
+ > 451 | expect(response.ok()).toBeTruthy();
+ | ^
+ 452 |
+ 453 | const data = await response.json();
+ 454 | // Response should be an array (possibly empty)
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:451:29
+Error: 2) [chromium] › tests/dns-provider-crud.spec.ts:501:5 › DNS Provider CRUD Operations › API Operations › should list providers via API
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBeTruthy()
+
+ Received: false
+
+ 449 | test('should list providers via API', async ({ request }) => {
+ 450 | const response = await request.get('/api/v1/dns-providers');
+ > 451 | expect(response.ok()).toBeTruthy();
+ | ^
+ 452 |
+ 453 | const data = await response.json();
+ 454 | // Response should be an array (possibly empty)
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:451:29
+Error: 2) [chromium] › tests/dns-provider-crud.spec.ts:501:5 › DNS Provider CRUD Operations › API Operations › should list providers via API
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBeTruthy()
+
+ Received: false
+
+ 449 | test('should list providers via API', async ({ request }) => {
+ 450 | const response = await request.get('/api/v1/dns-providers');
+ > 451 | expect(response.ok()).toBeTruthy();
+ | ^
+ 452 |
+ 453 | const data = await response.json();
+ 454 | // Response should be an array (possibly empty)
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:451:29
+Error: 3) [chromium] › tests/dns-provider-crud.spec.ts:534:5 › DNS Provider CRUD Operations › API Operations › should reject invalid provider type via API
+ Error: expect(received).toBe(expected) // Object.is equality
+
+ Expected: 400
+ Received: 404
+
+ 489 |
+ 490 | // Should return 400 Bad Request for invalid type
+ > 491 | expect(response.status()).toBe(400);
+ | ^
+ 492 | });
+ 493 |
+ 494 | test('should get single provider via API', async ({ request }) => {
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:491:33
+Error: 3) [chromium] › tests/dns-provider-crud.spec.ts:534:5 › DNS Provider CRUD Operations › API Operations › should reject invalid provider type via API
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBe(expected) // Object.is equality
+
+ Expected: 400
+ Received: 404
+
+ 489 |
+ 490 | // Should return 400 Bad Request for invalid type
+ > 491 | expect(response.status()).toBe(400);
+ | ^
+ 492 | });
+ 493 |
+ 494 | test('should get single provider via API', async ({ request }) => {
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:491:33
+Error: 3) [chromium] › tests/dns-provider-crud.spec.ts:534:5 › DNS Provider CRUD Operations › API Operations › should reject invalid provider type via API
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBe(expected) // Object.is equality
+
+ Expected: 400
+ Received: 404
+
+ 489 |
+ 490 | // Should return 400 Bad Request for invalid type
+ > 491 | expect(response.status()).toBe(400);
+ | ^
+ 492 | });
+ 493 |
+ 494 | test('should get single provider via API', async ({ request }) => {
+ at /home/runner/work/Charon/Charon/tests/dns-provider-crud.spec.ts:491:33
+Error: 4) [chromium] › tests/dns-provider-types.spec.ts:15:5 › DNS Provider Types › API: /api/v1/dns-providers/types › should return all provider types including built-in and custom
+ Error: expect(received).toBeTruthy()
+
+ Received: false
+
+ 15 | test('should return all provider types including built-in and custom', async ({ request }) => {
+ 16 | const response = await request.get('/api/v1/dns-providers/types');
+ > 17 | expect(response.ok()).toBeTruthy();
+ | ^
+ 18 |
+ 19 | const data = await response.json();
+ 20 | // API returns { types: [...], total: N }
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:17:29
+Error: 4) [chromium] › tests/dns-provider-types.spec.ts:15:5 › DNS Provider Types › API: /api/v1/dns-providers/types › should return all provider types including built-in and custom
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBeTruthy()
+
+ Received: false
+
+ 15 | test('should return all provider types including built-in and custom', async ({ request }) => {
+ 16 | const response = await request.get('/api/v1/dns-providers/types');
+ > 17 | expect(response.ok()).toBeTruthy();
+ | ^
+ 18 |
+ 19 | const data = await response.json();
+ 20 | // API returns { types: [...], total: N }
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:17:29
+Error: 4) [chromium] › tests/dns-provider-types.spec.ts:15:5 › DNS Provider Types › API: /api/v1/dns-providers/types › should return all provider types including built-in and custom
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBeTruthy()
+
+ Received: false
+
+ 15 | test('should return all provider types including built-in and custom', async ({ request }) => {
+ 16 | const response = await request.get('/api/v1/dns-providers/types');
+ > 17 | expect(response.ok()).toBeTruthy();
+ | ^
+ 18 |
+ 19 | const data = await response.json();
+ 20 | // API returns { types: [...], total: N }
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:17:29
+Error: 5) [chromium] › tests/dns-provider-types.spec.ts:36:5 › DNS Provider Types › API: /api/v1/dns-providers/types › each provider type should have required fields
+ TypeError: types is not iterable
+
+ 39 | const types = data.types;
+ 40 |
+ > 41 | for (const provider of types) {
+ | ^
+ 42 | expect(provider).toHaveProperty('type');
+ 43 | expect(provider).toHaveProperty('name');
+ 44 | expect(provider).toHaveProperty('fields');
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:41:30
+Error: 5) [chromium] › tests/dns-provider-types.spec.ts:36:5 › DNS Provider Types › API: /api/v1/dns-providers/types › each provider type should have required fields
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: types is not iterable
+
+ 39 | const types = data.types;
+ 40 |
+ > 41 | for (const provider of types) {
+ | ^
+ 42 | expect(provider).toHaveProperty('type');
+ 43 | expect(provider).toHaveProperty('name');
+ 44 | expect(provider).toHaveProperty('fields');
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:41:30
+Error: 5) [chromium] › tests/dns-provider-types.spec.ts:36:5 › DNS Provider Types › API: /api/v1/dns-providers/types › each provider type should have required fields
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: types is not iterable
+
+ 39 | const types = data.types;
+ 40 |
+ > 41 | for (const provider of types) {
+ | ^
+ 42 | expect(provider).toHaveProperty('type');
+ 43 | expect(provider).toHaveProperty('name');
+ 44 | expect(provider).toHaveProperty('fields');
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:41:30
+Error: 6) [chromium] › tests/dns-provider-types.spec.ts:49:5 › DNS Provider Types › API: /api/v1/dns-providers/types › manual provider type should have correct configuration
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 52 | const types = data.types;
+ 53 |
+ > 54 | const manualProvider = types.find((t: { type: string }) => t.type === 'manual');
+ | ^
+ 55 | expect(manualProvider).toBeDefined();
+ 56 | expect(manualProvider.name).toMatch(/manual/i);
+ 57 |
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:54:36
+Error: 6) [chromium] › tests/dns-provider-types.spec.ts:49:5 › DNS Provider Types › API: /api/v1/dns-providers/types › manual provider type should have correct configuration
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 52 | const types = data.types;
+ 53 |
+ > 54 | const manualProvider = types.find((t: { type: string }) => t.type === 'manual');
+ | ^
+ 55 | expect(manualProvider).toBeDefined();
+ 56 | expect(manualProvider.name).toMatch(/manual/i);
+ 57 |
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:54:36
+Error: 6) [chromium] › tests/dns-provider-types.spec.ts:49:5 › DNS Provider Types › API: /api/v1/dns-providers/types › manual provider type should have correct configuration
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 52 | const types = data.types;
+ 53 |
+ > 54 | const manualProvider = types.find((t: { type: string }) => t.type === 'manual');
+ | ^
+ 55 | expect(manualProvider).toBeDefined();
+ 56 | expect(manualProvider.name).toMatch(/manual/i);
+ 57 |
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:54:36
+Error: 7) [chromium] › tests/dns-provider-types.spec.ts:62:5 › DNS Provider Types › API: /api/v1/dns-providers/types › webhook provider type should have url field
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 65 | const types = data.types;
+ 66 |
+ > 67 | const webhookProvider = types.find((t: { type: string }) => t.type === 'webhook');
+ | ^
+ 68 | expect(webhookProvider).toBeDefined();
+ 69 |
+ 70 | // Webhook should have URL configuration field
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:67:37
+Error: 7) [chromium] › tests/dns-provider-types.spec.ts:62:5 › DNS Provider Types › API: /api/v1/dns-providers/types › webhook provider type should have url field
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 65 | const types = data.types;
+ 66 |
+ > 67 | const webhookProvider = types.find((t: { type: string }) => t.type === 'webhook');
+ | ^
+ 68 | expect(webhookProvider).toBeDefined();
+ 69 |
+ 70 | // Webhook should have URL configuration field
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:67:37
+Error: 7) [chromium] › tests/dns-provider-types.spec.ts:62:5 › DNS Provider Types › API: /api/v1/dns-providers/types › webhook provider type should have url field
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 65 | const types = data.types;
+ 66 |
+ > 67 | const webhookProvider = types.find((t: { type: string }) => t.type === 'webhook');
+ | ^
+ 68 | expect(webhookProvider).toBeDefined();
+ 69 |
+ 70 | // Webhook should have URL configuration field
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:67:37
+Error: 8) [chromium] › tests/dns-provider-types.spec.ts:75:5 › DNS Provider Types › API: /api/v1/dns-providers/types › rfc2136 provider type should have server and key fields
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 78 | const types = data.types;
+ 79 |
+ > 80 | const rfc2136Provider = types.find((t: { type: string }) => t.type === 'rfc2136');
+ | ^
+ 81 | expect(rfc2136Provider).toBeDefined();
+ 82 |
+ 83 | // RFC2136 (Dynamic DNS) should have server and TSIG key fields
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:80:37
+Error: 8) [chromium] › tests/dns-provider-types.spec.ts:75:5 › DNS Provider Types › API: /api/v1/dns-providers/types › rfc2136 provider type should have server and key fields
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 78 | const types = data.types;
+ 79 |
+ > 80 | const rfc2136Provider = types.find((t: { type: string }) => t.type === 'rfc2136');
+ | ^
+ 81 | expect(rfc2136Provider).toBeDefined();
+ 82 |
+ 83 | // RFC2136 (Dynamic DNS) should have server and TSIG key fields
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:80:37
+Error: 8) [chromium] › tests/dns-provider-types.spec.ts:75:5 › DNS Provider Types › API: /api/v1/dns-providers/types › rfc2136 provider type should have server and key fields
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 78 | const types = data.types;
+ 79 |
+ > 80 | const rfc2136Provider = types.find((t: { type: string }) => t.type === 'rfc2136');
+ | ^
+ 81 | expect(rfc2136Provider).toBeDefined();
+ 82 |
+ 83 | // RFC2136 (Dynamic DNS) should have server and TSIG key fields
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:80:37
+Error: 9) [chromium] › tests/dns-provider-types.spec.ts:88:5 › DNS Provider Types › API: /api/v1/dns-providers/types › script provider type should have command/path field
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 91 | const types = data.types;
+ 92 |
+ > 93 | const scriptProvider = types.find((t: { type: string }) => t.type === 'script');
+ | ^
+ 94 | expect(scriptProvider).toBeDefined();
+ 95 |
+ 96 | // Script provider should have a command or script path field
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:93:36
+Error: 9) [chromium] › tests/dns-provider-types.spec.ts:88:5 › DNS Provider Types › API: /api/v1/dns-providers/types › script provider type should have command/path field
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 91 | const types = data.types;
+ 92 |
+ > 93 | const scriptProvider = types.find((t: { type: string }) => t.type === 'script');
+ | ^
+ 94 | expect(scriptProvider).toBeDefined();
+ 95 |
+ 96 | // Script provider should have a command or script path field
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:93:36
+Error: 9) [chromium] › tests/dns-provider-types.spec.ts:88:5 › DNS Provider Types › API: /api/v1/dns-providers/types › script provider type should have command/path field
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ TypeError: Cannot read properties of undefined (reading 'find')
+
+ 91 | const types = data.types;
+ 92 |
+ > 93 | const scriptProvider = types.find((t: { type: string }) => t.type === 'script');
+ | ^
+ 94 | expect(scriptProvider).toBeDefined();
+ 95 |
+ 96 | // Script provider should have a command or script path field
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:93:36
+Error: 10) [chromium] › tests/dns-provider-types.spec.ts:153:5 › DNS Provider Types › UI: Provider Selector › should filter provider types based on search › Verify options can be navigated with keyboard
+ Error: expect(received).toBeGreaterThan(expected)
+
+ Expected: > 5
+ Received: 1
+
+ 165 |
+ 166 | // Should have multiple provider options available
+ > 167 | expect(optionCount).toBeGreaterThan(5);
+ | ^
+ 168 |
+ 169 | // Verify cloudflare option exists in the list
+ 170 | await expect(page.getByRole('option', { name: /cloudflare/i })).toBeVisible();
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:167:29
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:158:7
+Error: 10) [chromium] › tests/dns-provider-types.spec.ts:153:5 › DNS Provider Types › UI: Provider Selector › should filter provider types based on search › Verify options can be navigated with keyboard
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBeGreaterThan(expected)
+
+ Expected: > 5
+ Received: 1
+
+ 165 |
+ 166 | // Should have multiple provider options available
+ > 167 | expect(optionCount).toBeGreaterThan(5);
+ | ^
+ 168 |
+ 169 | // Verify cloudflare option exists in the list
+ 170 | await expect(page.getByRole('option', { name: /cloudflare/i })).toBeVisible();
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:167:29
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:158:7
+Error: 10) [chromium] › tests/dns-provider-types.spec.ts:153:5 › DNS Provider Types › UI: Provider Selector › should filter provider types based on search › Verify options can be navigated with keyboard
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(received).toBeGreaterThan(expected)
+
+ Expected: > 5
+ Received: 1
+
+ 165 |
+ 166 | // Should have multiple provider options available
+ > 167 | expect(optionCount).toBeGreaterThan(5);
+ | ^
+ 168 |
+ 169 | // Verify cloudflare option exists in the list
+ 170 | await expect(page.getByRole('option', { name: /cloudflare/i })).toBeVisible();
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:167:29
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:158:7
+Error: 11) [chromium] › tests/dns-provider-types.spec.ts:278:5 › DNS Provider Types › Provider Type Selection › should show script path field when Script type is selected › Verify Script path/command field appears
+ Error: expect(locator).toBeVisible() failed
+
+ Locator: getByRole('textbox', { name: /script path/i }).or(getByPlaceholder(/dns-challenge\.sh/i))
+ Expected: visible
+ Timeout: 5000ms
+ Error: element(s) not found
+
+ Call log:
+ - Expect "toBeVisible" with timeout 5000ms
+ - waiting for getByRole('textbox', { name: /script path/i }).or(getByPlaceholder(/dns-challenge\.sh/i))
+
+
+ 262 | const scriptField = page.getByRole('textbox', { name: /script path/i })
+ 263 | .or(page.getByPlaceholder(/dns-challenge\.sh/i));
+ > 264 | await expect(scriptField).toBeVisible();
+ | ^
+ 265 | });
+ 266 | });
+ 267 | });
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:264:35
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:260:18
+Error: 11) [chromium] › tests/dns-provider-types.spec.ts:278:5 › DNS Provider Types › Provider Type Selection › should show script path field when Script type is selected › Verify Script path/command field appears
+
+ Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(locator).toBeVisible() failed
+
+ Locator: getByRole('textbox', { name: /script path/i }).or(getByPlaceholder(/dns-challenge\.sh/i))
+ Expected: visible
+ Timeout: 5000ms
+ Error: element(s) not found
+
+ Call log:
+ - Expect "toBeVisible" with timeout 5000ms
+ - waiting for getByRole('textbox', { name: /script path/i }).or(getByPlaceholder(/dns-challenge\.sh/i))
+
+
+ 262 | const scriptField = page.getByRole('textbox', { name: /script path/i })
+ 263 | .or(page.getByPlaceholder(/dns-challenge\.sh/i));
+ > 264 | await expect(scriptField).toBeVisible();
+ | ^
+ 265 | });
+ 266 | });
+ 267 | });
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:264:35
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:260:18
+Error: 11) [chromium] › tests/dns-provider-types.spec.ts:278:5 › DNS Provider Types › Provider Type Selection › should show script path field when Script type is selected › Verify Script path/command field appears
+
+ Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
+ Error: expect(locator).toBeVisible() failed
+
+ Locator: getByRole('textbox', { name: /script path/i }).or(getByPlaceholder(/dns-challenge\.sh/i))
+ Expected: visible
+ Timeout: 5000ms
+ Error: element(s) not found
+
+ Call log:
+ - Expect "toBeVisible" with timeout 5000ms
+ - waiting for getByRole('textbox', { name: /script path/i }).or(getByPlaceholder(/dns-challenge\.sh/i))
+
+
+ 262 | const scriptField = page.getByRole('textbox', { name: /script path/i })
+ 263 | .or(page.getByPlaceholder(/dns-challenge\.sh/i));
+ > 264 | await expect(scriptField).toBeVisible();
+ | ^
+ 265 | });
+ 266 | });
+ 267 | });
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:264:35
+ at /home/runner/work/Charon/Charon/tests/dns-provider-types.spec.ts:260:18
+Notice: 11 failed
+ [chromium] › tests/dns-provider-crud.spec.ts:16:5 › DNS Provider CRUD Operations › Create Provider › should create a Manual DNS provider
+ [chromium] › tests/dns-provider-crud.spec.ts:501:5 › DNS Provider CRUD Operations › API Operations › should list providers via API
+ [chromium] › tests/dns-provider-crud.spec.ts:534:5 › DNS Provider CRUD Operations › API Operations › should reject invalid provider type via API
+ [chromium] › tests/dns-provider-types.spec.ts:15:5 › DNS Provider Types › API: /api/v1/dns-providers/types › should return all provider types including built-in and custom
+ [chromium] › tests/dns-provider-types.spec.ts:36:5 › DNS Provider Types › API: /api/v1/dns-providers/types › each provider type should have required fields
+ [chromium] › tests/dns-provider-types.spec.ts:49:5 › DNS Provider Types › API: /api/v1/dns-providers/types › manual provider type should have correct configuration
+ [chromium] › tests/dns-provider-types.spec.ts:62:5 › DNS Provider Types › API: /api/v1/dns-providers/types › webhook provider type should have url field
+ [chromium] › tests/dns-provider-types.spec.ts:75:5 › DNS Provider Types › API: /api/v1/dns-providers/types › rfc2136 provider type should have server and key fields
+ [chromium] › tests/dns-provider-types.spec.ts:88:5 › DNS Provider Types › API: /api/v1/dns-providers/types › script provider type should have command/path field
+ [chromium] › tests/dns-provider-types.spec.ts:153:5 › DNS Provider Types › UI: Provider Selector › should filter provider types based on search
+ [chromium] › tests/dns-provider-types.spec.ts:278:5 › DNS Provider Types › Provider Type Selection › should show script path field when Script type is selected
+ 4 skipped
+ 40 passed (2.0m)
+Error: Process completed with exit code 1.