verify
스타14
포크0
업데이트2026년 7월 11일 06:38
本仓库(浏览器端 canvas + ffmpeg.wasm 单页应用)的端到端验证方法
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SKILL.md
readonly메뉴
本仓库(浏览器端 canvas + ffmpeg.wasm 单页应用)的端到端验证方法
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | verify |
| description | 本仓库(浏览器端 canvas + ffmpeg.wasm 单页应用)的端到端验证方法 |
npm run dev # Vite, 端口 3000(后台运行)
注意:@ffmpeg/ffmpeg 必须在 vite.config.ts 的 optimizeDeps.exclude 里,否则 dev 模式下
其内部 worker.js 会 404,FFmpeg 永远加载不了(生产构建不受影响)。
在 scratchpad 里 npm i playwright-core gifenc,用系统 Edge 无头驱动:
const browser = await chromium.launch({ channel: 'msedge', headless: true });
关键手法(完整脚本可参考历史会话的 verify.mjs):
setInputFiles({ name, mimeType, buffer }) 直接传 Buffer。
UST 内容用纯文本构造([#SETTING]/Tempo=/[#0000]/Length=/Lyric=);
动画 GIF 用 gifenc 在 Node 里生成两帧红蓝交替;PNG 可在页面里用 canvas.toDataURL 生成。input[accept=".ust,.ustx,.vsqx"];背景图输入是
input[type="file"][accept="image/*"] 的 last()(前面若干个是嘴型格子);
延时补正输入 input[type="number"][step="0.01"].w-24;导出按钮按文本 导出。确认 关闭。canvas.getContext('2d').getImageData(...)。注意没传嘴型图时
画布上叠了半透明占位色块和字母,背景色不会是纯色 —— 断言用"alpha=255 + 通道相对强弱/
采样值随时间变化",别断言精确 RGB。context({ acceptDownloads: true }) + page.waitForEvent('download'),
下载后检查文件头(mp4 含 ftyp,GIF 为 GIF89a)。FFmpeg wasm ~32MB,等导出按钮
从 disabled 变为可用再点。waitForFunction(fn, arg, options) —— options 是第三个参数,别放第二个。npm run dev:api(Express, 端口 3001,vite 代理 /api)。hasSeenNotice 控制;多次导航测试用
context.addInitScript(() => localStorage.removeItem('hasSeenNotice')),
语言切换按钮(中文/English/日本語)只在这个弹窗里。在线搜索;模态内搜索按钮用
getByRole('button', { name: '搜索', exact: true })(hasText 会撞到入口按钮)。page.route('**/api/search-ust?action=fetch*')
注入合成响应驱动,不依赖真实下载;真实搜索用 千本桜(BowlRoll 可达时约 40 条/页)。npx tsx scripts/verify-extract.mts。-0.5(历史回归点:受控 number input 吞负号)