1
import { test, expect } from "@gradio/tootils";
2
import { chromium } from "playwright";
3
// we cannot currently test the waveform canvas with playwright (https://github.com/microsoft/playwright/issues/23964)
4
// so this test covers the interactive elements around the waveform canvas
6
test("audio waveform", async ({ page }) => {
7
await expect(page.getByRole("tab", { name: "Audio" })).toHaveAttribute(
11
await page.getByRole("tab", { name: "Interface" }).click();
12
await page.getByRole("tab", { name: "Interface" }).click();
13
await page.getByRole("button", { name: "cantina.wav" }).click();
16
.getByTestId("waveform-x")
17
.getByLabel("Adjust playback speed to 1.5x")
19
await page.getByLabel("Adjust playback speed to 2x").click();
22
.getByTestId("waveform-x")
23
.getByLabel("Skip forward by 0.15 seconds")
26
.getByTestId("waveform-x")
27
.getByLabel("Skip backwards by 0.15 seconds")
29
await page.getByLabel("Trim audio to selection").click();
30
await page.getByRole("button", { name: "Trim" }).click();
31
await page.getByLabel("Reset audio").click();
32
await page.getByRole("button", { name: "Submit" }).click();
34
.getByTestId("waveform-output")
35
.getByLabel("Adjust playback speed to 1.5x")
38
.getByTestId("waveform-output")
39
.getByLabel("Skip backwards by 0.15 seconds")
42
.getByTestId("waveform-output")
43
.getByLabel("Skip forward by 0.15 seconds")
47
test("audio streaming tab", async ({ page }) => {
48
const browser = await chromium.launch({
49
args: ["--use-fake-ui-for-media-stream"]
52
const context = await browser.newContext({
53
permissions: ["microphone"]
56
context.grantPermissions(["microphone"]);
58
await page.getByRole("tab", { name: "Streaming" }).click();
60
await expect(page.getByLabel("Select input device")).toContainText(
61
"Fake Default Audio InputFake Audio Input 1Fake Audio Input 2"
65
test("recording audio", async ({ page }) => {
66
const browser = await chromium.launch({
67
args: ["--use-fake-ui-for-media-stream"]
70
const context = await browser.newContext({
71
permissions: ["microphone"]
74
await page.getByText("Interface").click();
75
await page.getByLabel("Record audio").click();
77
context.grantPermissions(["microphone"]);
79
await expect(page.getByRole("combobox")).toContainText(
80
"Fake Default Audio InputFake Audio Input 1Fake Audio Input 2"
83
await page.getByRole("button", { name: "Record", exact: true }).click();
85
await page.waitForTimeout(1000);
87
await expect(page.getByText("0:01", { exact: true })).toBeAttached();
89
await page.getByText("Stop", { exact: true }).nth(0).click();