Enhancement: better display of Arcane widget errors (#6281)
Some checks failed
Docker CI / Linting Checks (push) Has been cancelled
Docker CI / Docker Build & Push (push) Has been cancelled
Tests / vitest (1) (push) Has been cancelled
Tests / vitest (2) (push) Has been cancelled
Tests / vitest (3) (push) Has been cancelled
Tests / vitest (4) (push) Has been cancelled

This commit is contained in:
shamoon
2026-02-05 00:33:38 -08:00
committed by GitHub
parent 4974cd96b6
commit f729290e96
2 changed files with 12 additions and 1 deletions

View File

@@ -24,7 +24,8 @@ export default function Component({ service }) {
const { data: images, error: imagesError } = useWidgetAPI(widget, "images"); const { data: images, error: imagesError } = useWidgetAPI(widget, "images");
const { data: updates, error: updatesError } = useWidgetAPI(widget, "updates"); const { data: updates, error: updatesError } = useWidgetAPI(widget, "updates");
const error = containersError ?? imagesError ?? updatesError; const error =
containersError ?? imagesError ?? updatesError ?? containers?.detail ?? images?.detail ?? updates?.detail;
if (error) { if (error) {
return <Container service={service} error={error} />; return <Container service={service} error={error} />;
} }

View File

@@ -34,6 +34,16 @@ describe("widgets/arcane/component", () => {
expect(screen.getByText("arcane.environment_required")).toBeInTheDocument(); expect(screen.getByText("arcane.environment_required")).toBeInTheDocument();
}); });
it("shows an error when API calls return detail errors", () => {
useWidgetAPI.mockImplementation(() => ({ data: { detail: "Specific API error" }, error: undefined }));
renderWithProviders(<Component service={{ widget: { type: "arcane", env: "prod" } }} />, {
settings: { hideErrors: false },
});
expect(screen.getByText("Specific API error")).toBeInTheDocument();
});
it("renders placeholders while loading data", () => { it("renders placeholders while loading data", () => {
useWidgetAPI.mockImplementation(() => ({ data: undefined, error: undefined })); useWidgetAPI.mockImplementation(() => ({ data: undefined, error: undefined }));