Spaces:
Sleeping
Sleeping
| import { existsSync } from "fs" | |
| import fs from "fs/promises" | |
| import path, { dirname } from "path" | |
| import puppeteer from "puppeteer" | |
| import { fileURLToPath } from "url" | |
| const __filename = fileURLToPath(import.meta.url) | |
| const __dirname = dirname(__filename) | |
| const browser = await puppeteer.launch({ | |
| headless: false, | |
| ignoreDefaultArgs: ["--mute-audio"], | |
| args: ["--autoplay-policy=no-user-gesture-required"], | |
| }) | |
| const page = await browser.newPage() | |
| await page.goto("http://localhost:3000/edit?disableFileSystem=true", { | |
| waitUntil: "networkidle0", | |
| }) | |
| // open midi file | |
| page.on("dialog", async (dialog) => { | |
| console.log(dialog.type()) | |
| console.log(dialog.message()) | |
| console.log(dialog.defaultValue()) | |
| await dialog.accept() | |
| }) | |
| await page.click("#tab-file", { delay: 200 }) | |
| const [fileChooser] = await Promise.all([ | |
| page.waitForFileChooser(), | |
| page.click('label[for="OpenButtonInputFile"]'), | |
| ]) | |
| const midiFilePath = path.resolve(__dirname, "test.mid") | |
| await fileChooser?.accept([midiFilePath]) | |
| await page.click("#button-play") | |
| await page.waitForTimeout(10000) | |
| const metrics = await page.metrics() | |
| const result = JSON.stringify(metrics, null, 2) | |
| const writeFile = async (dir, prefix, content) => { | |
| let count = 0 | |
| while (true) { | |
| const filePath = path.resolve(dir, `${prefix}${count}.json`) | |
| if (existsSync(filePath)) { | |
| count++ | |
| } else { | |
| await fs.mkdir(dir, { recursive: true }) | |
| await fs.writeFile(filePath, content, { encoding: "utf-8" }) | |
| break | |
| } | |
| } | |
| } | |
| await writeFile(path.resolve(__dirname, "output"), "metrics", result) | |
| await browser.close() | |