بنقرة واحدة
verify
Build, run, and drive the Kon10 playground Studio to verify changes end-to-end.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Build, run, and drive the Kon10 playground Studio to verify changes end-to-end.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | verify |
| description | Build, run, and drive the Kon10 playground Studio to verify changes end-to-end. |
pnpm install
pnpm -r --sort build # builds packages in dependency order (ui → studio-sdk → start → playground)
Use the dev server, not the production build — the nitro .output bundle
externalizes @libsql/client and fails at runtime with ERR_MODULE_NOT_FOUND
(pnpm keeps it out of .output/server/node_modules):
# Seed an admin so you can log straight in, instead of walking /setup:
cd apps/playground && ADMIN_EMAIL=admin@kon10.dev ADMIN_PASSWORD=password pnpm dev
Uses apps/playground/local.db (libsql). No admin is seeded unless BOTH
ADMIN_EMAIL and ADMIN_PASSWORD are set (see kon10.config.base.ts seed) —
without them the install starts empty and /login redirects to /setup to
create the first admin. Set them as above for verification runs; the E2E suite
does the same in e2e/server.mjs.
Playwright with the pre-installed browser (executablePath: '/opt/pw-browsers/chromium',
npm i playwright-core in a scratch dir). Login is a real page at /login
(two inputs + submit); the auth POST goes to /__kon10/modules/auth/login.
Loading /studio/... unauthenticated renders a client-side "Redirecting…"
splash — always log in via /login first, then waitForURL('**/studio**').
To verify first-run setup instead, start with the two ADMIN_* vars unset and
a deleted local.db; /login then redirects to /setup (name/email/password
/studio.Useful routes: /studio (dashboard), /studio/content/<slug> (lists),
/studio/documents/<slug> (singletons, e.g. landing-page, footer),
/studio/settings/content/users (settings-area entity).
Gotchas:
a[href=...] selectors hit the hidden one — scope to
nav[aria-label] or use getByRole('link', { name: ... }), and the
section tab can share an href with its first sub-item.document.querySelector('main').parentElement is the
rail + content flex wrapper that contentWidth sizes
(max-w-content-max = 1152px at default, viewport width at full).