diff --git a/apps/desktop/src/features/score/ScoreView.test.tsx b/apps/desktop/src/features/score/ScoreView.test.tsx index de4ccb95..8f17f4d4 100644 --- a/apps/desktop/src/features/score/ScoreView.test.tsx +++ b/apps/desktop/src/features/score/ScoreView.test.tsx @@ -1,4 +1,4 @@ -import { act, fireEvent, render, screen, waitFor } from "@testing-library/react"; +import { act, createEvent, fireEvent, render, screen, waitFor } from "@testing-library/react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { RehearsalSong, ScoreAttachment } from "@bandscope/shared-types"; import { invoke } from "@tauri-apps/api/core"; @@ -97,7 +97,12 @@ describe("ScoreView", () => { expect(screen.getByText("Scores attach to the active analysis project.")).toBeInTheDocument(); expect(screen.getByRole("button", { name: "Add score" })).toBeDisabled(); expect(screen.getByRole("button", { name: "Open score: opener.pdf" })).toBeDisabled(); - expect(screen.getByRole("button", { name: "Remove: opener.pdf" })).toBeDisabled(); + expect(screen.getByRole("button", { name: "Remove: opener.pdf" })).toHaveAttribute("aria-disabled", "true"); + + const removeBtn = screen.getByRole("button", { name: "Remove: opener.pdf" }); + const removeEvent = createEvent.click(removeBtn); + fireEvent(removeBtn, removeEvent); + expect(removeEvent.defaultPrevented).toBe(true); fireEvent.click(screen.getByRole("button", { name: "Open score: opener.pdf" })); expect(mockInvoke).not.toHaveBeenCalled(); diff --git a/apps/desktop/src/features/score/ScoreView.tsx b/apps/desktop/src/features/score/ScoreView.tsx index 72732450..d0205bdf 100644 --- a/apps/desktop/src/features/score/ScoreView.tsx +++ b/apps/desktop/src/features/score/ScoreView.tsx @@ -195,8 +195,15 @@ export function ScoreView({ song, projectId, onSongUpdate }: ScoreViewProps) { @@ -304,9 +314,16 @@ export function ScoreViewer({ data, fileName, onStatusChange }: ScoreViewerProps variant="outline" size="icon-lg" className="size-14" + title={t("scoreViewerNextPage")} aria-label={t("scoreViewerNextPage")} - disabled={pageNumber >= pageCount} - onClick={goToNextPage} + aria-disabled={pageNumber >= pageCount ? "true" : undefined} + onClick={(e) => { + if (pageNumber >= pageCount) { + e.preventDefault(); + return; + } + goToNextPage(); + }} >