import { test, expect } from '../../../fixtures/base';

test.describe(
	'External Webhook Triggering',
	{
		annotation: [{ type: 'owner', description: 'Catalysts' }],
	},
	() => {
		test('should create workflow via API, activate it, trigger webhook externally, and verify execution', async ({
			api,
		}) => {
			const { webhookPath, workflowId } = await api.workflows.importWorkflowFromFile(
				'simple-webhook-test.json',
			);

			const testPayload = { message: 'Hello from Playwright test' };

			const webhookResponse = await api.webhooks.trigger(`/webhook/${webhookPath}`, {
				method: 'POST',
				data: testPayload,
			});

			expect(webhookResponse.ok()).toBe(true);

			const execution = await api.workflows.waitForExecution(workflowId, 5000);
			expect(execution.status).toBe('success');

			const executionDetails = await api.workflows.getExecution(execution.id);
			expect(executionDetails.data).toContain('Hello from Playwright test');
		});

		test('should surface workflow configuration errors to the caller', async ({ api }) => {
			const { webhookPath } = await api.workflows.importWorkflowFromFile(
				'webhook-misconfiguration-test.json',
			);

			const webhookResponse = await api.webhooks.trigger(`/webhook/${webhookPath}`);

			expect(webhookResponse.ok()).toBe(false);
			expect(await webhookResponse.text()).toContain('Unused Respond to Webhook node');
		});
	},
);
