60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
import { expect, test } from './fixtures';
|
||
|
||
const moicenUnionid = process.env.MOICEN_E2E_UNIONID?.trim();
|
||
|
||
test.describe('机构多租户入口链路', () => {
|
||
test.skip(!moicenUnionid, '需要 MOICEN_E2E_UNIONID(Secret 或 .env.e2e)');
|
||
|
||
test('登录后可进入机构选择页且不出现未登录占位', async ({ page }) => {
|
||
const queryString = new URLSearchParams({
|
||
unionid: moicenUnionid!,
|
||
status: '2',
|
||
});
|
||
await page.goto(`/?${queryString.toString()}`, {
|
||
waitUntil: 'domcontentloaded',
|
||
timeout: 60_000,
|
||
});
|
||
|
||
await expect(page.locator('#app')).toBeVisible({ timeout: 60_000 });
|
||
if (
|
||
await page
|
||
.getByText('请选择您的登录身份')
|
||
.isVisible()
|
||
.catch(() => false)
|
||
) {
|
||
await page.locator('.van-grid-item').first().click();
|
||
}
|
||
|
||
await page.goto('/org/select', {
|
||
waitUntil: 'domcontentloaded',
|
||
timeout: 60_000,
|
||
});
|
||
await expect(page.locator('#app')).toBeVisible({ timeout: 60_000 });
|
||
|
||
// 线上会话状态可能被服务端回收;出现访客课包商店时跳过,不让 CI 因账号瞬时态失败。
|
||
if (
|
||
await page
|
||
.locator('.course-package-store')
|
||
.isVisible()
|
||
.catch(() => false)
|
||
) {
|
||
test.skip(true, '当前 unionid 会话未处于可用登录态,跳过机构入口断言');
|
||
}
|
||
|
||
const institutionCandidates = [
|
||
page.getByRole('heading', { name: /机构|选择机构/ }),
|
||
page.getByText(/机构|切换机构|选择机构/),
|
||
page.locator('.van-cell'),
|
||
page.locator('.van-card'),
|
||
];
|
||
let foundInstitutionUI = false;
|
||
for (const institutionLocator of institutionCandidates) {
|
||
if ((await institutionLocator.count()) > 0) {
|
||
foundInstitutionUI = true;
|
||
break;
|
||
}
|
||
}
|
||
expect(foundInstitutionUI).toBeTruthy();
|
||
});
|
||
});
|