release: v0.9.1 (신규 쇼케이스 3종 정식 출시, CSS 변수 및 경로 무결성 게이트 강화)
This commit is contained in:
parent
e26b00a825
commit
225c1d9f42
75 changed files with 7406 additions and 224 deletions
|
|
@ -1,36 +0,0 @@
|
|||
import puppeteer from "puppeteer-core";
|
||||
import path from "node:path";
|
||||
import url from "node:url";
|
||||
|
||||
const here = path.dirname(url.fileURLToPath(import.meta.url));
|
||||
const CHROME = "C:/Program Files/Google/Chrome/Application/chrome.exe";
|
||||
|
||||
const browser = await puppeteer.launch({ executablePath: CHROME, headless: "new", args: ["--force-device-scale-factor=1"] });
|
||||
const page = await browser.newPage();
|
||||
await page.setCacheEnabled(false);
|
||||
|
||||
// 라이브 배포 URL — 사용자가 보는 그대로
|
||||
for (const w of [360, 390, 412]) {
|
||||
await page.setViewport({ width: w, height: 844, isMobile: true, hasTouch: true });
|
||||
await page.goto("https://designpaca.chanpaca.net/work/dure-enrollment/", { waitUntil: "networkidle0" });
|
||||
await page.evaluate(() => document.fonts.ready);
|
||||
await new Promise((r) => setTimeout(r, 250));
|
||||
const m = await page.evaluate(() => {
|
||||
const layout = document.querySelector(".layout");
|
||||
const h2 = document.querySelector("#cat-h");
|
||||
const card = document.querySelector(".course-row");
|
||||
const appbar = document.querySelector(".appbar-inner");
|
||||
const rl = (el) => (el ? Math.round(el.getBoundingClientRect().left) : null);
|
||||
return {
|
||||
cssV: (document.querySelector('link[rel="stylesheet"]')?.getAttribute("href") || "").match(/v=\d+/)?.[0],
|
||||
layoutPad: getComputedStyle(layout).padding,
|
||||
h2Left: rl(h2),
|
||||
cardLeft: rl(card),
|
||||
appbarPadLeft: getComputedStyle(appbar).paddingLeft,
|
||||
over: document.documentElement.scrollWidth - document.documentElement.clientWidth,
|
||||
};
|
||||
});
|
||||
console.log(`[${w}] css=${m.cssV} layoutPad="${m.layoutPad}" h2Left=${m.h2Left} cardLeft=${m.cardLeft} appbarPadL=${m.appbarPadLeft} over=+${m.over}`);
|
||||
if (w === 390) await page.screenshot({ path: path.join(here, "__shots__", "diag3-dure-live-390.png") });
|
||||
}
|
||||
await browser.close();
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
// 임시 구문 스캐너 — 괄호·템플릿 리터럴 균형 줄 단위 추적
|
||||
import fs from "node:fs";
|
||||
const src = fs.readFileSync(process.argv[2], "utf8");
|
||||
let inTpl = false, inStr = null, inInterp = 0, line = 1;
|
||||
const stack = [];
|
||||
const push = (t) => stack.push(t + "@" + line);
|
||||
for (let i = 0; i < src.length; i++) {
|
||||
const c = src[i], n = src[i + 1];
|
||||
if (c === "\n") line++;
|
||||
if (inStr) {
|
||||
if (c === "\\") { i++; continue; }
|
||||
if (c === inStr) inStr = null;
|
||||
continue;
|
||||
}
|
||||
if (inTpl) {
|
||||
if (c === "\\") { i++; continue; }
|
||||
if (c === "$" && n === "{") { push("${"); inInterp++; i++; continue; }
|
||||
if (c === "`") { inTpl = false; const m = stack.pop(); }
|
||||
continue;
|
||||
}
|
||||
if (c === "`") { inTpl = true; push("tpl"); continue; }
|
||||
if (c === "'" || c === '"') { inStr = c; continue; }
|
||||
if (c === "/" && n === "/") { while (i < src.length && src[i] !== "\n") i++; continue; }
|
||||
if (c === "(" || c === "[" || c === "{") push(c);
|
||||
else if (c === ")" || c === "]" || c === "}") {
|
||||
const m = stack.pop();
|
||||
if (!m) { console.log("여분의 닫기", c, "줄", line); process.exit(0); }
|
||||
}
|
||||
}
|
||||
console.log("미닫힘:", stack.slice(-8).join(", ") || "없음");
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
|
@ -1,4 +1,4 @@
|
|||
# E2E 시나리오 게이트 — 2026-08-23 06:30
|
||||
# E2E 시나리오 게이트 — 2026-08-23 12:48
|
||||
|
||||
단언 1805 · 통과 1805 · 실패 0 — **GREEN — 전 단언 통과**
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
# 검증 리포트 — 2026-08-23 06:30
|
||||
# 검증 리포트 — 2026-08-23 12:48
|
||||
|
||||
게이트: **전 계층 통과 — 배포 가능** · 총 103.6초
|
||||
게이트: **전 계층 통과 — 배포 가능** · 총 96.5초
|
||||
|
||||
| 계층 | 결과 | 항목 | 소요 |
|
||||
|---|---|---|---|
|
||||
| L0-정적/stylelint | PASS | PASS — | 8.0s |
|
||||
| L0-정적/stylelint | PASS | PASS — | 1.6s |
|
||||
| L0-정식/html-validate | PASS | PASS — | 1.3s |
|
||||
| L1-단위/계산로직 | PASS | PASS 41 | 0.1s |
|
||||
| L2-기능/감사 | PASS | PASS 72 | 9.7s |
|
||||
| L2-불변식/렌더 | PASS | PASS 10 | 17.2s |
|
||||
| L3-시각회귀/diff | PASS | PASS 30 | 11.7s |
|
||||
| L4-WebKit | PASS | PASS 8 | 3.9s |
|
||||
| L5-탐색/키보드 | PASS | PASS 14 | 6.3s |
|
||||
| L6-시나리오/E2E | PASS | PASS — | 45.4s |
|
||||
| L2-기능/감사 | PASS | PASS 72 | 10.2s |
|
||||
| L2-불변식/렌더 | PASS | PASS 10 | 17.5s |
|
||||
| L3-시각회귀/diff | PASS | PASS 30 | 12.2s |
|
||||
| L4-WebKit | PASS | PASS 8 | 4.7s |
|
||||
| L5-탐색/키보드 | PASS | PASS 14 | 6.4s |
|
||||
| L6-시나리오/E2E | PASS | PASS — | 42.6s |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue