Yann
test
78fee96
raw
history blame
1.6 kB
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()