Use visible NAS upload storage and reconcile missing files

This commit is contained in:
2026-10-13 15:54:27 +09:00
parent 50e54bc4c5
commit 9e0f493228
26 changed files with 1075 additions and 119 deletions

View File

@@ -339,6 +339,25 @@ try {
);
}
await page.screenshot({ path: 'tests/e2e/login-mobile.png' });
await page.route('**/api/auth/login', (route) => route.abort('failed'));
await page.getByLabel('이메일', { exact: true }).fill('offline@hop.test');
await page.getByLabel('비밀번호', { exact: true }).fill('password-1234');
await page.locator('.account-auth').getByRole('button', { name: '로그인', exact: true }).click();
const networkToast = page.locator('.error-toast');
await networkToast.filter({ hasText: '서버에 연결하지 못했어요' }).waitFor();
const toastSpacing = await networkToast.evaluate((el) => {
const box = el.getBoundingClientRect(),
text = el.querySelector('span').getBoundingClientRect(),
icon = el.querySelector('button svg').getBoundingClientRect();
return { left: text.left - box.left, right: box.right - icon.right };
});
assert(Math.abs(toastSpacing.left - toastSpacing.right) < 1, '모바일 토스트 양쪽 여백');
const toastClose = await networkToast.getByRole('button', { name: '오류 닫기' }).boundingBox();
assert(toastClose.width >= 44 && toastClose.height >= 44, '닫기 버튼 터치 영역 유지');
await page.screenshot({ path: 'tests/e2e/error-toast-mobile.png' });
await networkToast.getByRole('button', { name: '오류 닫기' }).click();
await networkToast.waitFor({ state: 'hidden' });
await page.unroute('**/api/auth/login');
await more.click();
const menuBounds = await page.getByRole('menu', { name: '더보기', exact: true }).boundingBox();
assert(