fix(import): handle cancellation of stale import sessions in various states

This commit is contained in:
GitHub Actions
2026-03-01 03:50:43 +00:00
parent 6483a25555
commit fbd94a031e
@@ -231,6 +231,10 @@ async function loginWithSetupCredentials(page: Page): Promise<void> {
}
export async function resetImportSession(page: Page): Promise<void> {
// 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<void> {
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');