Skip to content

Slow Checkout

Simulate a slow payment endpoint and assert that the UI shows progress while preventing duplicate submits.

import { test, expect } from '@playwright/test';
import { injectChaos, getChaosLog } from '@chaos-maker/playwright';
test('checkout waits safely on slow payment API', async ({ page }) => {
await injectChaos(page, {
seed: 42,
network: { latencies: [{ urlPattern: '/api/payments', delayMs: 8000, probability: 1 }] },
});
await page.goto('/checkout');
await page.click('#pay-now');
await expect(page.locator('[data-testid="loading-spinner"]')).toBeVisible();
await expect(page.locator('#pay-now')).toBeDisabled();
const log = await getChaosLog(page);
expect(log.some((event) => event.type === 'network:latency' && event.applied)).toBe(true);
});