import { test, expect, drag_and_drop_file } from "@gradio/tootils"; import { chromium } from "playwright"; test("Audio click-to-upload uploads audio successfuly. File downloading works and file has correct name.", async ({ page }) => { await page .getByRole("button", { name: "Drop Audio Here - or - Click to Upload" }) .click(); const uploader = await page.locator("input[type=file]"); await uploader.setInputFiles(["../../test/test_files/audio_sample.wav"]); await expect(page.getByLabel("# Input Change Events")).toHaveValue("1"); await expect(page.getByLabel("# Input Upload Events")).toHaveValue("1"); await page.getByLabel("Clear").click(); await expect(page.getByLabel("# Input Change Events")).toHaveValue("2"); await page .getByRole("button", { name: "Drop Audio Here - or - Click to Upload" }) .click(); await uploader.setInputFiles(["../../test/test_files/audio_sample.wav"]); await expect(page.getByLabel("# Input Change Events")).toHaveValue("3"); await expect(page.getByLabel("# Input Upload Events")).toHaveValue("2"); const downloadPromise = page.waitForEvent("download"); await page.getByLabel("Download").click(); const download = await downloadPromise; await expect(download.suggestedFilename()).toBe("audio_sample.wav"); }); test("Audio drag-and-drop uploads a file to the server correctly.", async ({ page }) => { await drag_and_drop_file( page, "input[type=file]", "../../test/test_files/audio_sample.wav", "audio_sample.wav", "audio/wav" ); await expect(page.getByLabel("# Input Change Events")).toHaveValue("1"); await expect(page.getByLabel("# Input Upload Events")).toHaveValue("1"); }); test("Audio drag-and-drop displays a warning when the file is of the wrong mime type.", async ({ page }) => { await drag_and_drop_file( page, "input[type=file]", "../../test/test_files/audio_sample.wav", "audio_sample.wav" ); const toast = page.getByTestId("toast-body"); expect(toast).toContainText("warning"); }); test.skip("Play, Pause, and stop events work correctly.", async ({ page }) => { const uploader = await page.locator("input[type=file]"); await uploader.setInputFiles(["../../demo/audio_debugger/cantina.wav"]); const event_triggered = async (label: string) => { const value = await page.getByLabel(label).inputValue(); expect(Number(value)).toBeGreaterThan(0); }; await page .getByTestId("waveform-Output Audio") .getByLabel("Play", { exact: true }) .click(); await expect(async () => event_triggered("# Output Play Events")).toPass(); await page.getByTestId("waveform-Output Audio").getByLabel("Pause").click(); await expect(async () => event_triggered("# Output Pause Events")).toPass(); await page .getByTestId("waveform-Output Audio") .getByLabel("Play", { exact: true }) .click(); await expect(async () => event_triggered("# Output Stop Events")).toPass(); }); test.skip("Record, pause, and stop recording events work correctly.", async ({ page }) => { const browser = await chromium.launch(); const context = await browser.newContext({ permissions: ["microphone"] }); context.grantPermissions(["microphone"]); await page.getByLabel("Record audio").click(); await page.getByRole("button", { name: "Record", exact: true }).click(); expect(await page.getByLabel("# Input Start Recording Events")).toHaveValue( "1" ); await page.waitForTimeout(2000); await page.getByLabel("pause", { exact: true }).click(); await page.getByRole("button", { name: "Resume" }).click(); expect(await page.getByLabel("# Input Pause Recording Events")).toHaveValue( "1" ); await page.getByRole("button", { name: "Stop" }).click(); expect(await page.getByLabel("# Input Stop Recording Events")).toHaveValue( "1" ); expect(await page.getByLabel("# Input Change Events")).toHaveValue("1"); });