워크스페이스(탭) - 탭 전환 시 좌측 사이드바(대메뉴/소메뉴) 강조 자동 동기화 - nav 스크립트에 window.govPortalNav.syncByUrl() 공개, renderSidebar(overrideHref) 확장 - 키보드 단축키(Alt 기반): Alt+1~9 탭 이동, Alt+W 닫기, Alt+[ / Alt+] 이전·다음 - iframe 내부 포커스에서도 동작하도록 같은 출처 문서에 핸들러 부착 - 탭 가운데(휠) 클릭으로 닫기, 잘린 탭 제목 전체 툴팁 매뉴얼 - 신규 페이지 [화면 구성·워크스페이스·단축키] (05_workspace.md, 목차 2번째) - 화면 구성, 탭 사용법·유지 범위, 단축키 표, 이동/도움말 안내 - 개요 페이지에서 새 페이지로 안내 e2e: 워크스페이스(사이드바 동기화·가운데클릭) + 매뉴얼(새 페이지·단축키·검색) 케이스 추가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
62 lines
2.5 KiB
JavaScript
62 lines
2.5 KiB
JavaScript
const { test, expect } = require('@playwright/test');
|
|
const { login } = require('./helpers/auth');
|
|
|
|
/**
|
|
* 사용자 매뉴얼(bag/manual) E2E
|
|
* - 비로그인 차단(loginAuth)
|
|
* - 로그인 후 목차/본문 렌더
|
|
* - 목차 이동(표 렌더)
|
|
* - 미등록 slug 404
|
|
*/
|
|
test.describe('사용자 매뉴얼', () => {
|
|
test('비로그인 시 로그인으로 이동', async ({ page }) => {
|
|
await page.goto('/bag/manual');
|
|
await expect(page).toHaveURL(/\/login/);
|
|
});
|
|
|
|
test('로그인 후 매뉴얼 첫 페이지(개요) 렌더 + 목차 노출', async ({ page }) => {
|
|
await login(page, 'user');
|
|
await page.goto('/bag/manual');
|
|
// manual 첫 slug(overview)로 이동
|
|
await expect(page).toHaveURL(/\/bag\/manual\/overview/);
|
|
// 좌측 목차
|
|
await expect(page.locator('.manual-toc')).toBeVisible();
|
|
await expect(page.locator('.manual-toc a', { hasText: '핵심 업무 흐름' })).toBeVisible();
|
|
// 본문
|
|
await expect(page.locator('.manual-prose h1')).toContainText('시스템 개요');
|
|
});
|
|
|
|
test('목차에서 코드체계 페이지로 이동 → 표 렌더', async ({ page }) => {
|
|
await login(page, 'user');
|
|
await page.goto('/bag/manual/codes');
|
|
await expect(page.locator('.manual-prose table').first()).toBeVisible();
|
|
await expect(page.locator('.manual-prose')).toContainText('바코드');
|
|
});
|
|
|
|
test('워크스페이스·단축키 페이지 렌더 + 단축키 표 노출', async ({ page }) => {
|
|
await login(page, 'user');
|
|
await page.goto('/bag/manual/workspace');
|
|
await expect(page.locator('.manual-prose h1')).toContainText('워크스페이스');
|
|
// 단축키 표 내용 확인
|
|
await expect(page.locator('.manual-prose')).toContainText('Alt + W');
|
|
await expect(page.locator('.manual-prose')).toContainText('다음 탭');
|
|
// 목차에도 새 항목 노출
|
|
await expect(page.locator('.manual-toc a', { hasText: '워크스페이스' })).toBeVisible();
|
|
});
|
|
|
|
test('매뉴얼 검색이 단축키 내용을 찾음', async ({ page }) => {
|
|
await login(page, 'user');
|
|
await page.goto('/bag/manual/overview');
|
|
await page.locator('#manualSearchInput').fill('단축키');
|
|
await page.waitForTimeout(700);
|
|
await expect(page.locator('#manualSearchResults')).toBeVisible();
|
|
await expect(page.locator('#manualSearchResults')).toContainText('워크스페이스');
|
|
});
|
|
|
|
test('미등록 slug 는 404', async ({ page }) => {
|
|
await login(page, 'user');
|
|
const res = await page.goto('/bag/manual/does-not-exist');
|
|
expect(res.status()).toBe(404);
|
|
});
|
|
});
|