forked from baron/baron-sso
dev 브런치 병합 후 code check
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { expect, test, type Page, type Route } from '@playwright/test';
|
||||
import { expect, test, type Locator, type Page, type Route } from '@playwright/test';
|
||||
|
||||
type RequestCapture = {
|
||||
loginBody?: Record<string, unknown>;
|
||||
@@ -7,15 +7,26 @@ type RequestCapture = {
|
||||
clientLogs: string[];
|
||||
};
|
||||
|
||||
const resetNewPasswordName = /^(새 비밀번호|ui\.userfront\.reset\.new_password)$/;
|
||||
const resetConfirmPasswordName =
|
||||
/^(새 비밀번호 확인|ui\.userfront\.reset\.confirm_password)$/;
|
||||
const resetSubmitButtonName = /^(비밀번호 변경|ui\.userfront\.reset\.submit)$/;
|
||||
|
||||
async function enableFlutterAccessibility(page: Page): Promise<void> {
|
||||
await page.waitForTimeout(300);
|
||||
const button = page.getByRole('button', { name: 'Enable accessibility' });
|
||||
if (await button.count()) {
|
||||
await button.click({ force: true });
|
||||
const placeholder = page.locator('flt-semantics-placeholder');
|
||||
if (await placeholder.count()) {
|
||||
await placeholder.first().click({ force: true });
|
||||
}
|
||||
await button.first().evaluate((node) => {
|
||||
(node as HTMLElement).click();
|
||||
});
|
||||
await page.waitForTimeout(200);
|
||||
return;
|
||||
}
|
||||
await page.waitForTimeout(300);
|
||||
const placeholder = page.locator('flt-semantics-placeholder').first();
|
||||
if (await placeholder.count()) {
|
||||
await placeholder.evaluate((node) => {
|
||||
(node as HTMLElement).click();
|
||||
});
|
||||
await page.waitForTimeout(800);
|
||||
}
|
||||
}
|
||||
@@ -109,6 +120,18 @@ async function fillAt(page: Page, x: number, y: number, value: string): Promise<
|
||||
await page.keyboard.type(value);
|
||||
}
|
||||
|
||||
async function typeIntoAccessibleField(
|
||||
page: Page,
|
||||
field: Locator,
|
||||
value: string,
|
||||
): Promise<void> {
|
||||
await field.click({ force: true });
|
||||
await page.waitForTimeout(100);
|
||||
await page.keyboard.press('Control+A');
|
||||
await page.keyboard.press('Backspace');
|
||||
await page.keyboard.type(value);
|
||||
}
|
||||
|
||||
async function fillPasswordLoginForm(
|
||||
page: Page,
|
||||
loginId: string,
|
||||
@@ -128,25 +151,29 @@ async function fillPasswordLoginForm(
|
||||
|
||||
async function submitPasswordLogin(page: Page): Promise<void> {
|
||||
if (isMobileProject(page)) {
|
||||
await enableFlutterAccessibility(page);
|
||||
await page.getByRole('button', { name: '로그인' }).click({ force: true });
|
||||
return;
|
||||
}
|
||||
const coords = coordsFor(page);
|
||||
await page.locator('flt-glass-pane').click({
|
||||
position: { x: coords.signinSubmitX, y: coords.signinSubmitY },
|
||||
force: true,
|
||||
});
|
||||
await page.keyboard.press('Enter');
|
||||
}
|
||||
|
||||
async function fillResetPasswordForm(page: Page, password: string): Promise<void> {
|
||||
await enableFlutterAccessibility(page);
|
||||
const newPasswordInput = page.getByRole('textbox', {
|
||||
name: resetNewPasswordName,
|
||||
});
|
||||
const confirmPasswordInput = page.getByRole('textbox', {
|
||||
name: resetConfirmPasswordName,
|
||||
});
|
||||
if ((await newPasswordInput.count()) > 0 && (await confirmPasswordInput.count()) > 0) {
|
||||
await typeIntoAccessibleField(page, newPasswordInput, password);
|
||||
await typeIntoAccessibleField(page, confirmPasswordInput, password);
|
||||
return;
|
||||
}
|
||||
if (isMobileProject(page)) {
|
||||
await enableFlutterAccessibility(page);
|
||||
await page
|
||||
.getByRole('textbox', { name: /^새 비밀번호$/ })
|
||||
.fill(password);
|
||||
await page
|
||||
.getByRole('textbox', { name: /^새 비밀번호 확인$/ })
|
||||
.fill(password);
|
||||
await page.getByRole('textbox', { name: resetNewPasswordName }).fill(password);
|
||||
await page.getByRole('textbox', { name: resetConfirmPasswordName }).fill(password);
|
||||
return;
|
||||
}
|
||||
const coords = coordsFor(page);
|
||||
@@ -160,8 +187,13 @@ async function fillResetPasswordForm(page: Page, password: string): Promise<void
|
||||
}
|
||||
|
||||
async function submitResetPassword(page: Page): Promise<void> {
|
||||
await enableFlutterAccessibility(page);
|
||||
const submitButton = page.getByRole('button', { name: resetSubmitButtonName });
|
||||
if ((await submitButton.count()) > 0) {
|
||||
await submitButton.click({ force: true });
|
||||
return;
|
||||
}
|
||||
if (isMobileProject(page)) {
|
||||
await page.getByRole('button', { name: '비밀번호 변경' }).click({ force: true });
|
||||
return;
|
||||
}
|
||||
const coords = coordsFor(page);
|
||||
|
||||
Reference in New Issue
Block a user