File size: 3,397 Bytes
0bd62e5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
import { test, describe, assert, afterEach } from "vitest";
import { cleanup, render } from "@self/tootils";
import Audio from "./";
import type { LoadingStatus } from "@gradio/statustracker";
import { setupi18n } from "../core/src/i18n";
import ResizeObserver from "resize-observer-polyfill";
global.ResizeObserver = ResizeObserver;
const loading_status: LoadingStatus = {
eta: 0,
queue_position: 1,
queue_size: 1,
status: "complete",
scroll_to_output: false,
visible: true,
fn_index: 0,
show_progress: "full"
};
const default_values = {
loading_status,
label: "music",
value: {
url: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
path: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
orig_name: "SoundHelix-Song-1.mp3"
},
show_label: true
};
describe("Audio", () => {
setupi18n();
afterEach(() => cleanup());
test("renders audio component", async () => {
const { getAllByTestId } = await render(Audio, {
...default_values,
interactive: true,
sources: ["microphone", "upload"],
pending: false,
streaming: false
});
assert.exists(getAllByTestId("waveform-music"));
});
test("renders audio component with audio controls", async () => {
const { getAllByTestId, getAllByLabelText, getAllByText } = await render(
Audio,
{
...default_values,
streaming: false,
pending: false,
sources: ["microphone"],
interactive: true
}
);
assert.exists(getAllByTestId("waveform-controls"));
assert.exists(getAllByLabelText("Trim audio to selection"));
assert.exists(getAllByLabelText("Reset audio"));
assert.exists(getAllByText("0:00"));
assert.exists(getAllByLabelText("audio.play"));
assert.exists(getAllByLabelText("Adjust volume"));
assert.exists(getAllByLabelText("Adjust playback speed to 1.5x"));
assert.exists(getAllByLabelText("Skip forward by 5 seconds"));
});
test("does not render with audio editing controls when not interactive", async () => {
const { getAllByTestId, queryByLabelText } = await render(Audio, {
...default_values,
streaming: false,
pending: false,
sources: ["microphone"],
interactive: false
});
assert.exists(getAllByTestId("waveform-controls"));
assert.notExists(queryByLabelText("Trim audio to selection"));
assert.notExists(queryByLabelText("Reset audio"));
});
test("renders source selection with correct selected source", async () => {
const { getByTestId, getByLabelText } = await render(Audio, {
...default_values,
streaming: false,
pending: false,
sources: ["microphone", "upload"],
interactive: true
});
assert.exists(getByTestId("source-select"));
assert.lengthOf(getByTestId("source-select").children, 2);
assert.exists(getByLabelText("Record audio"));
assert.equal(
getByLabelText("Record audio").classList.contains("selected"),
true
);
assert.equal(
getByLabelText("Upload file").classList.contains("selected"),
false
);
});
test("does not render source selection when upload is only source", async () => {
const { queryByTestId } = await render(Audio, {
...default_values,
streaming: false,
pending: false,
sources: ["upload"],
interactive: true
});
assert.notExists(queryByTestId("source-select"));
});
});
|