feat(KB-180): rename pause button titles from 'AI engine' to 'scheduling'

- Update Header pause button titles to 'Pause scheduling' / 'Resume scheduling'
- Update Header unit tests to assert new title strings
- Update App integration tests for engine pause flows to use new titles
This commit is contained in:
Dustin Byrne
2026-03-28 17:17:14 -04:00
parent d2e2e50a15
commit 6ff64597d8
3 changed files with 16 additions and 16 deletions

View File

@@ -27,7 +27,7 @@ export function Header({
<button <button
className={`btn-icon${enginePaused ? " btn-icon--paused" : ""}`} className={`btn-icon${enginePaused ? " btn-icon--paused" : ""}`}
onClick={onToggleEnginePause} onClick={onToggleEnginePause}
title={enginePaused ? "Resume AI engine" : "Pause AI engine"} title={enginePaused ? "Resume scheduling" : "Pause scheduling"}
disabled={!!globalPaused} disabled={!!globalPaused}
> >
{enginePaused ? <Play size={16} /> : <Pause size={16} />} {enginePaused ? <Play size={16} /> : <Pause size={16} />}

View File

@@ -218,9 +218,9 @@ describe("App engine pause (soft pause)", () => {
render(<App />); render(<App />);
// When engine is paused, the pause button should show "Resume AI engine" // When engine is paused, the pause button should show "Resume scheduling"
await waitFor(() => { await waitFor(() => {
expect(screen.getByTitle("Resume AI engine")).toBeTruthy(); expect(screen.getByTitle("Resume scheduling")).toBeTruthy();
}); });
}); });
@@ -233,7 +233,7 @@ describe("App engine pause (soft pause)", () => {
render(<App />); render(<App />);
await waitFor(() => { await waitFor(() => {
expect(screen.getByTitle("Pause AI engine")).toBeTruthy(); expect(screen.getByTitle("Pause scheduling")).toBeTruthy();
}); });
}); });
@@ -246,15 +246,15 @@ describe("App engine pause (soft pause)", () => {
render(<App />); render(<App />);
await waitFor(() => { await waitFor(() => {
expect(screen.getByTitle("Pause AI engine")).toBeTruthy(); expect(screen.getByTitle("Pause scheduling")).toBeTruthy();
}); });
// Click the pause button // Click the pause button
fireEvent.click(screen.getByTitle("Pause AI engine")); fireEvent.click(screen.getByTitle("Pause scheduling"));
// Should optimistically switch to "Resume" state // Should optimistically switch to "Resume" state
await waitFor(() => { await waitFor(() => {
expect(screen.getByTitle("Resume AI engine")).toBeTruthy(); expect(screen.getByTitle("Resume scheduling")).toBeTruthy();
}); });
// Should call updateSettings with enginePaused: true // Should call updateSettings with enginePaused: true

View File

@@ -28,47 +28,47 @@ describe("Header", () => {
// ── Pause button (soft pause) ──────────────────────────────────── // ── Pause button (soft pause) ────────────────────────────────────
it("renders pause button with 'Pause AI engine' title when not paused", () => { it("renders pause button with 'Pause scheduling' title when not paused", () => {
render(<Header enginePaused={false} />); render(<Header enginePaused={false} />);
const btn = screen.getByTitle("Pause AI engine"); const btn = screen.getByTitle("Pause scheduling");
expect(btn).toBeDefined(); expect(btn).toBeDefined();
}); });
it("renders play button with 'Resume AI engine' title when engine is paused", () => { it("renders play button with 'Resume scheduling' title when engine is paused", () => {
render(<Header enginePaused={true} />); render(<Header enginePaused={true} />);
const btn = screen.getByTitle("Resume AI engine"); const btn = screen.getByTitle("Resume scheduling");
expect(btn).toBeDefined(); expect(btn).toBeDefined();
}); });
it("calls onToggleEnginePause when pause button is clicked", () => { it("calls onToggleEnginePause when pause button is clicked", () => {
const onToggle = vi.fn(); const onToggle = vi.fn();
render(<Header enginePaused={false} onToggleEnginePause={onToggle} />); render(<Header enginePaused={false} onToggleEnginePause={onToggle} />);
const btn = screen.getByTitle("Pause AI engine"); const btn = screen.getByTitle("Pause scheduling");
fireEvent.click(btn); fireEvent.click(btn);
expect(onToggle).toHaveBeenCalledOnce(); expect(onToggle).toHaveBeenCalledOnce();
}); });
it("applies btn-icon--paused class when engine is paused", () => { it("applies btn-icon--paused class when engine is paused", () => {
render(<Header enginePaused={true} />); render(<Header enginePaused={true} />);
const btn = screen.getByTitle("Resume AI engine"); const btn = screen.getByTitle("Resume scheduling");
expect(btn.className).toContain("btn-icon--paused"); expect(btn.className).toContain("btn-icon--paused");
}); });
it("does not apply btn-icon--paused class when engine is not paused", () => { it("does not apply btn-icon--paused class when engine is not paused", () => {
render(<Header enginePaused={false} />); render(<Header enginePaused={false} />);
const btn = screen.getByTitle("Pause AI engine"); const btn = screen.getByTitle("Pause scheduling");
expect(btn.className).not.toContain("btn-icon--paused"); expect(btn.className).not.toContain("btn-icon--paused");
}); });
it("pause button is disabled when globalPaused is true", () => { it("pause button is disabled when globalPaused is true", () => {
render(<Header globalPaused={true} enginePaused={false} />); render(<Header globalPaused={true} enginePaused={false} />);
const btn = screen.getByTitle("Pause AI engine"); const btn = screen.getByTitle("Pause scheduling");
expect((btn as HTMLButtonElement).disabled).toBe(true); expect((btn as HTMLButtonElement).disabled).toBe(true);
}); });
it("pause button is enabled when globalPaused is false", () => { it("pause button is enabled when globalPaused is false", () => {
render(<Header globalPaused={false} enginePaused={false} />); render(<Header globalPaused={false} enginePaused={false} />);
const btn = screen.getByTitle("Pause AI engine"); const btn = screen.getByTitle("Pause scheduling");
expect((btn as HTMLButtonElement).disabled).toBe(false); expect((btn as HTMLButtonElement).disabled).toBe(false);
}); });