85 lines
2.8 KiB
TypeScript
85 lines
2.8 KiB
TypeScript
import { expect, test as setup } from '@playwright/test';
|
|
|
|
import { initializeDatabaseForTest } from './utils/database-utils';
|
|
import { initializeOpenSearchForTest } from './utils/opensearch-utils';
|
|
|
|
const authFile = 'playwright/.auth/user.json';
|
|
|
|
setup('tenant create and authenticate', async ({ page }) => {
|
|
try {
|
|
await initializeDatabaseForTest();
|
|
console.log('Database initialized for test');
|
|
} catch (error) {
|
|
console.warn(
|
|
'Database initialization failed, continuing without database cleanup:',
|
|
error,
|
|
);
|
|
}
|
|
|
|
try {
|
|
await initializeOpenSearchForTest();
|
|
console.log('OpenSearch initialized for test');
|
|
} catch (error) {
|
|
console.warn(
|
|
'OpenSearch initialization failed, continuing without OpenSearch:',
|
|
error,
|
|
);
|
|
}
|
|
|
|
await page.goto('http://localhost:3000/tenant/create', {
|
|
waitUntil: 'domcontentloaded',
|
|
});
|
|
await page.waitForTimeout(1000);
|
|
|
|
await page.locator("input[name='siteName']").click();
|
|
await page.locator("input[name='siteName']").fill('TestTenant');
|
|
await page.getByRole('button', { name: 'Next', exact: true }).click();
|
|
await page.waitForTimeout(1000);
|
|
|
|
await page.locator("input[name='email']").click();
|
|
await page.locator("input[name='email']").fill('sdi9429@naver.com');
|
|
|
|
await page.getByRole('button', { name: 'Request Code', exact: true }).click();
|
|
|
|
await page.waitForSelector('input[name="code"]', {
|
|
state: 'visible',
|
|
timeout: 60000,
|
|
});
|
|
await page.locator("input[name='code']").click();
|
|
await page.locator("input[name='code']").fill('000000');
|
|
|
|
await page.getByRole('button', { name: 'Verify Code', exact: true }).click();
|
|
|
|
await page.locator("input[name='password']").click();
|
|
await page.locator("input[name='password']").fill('Abcd1234!');
|
|
|
|
await page.locator("input[name='confirmPassword']").click();
|
|
await page.locator("input[name='confirmPassword']").fill('Abcd1234!');
|
|
|
|
await page.getByRole('button', { name: 'Next', exact: true }).click();
|
|
await page.waitForTimeout(1000);
|
|
|
|
await page.getByRole('button', { name: 'Confirm', exact: true }).click();
|
|
await page.waitForTimeout(1000);
|
|
|
|
await page.goto('http://localhost:3000/auth/sign-in', {
|
|
waitUntil: 'domcontentloaded',
|
|
});
|
|
await page.waitForTimeout(1000);
|
|
|
|
await expect(page.locator('body', { hasText: 'TestTenant' })).toContainText(
|
|
'TestTenant',
|
|
);
|
|
|
|
await page.locator("input[name='email']").click();
|
|
await page.locator("input[name='email']").fill('sdi9429@naver.com');
|
|
await page.locator("input[name='password']").click();
|
|
await page.locator("input[name='password']").fill('Abcd1234!');
|
|
await page.getByRole('button', { name: 'Sign In', exact: true }).click();
|
|
await page.waitForTimeout(1000);
|
|
|
|
await page.waitForURL('http://localhost:3000/main/project/create');
|
|
|
|
await page.context().storageState({ path: authFile });
|
|
});
|