FN-6148: add mobile GitHub toggle touch coverage

Expand QuickEntryBox mobile touch coverage for the GitHub tracking toggle.

- preserve the mobile quick-entry render helper return value for create payload assertions
- add touch tests for GitHub toggle pressed state, SVG touch targets, submitted overrides, and primary styling
- verify mobile touch can disable GitHub tracking before quick task submission

Files changed:
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 63 +++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6148

Fusion-Task-Lineage: 4a577bc3-bf98-4821-aba2-0c66b99f1e1f
This commit is contained in:
gsxdsm
2026-06-09 18:38:40 -07:00
parent 784f3080a8
commit 4c9d6839bc

View File

@@ -465,11 +465,12 @@ describe("QuickEntryBox", () => {
vi.mocked(fetchSettings).mockResolvedValueOnce({
githubTrackingEnabledByDefault: true,
} as any);
renderQuickEntryBox(props);
const result = renderQuickEntryBox(props);
expandQuickEntry();
await waitFor(() => {
expect(screen.getByTestId("quick-entry-github-toggle")).not.toBeDisabled();
});
return result;
}
function focusTextareaWithValue(value: string) {
@@ -535,6 +536,66 @@ describe("QuickEntryBox", () => {
expect(fastToggle.getAttribute("aria-pressed")).toBe("true");
});
it("toggles GitHub tracking pressed state via mobile touch", async () => {
await renderMobileQuickEntryWithEnabledActions();
const githubToggle = screen.getByTestId("quick-entry-github-toggle");
expect(githubToggle).toHaveAttribute("aria-pressed", "true");
await touchActionButton(githubToggle);
expect(githubToggle).toHaveAttribute("aria-pressed", "false");
await touchActionButton(githubToggle);
expect(githubToggle).toHaveAttribute("aria-pressed", "true");
});
it("captures an SVG touch target inside the GitHub tracking toggle", async () => {
await renderMobileQuickEntryWithEnabledActions();
const githubToggle = screen.getByTestId("quick-entry-github-toggle");
const svg = githubToggle.querySelector("svg");
expect(svg).not.toBeNull();
expect(githubToggle).toHaveAttribute("aria-pressed", "true");
const { preventDefaultSpy } = fireCancelableTouchStart(svg!);
expect(preventDefaultSpy).toHaveBeenCalled();
await act(async () => {
fireEvent(svg!, new Event("touchend", { bubbles: true, cancelable: true }));
vi.runOnlyPendingTimers();
vi.runOnlyPendingTimers();
});
expect(githubToggle).toHaveAttribute("aria-pressed", "false");
});
it("submits GitHub tracking override after mobile touch disables tracking", async () => {
const { props } = await renderMobileQuickEntryWithEnabledActions();
const githubToggle = screen.getByTestId("quick-entry-github-toggle");
const textarea = screen.getByTestId("quick-entry-input");
await touchActionButton(githubToggle);
expect(githubToggle).toHaveAttribute("aria-pressed", "false");
fireEvent.change(textarea, { target: { value: "Disable GitHub tracking by touch" } });
fireEvent.keyDown(textarea, { key: "Enter" });
await waitFor(() => {
expect(props.onCreate).toHaveBeenCalled();
});
const payload = props.onCreate.mock.calls[0]?.[0];
expect(payload.githubTracking).toEqual({ enabled: false });
});
it("toggles GitHub tracking primary button styling via mobile touch", async () => {
await renderMobileQuickEntryWithEnabledActions();
const githubToggle = screen.getByTestId("quick-entry-github-toggle");
expect(githubToggle.classList.contains("btn-primary")).toBe(true);
await touchActionButton(githubToggle);
expect(githubToggle.classList.contains("btn-primary")).toBe(false);
await touchActionButton(githubToggle);
expect(githubToggle.classList.contains("btn-primary")).toBe(true);
});
it("opens the priority picker via mobile touch", async () => {
await renderMobileQuickEntryWithEnabledActions();
await touchActionButton(screen.getByTestId("quick-entry-priority-button"));