feat: add tests for /api/document (#932)
This commit is contained in:
parent
5b4ad941d3
commit
020494f63b
6 changed files with 316 additions and 19 deletions
62
tests/auth-helper.ts
Normal file
62
tests/auth-helper.ts
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import {
|
||||
type APIRequestContext,
|
||||
type Browser,
|
||||
type BrowserContext,
|
||||
expect,
|
||||
type Page,
|
||||
} from '@playwright/test';
|
||||
import { generateId } from 'ai';
|
||||
import { getUnixTime } from 'date-fns';
|
||||
|
||||
export type UserContext = {
|
||||
context: BrowserContext;
|
||||
page: Page;
|
||||
request: APIRequestContext;
|
||||
};
|
||||
|
||||
export async function createAuthenticatedContext({
|
||||
browser,
|
||||
name,
|
||||
}: {
|
||||
browser: Browser;
|
||||
name: string;
|
||||
}): Promise<UserContext> {
|
||||
const authDir = path.join(__dirname, '../playwright/.auth');
|
||||
|
||||
if (!fs.existsSync(authDir)) {
|
||||
fs.mkdirSync(authDir, { recursive: true });
|
||||
}
|
||||
|
||||
const storageFile = path.join(authDir, `${name}.json`);
|
||||
|
||||
const context = await browser.newContext();
|
||||
const page = await context.newPage();
|
||||
|
||||
const email = `test-${name}-${getUnixTime(new Date())}@playwright.com`;
|
||||
const password = generateId(16);
|
||||
|
||||
await page.goto('http://localhost:3000/register');
|
||||
await page.getByPlaceholder('user@acme.com').click();
|
||||
await page.getByPlaceholder('user@acme.com').fill(email);
|
||||
await page.getByLabel('Password').click();
|
||||
await page.getByLabel('Password').fill(password);
|
||||
await page.getByRole('button', { name: 'Sign Up' }).click();
|
||||
|
||||
await expect(page.getByTestId('toast')).toContainText(
|
||||
'Account created successfully!',
|
||||
);
|
||||
|
||||
await context.storageState({ path: storageFile });
|
||||
await page.close();
|
||||
|
||||
const newContext = await browser.newContext({ storageState: storageFile });
|
||||
const newPage = await newContext.newPage();
|
||||
|
||||
return {
|
||||
context: newContext,
|
||||
page: newPage,
|
||||
request: newContext.request,
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue