diff --git a/tests/course-package-store.spec.ts b/tests/course-package-store.spec.ts index 1843149..777e363 100644 --- a/tests/course-package-store.spec.ts +++ b/tests/course-package-store.spec.ts @@ -475,10 +475,28 @@ test.describe('课包详情页权限与预览', () => { timeout: 60_000, }); await expect(page.locator('#app')).toBeVisible({ timeout: 60_000 }); - await page.waitForTimeout(5000); - // Should see the package name - await expect(page.locator('.title')).toBeVisible({ timeout: 10_000 }); + // Handle org-select redirect if it shows up + if (page.url().includes('/org/select')) { + const orgCells = page.locator('#app .van-cell-group .van-cell'); + const n = await orgCells.count().catch(() => 0); + if (n > 0) { + await orgCells.first().click(); + await page.waitForTimeout(5000); + } + } + + // Retry navigating if we got redirected + if (!page.url().includes('/course-package/detail')) { + await page.goto('/course/course-package/detail?id=pkg-mc-001', { + waitUntil: 'domcontentloaded', + timeout: 60_000, + }); + await expect(page.locator('#app')).toBeVisible({ timeout: 60_000 }); + } + + // Should see the package name — wait for it with longer timeout + await expect(page.locator('h1.title')).toBeVisible({ timeout: 20_000 }); // Should NOT see management buttons await expect(page.locator('button').filter({ hasText: '编辑' })).not.toBeVisible(); diff --git a/tests/teacher-switching.spec.ts b/tests/teacher-switching.spec.ts index 1430da2..bc6bcf3 100644 --- a/tests/teacher-switching.spec.ts +++ b/tests/teacher-switching.spec.ts @@ -154,9 +154,10 @@ test.describe('学生老师切换', () => { return; } + // Wait for teacher list to load — API may be slow const teacherCells = page.locator('.van-cell'); - const teacherCount = await teacherCells.count(); - expect(teacherCount).toBeGreaterThan(0); + await expect(teacherCells.first()).toBeVisible({ timeout: 20_000 }); + expect(await teacherCells.count()).toBeGreaterThan(0); }); test('角色切换后自动选择老师且不会回机构选择页', async ({ page }) => { @@ -173,7 +174,12 @@ test.describe('学生老师切换', () => { await expect(page.locator('#app')).toBeVisible({ timeout: 60_000 }); await page.waitForTimeout(3000); + // Scroll to top so role-switcher icon is visible + await page.evaluate(() => window.scrollTo(0, 0)); + await page.waitForTimeout(500); + const roleSwitcher = page.locator('.van-icon-exchange'); + await expect(roleSwitcher).toBeVisible({ timeout: 15_000 }); await roleSwitcher.click(); // Wait for action sheet to appear and settle