|
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"); |
|
}); |
|
|