독립 페이지 하단 버튼 크기를 통일
This commit is contained in:
@@ -270,6 +270,8 @@ test('resource auction preserves the legacy desktop structure, geometry, and int
|
||||
return {
|
||||
container: { x: containerRect.x, width: containerRect.width },
|
||||
topBar: box('.top-back-bar'),
|
||||
topClose: box('.top-back-bar .close-button'),
|
||||
bottomClose: box('.bottom-bar .close-button'),
|
||||
row: { width: rowRect.width, height: rowRect.height },
|
||||
cells,
|
||||
button: {
|
||||
@@ -282,6 +284,7 @@ test('resource auction preserves the legacy desktop structure, geometry, and int
|
||||
});
|
||||
expect(geometry.container).toEqual({ x: 0, width: 1000 });
|
||||
expect(geometry.topBar).toMatchObject({ x: 0, width: 1000, height: 32 });
|
||||
expect(geometry.bottomClose).toMatchObject({ width: geometry.topClose.width, height: geometry.topClose.height });
|
||||
expect(geometry.row).toEqual({ width: 1000, height: 22 });
|
||||
expect(geometry.cells[0]).toBeCloseTo(66.66, 1);
|
||||
expect(geometry.cells[1]).toBeCloseTo(133.34, 1);
|
||||
|
||||
@@ -294,6 +294,7 @@ test('matches the ref meeting-room geometry, typography, textures, and controls'
|
||||
return {
|
||||
container: rect('#container'),
|
||||
topBar: rect('.top-back-bar'),
|
||||
topButton: rect('.top-back-bar .back-button'),
|
||||
titleLabel: rect('.form-label'),
|
||||
submitArticle: rect('#submitArticle'),
|
||||
articleAuthor: rect('.article-header .author-name'),
|
||||
@@ -319,7 +320,7 @@ test('matches the ref meeting-room geometry, typography, textures, and controls'
|
||||
};
|
||||
});
|
||||
|
||||
expect(geometry.container).toMatchObject({ width: 1000, height: 397.3125 });
|
||||
expect(geometry.container).toMatchObject({ width: 1000, height: 393.8125 });
|
||||
expect(geometry.topBar.height).toBe(32);
|
||||
expect(geometry.titleLabel.width).toBeCloseTo(83.33, 1);
|
||||
expect(geometry.titleLabel).toMatchObject({ y: 64.1875, height: 22.1875 });
|
||||
@@ -333,7 +334,12 @@ test('matches the ref meeting-room geometry, typography, textures, and controls'
|
||||
expect(geometry.commentAuthor.width).toBe(120);
|
||||
expect(geometry.commentAuthor).toMatchObject({ y: 271.25, height: 20.1875 });
|
||||
expect(geometry.submitComment).toMatchObject({ y: 292.4375, height: 29.375 });
|
||||
expect(geometry.bottomButton).toMatchObject({ x: 0, y: 361.8125, width: 71, height: 35.5 });
|
||||
expect(geometry.bottomButton).toMatchObject({
|
||||
x: 0,
|
||||
y: 361.8125,
|
||||
width: geometry.topButton.width,
|
||||
height: geometry.topButton.height,
|
||||
});
|
||||
expect(geometry.font.family).toContain('Pretendard');
|
||||
expect(geometry.font).toMatchObject({ size: '14px', lineHeight: '18.2px' });
|
||||
expect(geometry.whiteSpace).toBe('pre');
|
||||
|
||||
@@ -3062,3 +3062,25 @@ test('keeps the shared main and chief shell geometry and interaction states', as
|
||||
}));
|
||||
expect(chiefMobile).toEqual({ width: 500, padding: '0px', headerWidth: 500 });
|
||||
});
|
||||
|
||||
test('keeps the chief footer return button the same size as the top return button', async ({ page }) => {
|
||||
await install(page);
|
||||
const measure = () =>
|
||||
page.locator('.chief-page').evaluate((element) => {
|
||||
const top = element.querySelector<HTMLElement>('.chief-top .chief-nav')!.getBoundingClientRect();
|
||||
const bottom = element.querySelector<HTMLElement>('.chief-footer .chief-nav')!.getBoundingClientRect();
|
||||
return {
|
||||
top: { width: top.width, height: top.height },
|
||||
bottom: { width: bottom.width, height: bottom.height },
|
||||
};
|
||||
});
|
||||
|
||||
await page.setViewportSize({ width: 1200, height: 900 });
|
||||
await page.goto('/che/chief-center');
|
||||
const desktop = await measure();
|
||||
expect(desktop.bottom).toEqual(desktop.top);
|
||||
|
||||
await page.setViewportSize({ width: 500, height: 900 });
|
||||
const mobile = await measure();
|
||||
expect(mobile.bottom).toEqual(mobile.top);
|
||||
});
|
||||
|
||||
@@ -1111,6 +1111,13 @@ test('current-city hides values and general rows for a wandering user', async ({
|
||||
await expect(page.locator('.generals')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('current-city keeps only the top and footer return buttons', async ({ page }) => {
|
||||
await install(page, 'admin');
|
||||
await go(page, 'current-city');
|
||||
await expect(page.locator('.city-page .back-link')).toHaveCount(2);
|
||||
await expect(page.locator('.city-page .back-row')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('current-city exposes own general details to a member and admin fixture', async ({ page }) => {
|
||||
await install(page, 'admin');
|
||||
await page.setViewportSize({ width: 1200, height: 900 });
|
||||
@@ -1138,8 +1145,8 @@ test('current-city exposes own general details to a member and admin fixture', a
|
||||
};
|
||||
});
|
||||
expect(legacyGeometry.selector).toMatchObject({ width: 400, height: 19 });
|
||||
expect(legacyGeometry.stats).toEqual({ x: 100, y: 165.375, width: 1000, height: 106.9375 });
|
||||
expect(legacyGeometry.generals).toMatchObject({ x: 88, y: 290.3125, width: 1024 });
|
||||
expect(legacyGeometry.stats).toEqual({ x: 100, y: 130.875, width: 1000, height: 106.9375 });
|
||||
expect(legacyGeometry.generals).toMatchObject({ x: 100, y: 255.8125, width: 1000 });
|
||||
expect(legacyGeometry.titleAlign).toBe('start');
|
||||
expect(legacyGeometry.icon).toMatchObject({ width: 64, height: 64, naturalWidth: 64, naturalHeight: 64 });
|
||||
if (artifactRoot) {
|
||||
|
||||
@@ -2454,3 +2454,27 @@ test('감찰부 keeps the selector interaction and shows the permission error pa
|
||||
await page.reload();
|
||||
await expect(page.getByRole('alert')).toContainText('권한이 부족합니다.');
|
||||
});
|
||||
|
||||
test('감찰부 하단 창 닫기 버튼은 상단 버튼과 같은 크기를 유지한다', async ({ page }) => {
|
||||
const head: FixtureState = { permission: 'head', myset: 3, settingMutations: [], accessPages: [] };
|
||||
await install(page, head);
|
||||
const measure = () =>
|
||||
page.locator('.battle-page').evaluate((element) => {
|
||||
const top = element.querySelector<HTMLElement>('.battle-top .battle-nav')!.getBoundingClientRect();
|
||||
const bottom = element.querySelector<HTMLElement>('.battle-footer .battle-nav')!.getBoundingClientRect();
|
||||
return {
|
||||
top: { width: top.width, height: top.height },
|
||||
bottom: { width: bottom.width, height: bottom.height },
|
||||
};
|
||||
});
|
||||
|
||||
await page.setViewportSize({ width: 1000, height: 900 });
|
||||
await page.goto('battle-center');
|
||||
await expect(page.getByRole('heading', { name: '감찰부' })).toBeVisible();
|
||||
const desktop = await measure();
|
||||
expect(desktop.bottom).toEqual(desktop.top);
|
||||
|
||||
await page.setViewportSize({ width: 500, height: 900 });
|
||||
const mobile = await measure();
|
||||
expect(mobile.bottom).toEqual(mobile.top);
|
||||
});
|
||||
|
||||
@@ -1237,6 +1237,32 @@ test('keeps the active survey title after voting without reopening the new-surve
|
||||
await expect(page.locator('.survey-notice')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('keeps the survey footer close button the same size as the top close button', async ({ page }) => {
|
||||
const state: NavigationFixture = {
|
||||
officerLevel: 0,
|
||||
permission: 0,
|
||||
nationLevel: 0,
|
||||
stage: 0,
|
||||
npcMode: 1,
|
||||
generalMeCalls: 0,
|
||||
operations: [],
|
||||
};
|
||||
await installFixture(page, state);
|
||||
await page.goto(`${basePath}/survey`);
|
||||
for (const width of [1000, 500]) {
|
||||
await page.setViewportSize({ width, height: 900 });
|
||||
const geometry = await page.locator('.pageVote').evaluate((element) => {
|
||||
const top = element.querySelector<HTMLElement>('.back_bar .back_btn')!.getBoundingClientRect();
|
||||
const bottom = element.querySelector<HTMLElement>('.bottom_bar .back_btn')!.getBoundingClientRect();
|
||||
return {
|
||||
top: { width: top.width, height: top.height },
|
||||
bottom: { width: bottom.width, height: bottom.height },
|
||||
};
|
||||
});
|
||||
expect(geometry.bottom).toEqual(geometry.top);
|
||||
}
|
||||
});
|
||||
|
||||
test('notifies only for a new incoming private message and marks it read from the notice', async ({
|
||||
page,
|
||||
}, testInfo) => {
|
||||
|
||||
Reference in New Issue
Block a user