mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-14 18:01:20 +08:00
8f9ee9f55d
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)
67 lines
1.7 KiB
JSON
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"
|
|
}
|
|
}
|