verify
Build, launch and drive the Solo Leveling portfolio headlessly to verify changes end-to-end.
Informations de source
- Dépôt
- codeonym-org/portfolio
- Dernière activité de la source
- 23 septembre 2026 à 21:04
- Langue détectée de SKILL.md
- anglais
- Étoiles
- 0
- Forks
- 0
Options d'installation
Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.
Vérifiez les fichiers source
Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.
Affichage de SKILL.md
SKILL.md
Instructions source · Aperçu en lecture seule- name
- verify
- description
- Build, launch and drive the Solo Leveling portfolio headlessly to verify changes end-to-end.
# Verifying the portfolio
## Build & launch
```bash
pnpm build
pnpm start & # serves the prod build on http://localhost:3000
```
## Drive it headlessly
Playwright is NOT a project dep and `npx playwright` is blocked by
safe-chain; require it from the npx cache instead (find the hash dir
with `grep -rl playwright ~/.npm/_npx/*/package.json`):
```js
const { chromium } = require("/home/codeonym/.npm/_npx/<hash>/node_modules/playwright");
```
Any viewport works (v5 supports mobile: test `390x844` with `isMobile`/`hasTouch`).
## Flows & gotchas
- **Flow**: loading screen (real asset progress) → title → click the
`ARISE` button (`getByRole("button", { name: "ARISE", exact: true })`)
→ world. Title can take 20–40 s headless while assets stream.
- **Pin quality to low + mute** before load, or SwiftShader crawls:
```js
await page.addInitScript(() => localStorage.setItem("codeonym-world-v5",
JSON.stringify({ state: { quality: "low", visited: [], risen: [], completed: [], xp: 0, muted: true }, version: 0 })));
```
Headless still runs ~1–3 fps (GPU fill in software; JS is ~90% idle) —
that is the environment, not the app. Give `page.screenshot` a 150 s
timeout and judge real perf in a real browser.
- **Animations are frame-capped**: mixers clamp delta to 0.05 s, so at
headless fps a 4 s ARISE takes ~75 s wall time. Poll
`system.snapshot().visitor.shadowsRisen` instead of sleeping.
- **Chrome extension tab may be hidden** (`document.visibilityState ===
"hidden"`): rAF pauses, so fps probes hang — ask the user to focus it.
- **Agent bridge**: `window.system` exposes the whole control
surface — `system.snapshot()` (serializable state),
`system.run(name, args)` (command dispatcher), `system.commands`
(`open_zone`, `walk_to_zone`, `arise`, `inspect_entity`, `open_cv`…).
Driving store-level behavior through it beats synthesizing clicks.
- **PDF windows render white in headless** (no PDF viewer plugin in
chromium headless shell); confirm the file with
`curl -sI localhost:3000/cv.pdf` instead.
- **`public/cv.pdf` is committed** (user-approved exception; only the
repo-root `cv.pdf` source stays gitignored) — no copy step needed.
- **Screenshots capture stale compositor tiles over the WebGL canvas**
(whole scene looks black, or a moving vertical boundary of visible
content). Not a product bug — force a clean repaint before every
screenshot by flashing a full-viewport overlay:
```js
await page.evaluate(async () => {
const d = document.createElement("div");
d.style.cssText = "position:fixed;inset:0;background:#fff;z-index:99999";
document.body.appendChild(d);
await new Promise((r) => setTimeout(r, 150));
d.remove();
});
await page.waitForTimeout(1000);
```
Voir sur GitHub