Update docs and screenshots
CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s

This commit is contained in:
2026-07-25 10:26:29 +02:00
parent d6cda77aaf
commit 1f110866f5
170 changed files with 24657 additions and 3 deletions
+143
View File
@@ -0,0 +1,143 @@
import type { ComponentProps } from "react";
import { fireEvent, render, screen } from "@testing-library/react";
import "@testing-library/jest-dom/vitest";
import { expect, test, vi } from "vitest";
import { SettingsPage } from "../src/pages/SettingsPage";
const noopString = vi.fn(async () => "");
const noopVoid = vi.fn(async () => {});
function buildProps(overrides?: Partial<ComponentProps<typeof SettingsPage>>): ComponentProps<typeof SettingsPage> {
return {
bpmStatus: {
mode: "manual",
bpm: 120,
confidence: 1,
devices: [],
current_device: "alsa:plughw:1,0",
selected_device: "alsa:auto",
recommended_device: "alsa:plughw:1,0",
audio_connected: true,
last_error: null,
input_level: 0.12,
peak_level: 0.25,
clipping: false,
sample_rate: 44100,
channels: 1,
format: "S16_LE"
},
bpmDevices: [
{ id: "alsa:auto", name: "Auto", backend: "alsa", is_default: true },
{ id: "alsa:plughw:1,0", name: "plughw:1,0", backend: "alsa", is_default: false }
],
dmxConfig: {
backend: "artnet",
universe: 1,
output_port: "WLED Matrix Loft",
target_host: "",
artnet_nodes: []
},
dmxDevices: [],
haConfig: {
enabled: true,
base_url: "",
default_universe: 10,
has_token: true,
token_mask: "********",
mapping_count: 0,
dispatch_count: 0,
error_count: 0,
last_error: null,
last_successful_call_at: null,
last_connection_success_at: null,
last_connection_error: null,
ha_version: null,
auth_ok: false,
reachable: false
},
haEntities: [],
haMappings: [],
onSaveDmxConfig: noopString,
onDiscoverArtNet: noopString,
onSaveHomeAssistantConfig: noopString,
onTestHomeAssistantConnection: noopString,
onRefreshHomeAssistantEntities: noopString,
onSaveHomeAssistantMapping: noopString,
onDeleteHomeAssistantMapping: noopVoid,
onTestHomeAssistantMapping: noopString,
onSaveBpmDevice: noopString,
onRefreshAudioDevices: noopVoid,
onRestartService: noopString,
onRebootHost: noopString,
...overrides
};
}
test("bevarer HA base url mens live refresh opdaterer props", () => {
const view = render(<SettingsPage {...buildProps()} />);
const input = screen.getByPlaceholderText("fx http://homeassistant.local:8123") as HTMLInputElement;
fireEvent.change(input, { target: { value: "http://192.168.2.50:8123" } });
expect(input.value).toBe("http://192.168.2.50:8123");
view.rerender(
<SettingsPage
{...buildProps({
haConfig: {
...buildProps().haConfig,
base_url: ""
}
})}
/>
);
expect(screen.getByPlaceholderText("fx http://homeassistant.local:8123")).toHaveValue(
"http://192.168.2.50:8123"
);
});
test("bevarer Art-Net target host mens live refresh opdaterer props", () => {
const view = render(<SettingsPage {...buildProps()} />);
const input = screen.getByPlaceholderText("fx 192.168.2.60") as HTMLInputElement;
fireEvent.change(input, { target: { value: "192.168.2.77" } });
expect(input.value).toBe("192.168.2.77");
view.rerender(
<SettingsPage
{...buildProps({
dmxConfig: {
backend: "artnet",
universe: 1,
output_port: "WLED Matrix Loft",
target_host: "",
artnet_nodes: []
}
})}
/>
);
expect(screen.getByPlaceholderText("fx 192.168.2.60")).toHaveValue("192.168.2.77");
});
test("bevarer valgt audio-input mens live refresh opdaterer props", () => {
const view = render(<SettingsPage {...buildProps()} />);
const select = screen.getByLabelText("ALSA-input") as HTMLSelectElement;
fireEvent.change(select, { target: { value: "alsa:plughw:1,0" } });
expect(select.value).toBe("alsa:plughw:1,0");
view.rerender(
<SettingsPage
{...buildProps({
bpmStatus: {
...buildProps().bpmStatus!,
selected_device: "alsa:auto"
}
})}
/>
);
expect(screen.getByLabelText("ALSA-input")).toHaveValue("alsa:plughw:1,0");
});