test: verify bundled decoders and artifact budgets (#7)

This commit is contained in:
2026-07-29 11:20:46 +09:00
parent 0c656808e0
commit 49d6b0e687
10 changed files with 285 additions and 66 deletions
+16 -12
View File
@@ -392,9 +392,12 @@ path와 host의 `node_modules`를 표준 build 입력으로 사용하지 않습
문법과 repository-relative path로 작성합니다.
- development, production build, E2E, optional asset processing은 서로 다른
container target 또는 profile로 분리합니다. production artifact에 compiler,
browser, fixture와 asset tool을 포함하지 않습니다.
browser, test 전용 fixture와 asset tool을 포함하지 않습니다. `public/samples`
demo asset은 의도된 runtime content이므로 provenance·license gate를 별도로 적용합니다.
- container process는 non-root user로 실행하고 source는 read-only mount를
우선합니다. dependency cache와 build output만 별도 writable volume을 사용합니다.
우선합니다. `npm ci`의 postinstall decoder staging은 writable image build layer에서
끝내고, runtime container에서는 완성된 artifact만 read-only로 제공합니다.
dependency cache와 build output만 별도 writable volume을 사용합니다.
- host에서 직접 실행할 때 Vite는 loopback에만 bind합니다. container에서 port를
publish할 때만 container 전용 설정으로 `0.0.0.0`에 bind하고 공개 network에
노출하지 않습니다.
@@ -407,13 +410,12 @@ path와 host의 `node_modules`를 표준 build 입력으로 사용하지 않습
## Linux 컨테이너 전환 검증
2026-07-29 기준 installed dependency 상태에서 typecheck, unit test 8개 production
build Linux/WSL2 x86_64에서 다시 통과했습니다. 기존 검증 기록의 Playwright E2E
16개 통과 결과는 있으나 이번 문서 변경에 대한 E2E 재실행은 요청에 따라 뒤로
미뤘습니다. tracked text file은 LF이며 lockfile에는 Linux glibc와 musl용 native
optional package가 포함되어 있습니다. 따라서 application code를 Windows 전용
구현에서 이식하는 작업은 거의 끝났지만, clean `npm ci`부터 시작하는 재현 가능한
container 개발 환경의 정의와 현재 E2E 재검증은 아직 완료되지 않았습니다.
2026-07-29 기준 installed dependency 상태에서 typecheck, unit test 8개, production
build와 Playwright E2E 17개가 Linux/WSL2 x86_64에서 다시 통과했습니다. tracked
text file은 LF이며 lockfile에는 Linux glibc와 musl용 native optional package가
포함되어 있습니다. 따라서 application code의 Windows 종속성은 현재 검증 범위에서
발견되지 않았지만, clean `npm ci`부터 시작하는 재현 가능한 container 개발 환경의
정의와 검증은 아직 완료되지 않았습니다.
| 항목 | 현재 상태 | container 전환 판단 |
|---|---|---|
@@ -497,9 +499,11 @@ npm run verify
- workspace typecheck 통과
- Vitest 5개 file, 8개 test 통과
- 2D·3D production build 통과
- production artifact gate 통과: 27개 file, 8,149,402 bytes, 50 kB 이상 중복 0개
- production artifact gate 통과:
- 2D: 8개 file, 4,302,677 bytes, 50 kB 이상 중복 0개
- 3D: 27개 file, 8,149,402 bytes, 50 kB 이상 중복 0개
- 3D `dist`는 경량화 전 24,945,531 bytes에서 16,796,129 bytes(67.3%) 감소
- Playwright 17개 E2E 통과, 21.9
- Playwright 17개 E2E 통과, 24.5
- build 실패는 없지만 2D main bundle, Three.js, web-ifc와 decoder JS에
500 kB 초과 chunk 경고가 있음
@@ -514,7 +518,7 @@ npm run verify
- 2D DWG/DXF sample과 local file load
- 3D GLB, Draco GLB, OBJ, FBX, DAE, IFC, PLY sample render
- 2D/3D canvas dispose와 반복 page transition
- production subpath의 Draco·IFC decoder request
- production subpath의 Draco·Basis KTX2·IFC decoder request와 실제 decode
- 2D DWG/DXF와 3D GLB/PLY evidence screenshot
이 검증은 sample이 화면에 나타나고 runtime error가 없다는 smoke/contract 수준입니다.