From 425889b8793598e7fd278092d20d47825d7d5221 Mon Sep 17 00:00:00 2001 From: kolaente Date: Tue, 21 Apr 2026 11:21:55 +0200 Subject: [PATCH] test(e2e): create and delete a webhook --- frontend/tests/e2e/project/webhooks.spec.ts | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/frontend/tests/e2e/project/webhooks.spec.ts b/frontend/tests/e2e/project/webhooks.spec.ts index 961e42571..857e87d78 100644 --- a/frontend/tests/e2e/project/webhooks.spec.ts +++ b/frontend/tests/e2e/project/webhooks.spec.ts @@ -21,4 +21,31 @@ test.describe('Project webhooks', () => { await page.getByRole('button', {name: /create webhook/i}).click() await expect(page.locator('.help.is-danger')).toContainText(/at least one event/i) }) + + test('creates and deletes a webhook', async ({authenticatedPage: page}) => { + await page.goto('/projects/1/settings/webhooks') + await page.waitForLoadState('networkidle') + + await page.locator('#targetUrl').fill('https://example.com/hook') + await page.locator('.available-events-check', {hasText: 'task.created'}) + .locator('.base-checkbox__label').click() + + const created = page.waitForResponse(r => + r.url().includes('/projects/1/webhooks') && r.request().method() === 'PUT', + ) + await page.getByRole('button', {name: /create webhook/i}).click() + await created + + const row = page.locator('table.table tbody tr', {hasText: 'example.com/hook'}) + await expect(row).toBeVisible() + + const deleted = page.waitForResponse(r => + r.url().match(/\/projects\/1\/webhooks\/\d+/) !== null && r.request().method() === 'DELETE', + ) + await row.locator('.button.is-danger').click() + await page.locator('dialog[open] .modal-content .actions .button').filter({hasText: 'Do it!'}).click() + await deleted + + await expect(row).toHaveCount(0) + }) })