diff --git a/tests/core/caddy-import/import-page-helpers.ts b/tests/core/caddy-import/import-page-helpers.ts index 73194b45..4651579f 100644 --- a/tests/core/caddy-import/import-page-helpers.ts +++ b/tests/core/caddy-import/import-page-helpers.ts @@ -231,6 +231,10 @@ async function loginWithSetupCredentials(page: Page): Promise { } export async function resetImportSession(page: Page): Promise { + // Unconditional cancel covers sessions in any state (reviewing, pending, etc.) + await page.request.delete('/api/v1/import/cancel').catch(() => null); + await page.request.post('/api/v1/import/cancel').catch(() => null); + try { if (!page.url().includes(IMPORT_PAGE_PATH)) { await page.goto(IMPORT_PAGE_PATH, { waitUntil: 'domcontentloaded' }); @@ -329,8 +333,11 @@ export async function ensureImportFormReady(page: Page): Promise { let textareaVisible = await textarea.isVisible().catch(() => false); if (!textareaVisible) { const pendingSessionVisible = await page.getByText(/pending import session/i).first().isVisible().catch(() => false); - if (pendingSessionVisible) { - diagnosticLog('[Diag:import-ready] pending import session detected, canceling to restore textarea'); + const reviewTableVisible = await page.getByTestId('import-review-table').isVisible().catch(() => false); + if (pendingSessionVisible || reviewTableVisible) { + diagnosticLog(`[Diag:import-ready] stale session detected (pending=${pendingSessionVisible}, review=${reviewTableVisible}), canceling to restore textarea`); + await page.request.delete('/api/v1/import/cancel').catch(() => null); + await page.request.post('/api/v1/import/cancel').catch(() => null); await clearPendingImportSession(page); await page.goto(IMPORT_PAGE_PATH, { waitUntil: 'domcontentloaded' }); await assertNoAuthRedirect(page, 'ensureImportFormReady after pending-session reset');