chore: fix test

This commit is contained in:
Nathan
2026-03-11 01:29:15 +08:00
parent 373fe9ae53
commit 8ddf546611
2 changed files with 43 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ import { test, expect, Page } from '@playwright/test';
import { DropdownSelectors, PageSelectors, SidebarSelectors, ShareSelectors } from '../../support/selectors';
import { generateRandomEmail } from '../../support/test-config';
import { signInAndWaitForApp } from '../../support/auth-flow-helpers';
import { createUserAccount } from '../../support/auth-utils';
/**
* Share Page Tests
@@ -96,7 +97,8 @@ test.describe('Share Page Test', () => {
}
});
// 1. Sign in as user A
// 1. Sign in as user A and create user B account
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
// Wait for app to fully load
@@ -148,6 +150,7 @@ test.describe('Share Page Test', () => {
}
});
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });
@@ -200,6 +203,12 @@ test.describe('Share Page Test', () => {
const userCEmail = generateRandomEmail();
const userDEmail = generateRandomEmail();
// Create all invited user accounts first
await Promise.all([
createUserAccount(request, userBEmail),
createUserAccount(request, userCEmail),
createUserAccount(request, userDEmail),
]);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });
@@ -242,6 +251,7 @@ test.describe('Share Page Test', () => {
}
});
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });
@@ -290,6 +300,7 @@ test.describe('Share Page Test', () => {
}
});
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });
@@ -332,6 +343,7 @@ test.describe('Share Page Test', () => {
const userCEmail = generateRandomEmail();
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });
@@ -390,6 +402,7 @@ test.describe('Share Page Test', () => {
}
});
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });
@@ -433,6 +446,7 @@ test.describe('Share Page Test', () => {
}
});
await createUserAccount(request, userBEmail);
await signInAndWaitForApp(page, request, testEmail);
await expect(SidebarSelectors.pageHeader(page)).toBeVisible({ timeout: 30000 });

View File

@@ -242,3 +242,31 @@ export async function signInTestUser(
const authUtils = new AuthTestUtils();
await authUtils.signInWithTestUrl(page, request, email);
}
/**
* Create a user account without signing in via the browser.
* Uses GoTrue admin generate_link to create the user, then calls
* the verify endpoint to ensure the user profile exists.
*/
export async function createUserAccount(
request: APIRequestContext,
email: string
): Promise<void> {
const authUtils = new AuthTestUtils();
const callbackLink = await authUtils.generateSignInUrl(request, email);
const hashIndex = callbackLink.indexOf('#');
if (hashIndex === -1) return;
const hash = callbackLink.substring(hashIndex);
const params = new URLSearchParams(hash.slice(1));
const accessToken = params.get('access_token');
if (!accessToken) return;
// Call verify endpoint to create the user profile in the backend
await request.get(`${TestConfig.apiUrl}/api/user/verify/${accessToken}`, {
failOnStatusCode: false,
timeout: 30000,
});
}