Files
Miguel Ángel 8f9ee9f55d test(studio): add preview/render parity E2E gate
Playwright test that drives the real Studio UI — selects elements via the
Layers panel, modifies X position, text color, and opacity — then screenshots
the preview at t=0/1/2s, triggers a real render, extracts matching frames with
ffmpeg, and fails if the average luma diff exceeds 0.78% of 255 (YAVG > 2.0).

Also adds the GitHub Actions workflow that runs on any change touching studio,
core, player, producer, engine, or cli, with diff artifact upload on failure.

Supporting changes:
- StudioApiAdapter.onProjectFileWrite optional callback so file writes from the
  files API can notify the server to invalidate its cached ETag signature
- CLI adapter implements onProjectFileWrite by nulling cachedProjectSignature,
  ensuring the preview ETag advances after every UI edit
- Playwright config, fixture project (index.html + generated assets), and
  asset generator script (e2e/setup/gen-assets.ts via ffmpeg)
2026-05-13 13:45:05 -07:00

67 lines
1.7 KiB
JSON

{
"name": "@hyperframes/studio",
"version": "0.6.5",
"description": "",
"repository": {
"type": "git",
"url": "https://github.com/heygen-com/hyperframes",
"directory": "packages/studio"
},
"files": [
"src",
"dist"
],
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": "./src/index.ts",
"./tailwind-preset": "./src/styles/tailwind-preset.ts"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"test:e2e": "playwright test --config e2e/playwright.config.ts"
},
"dependencies": {
"@codemirror/autocomplete": "^6.20.1",
"@codemirror/commands": "^6.10.3",
"@codemirror/lang-css": "^6.3.1",
"@codemirror/lang-html": "^6.4.9",
"@codemirror/lang-javascript": "^6.2.2",
"@codemirror/language": "^6.12.2",
"@codemirror/search": "^6.6.0",
"@codemirror/state": "^6.6.0",
"@codemirror/theme-one-dark": "^6.1.2",
"@codemirror/view": "6.40.0",
"@hyperframes/core": "workspace:*",
"@hyperframes/player": "workspace:*",
"@phosphor-icons/react": "^2.1.10",
"codemirror": "^6.0.1",
"motion": "^12.38.0"
},
"devDependencies": {
"@hyperframes/producer": "workspace:*",
"@playwright/test": "^1.52.0",
"@types/react": "19",
"@types/react-dom": "19",
"@vitejs/plugin-react": "^4.0.0",
"autoprefixer": "^10.4.0",
"postcss": "^8.4.0",
"puppeteer-core": "^24.40.0",
"tailwindcss": "^3.4.0",
"typescript": "^5.0.0",
"vite": "^6.4.2",
"vitest": "^3.2.4",
"zustand": "^5.0.0"
},
"peerDependencies": {
"react": "19",
"react-dom": "19",
"zustand": "^4.0.0 || ^5.0.0"
}
}