39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
const shouldRun = process.env.E2E_PADDLE_SANDBOX === '1';
|
|
|
|
test.describe('Paddle sandbox checkout (staging)', () => {
|
|
test.skip(!shouldRun, 'Set E2E_PADDLE_SANDBOX=1 to run live sandbox checkout on staging.');
|
|
|
|
test('creates Paddle checkout session from packages page', async ({ page }) => {
|
|
const base = process.env.E2E_BASE_URL ?? 'https://test-y0k0.fotospiel.app';
|
|
|
|
await page.goto(`${base}/packages`);
|
|
|
|
const acceptCookies = page.getByRole('button', { name: /akzeptieren|accept/i });
|
|
if (await acceptCookies.isVisible()) {
|
|
await acceptCookies.click();
|
|
}
|
|
|
|
const checkoutButtons = page.locator('a:has-text("Paket") , a:has-text("Checkout"), a:has-text("Jetzt"), button:has-text("Checkout")');
|
|
const count = await checkoutButtons.count();
|
|
|
|
if (count === 0) {
|
|
test.skip('No checkout CTA found on packages page');
|
|
}
|
|
|
|
const [requestPromise] = await Promise.all([
|
|
page.waitForRequest('**/paddle/create-checkout'),
|
|
checkoutButtons.first().click(),
|
|
]);
|
|
|
|
const checkoutRequest = await requestPromise.response();
|
|
expect(checkoutRequest, 'Expected paddle/create-checkout request to resolve').toBeTruthy();
|
|
expect(checkoutRequest!.status()).toBeLessThan(400);
|
|
|
|
const body = await checkoutRequest!.json();
|
|
const checkoutUrl = body.checkout_url ?? body.url ?? '';
|
|
expect(checkoutUrl).toContain('paddle');
|
|
});
|
|
});
|