调整:叫号内容连续播报三次
需求:公屏每次播放叫号声音时重复三遍。 实现:单项目页和多项目公屏均为每个新批次排队三条相同语音,并更新回归测试。
This commit is contained in:
@@ -89,7 +89,7 @@ describe("DisplayPage", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("新批次出现时只播报一次叫号内容", () => {
|
it("新批次出现时连续播报三次叫号内容", () => {
|
||||||
const speak = vi.fn();
|
const speak = vi.fn();
|
||||||
const cancel = vi.fn();
|
const cancel = vi.fn();
|
||||||
class SpeechSynthesisUtteranceMock {
|
class SpeechSynthesisUtteranceMock {
|
||||||
@@ -118,11 +118,13 @@ describe("DisplayPage", () => {
|
|||||||
rerender(<DisplayPage />);
|
rerender(<DisplayPage />);
|
||||||
|
|
||||||
expect(cancel).toHaveBeenCalledOnce();
|
expect(cancel).toHaveBeenCalledOnce();
|
||||||
expect(speak).toHaveBeenCalledOnce();
|
expect(speak).toHaveBeenCalledTimes(3);
|
||||||
expect(speak.mock.calls[0][0]).toMatchObject({
|
for (const [utterance] of speak.mock.calls) {
|
||||||
|
expect(utterance).toMatchObject({
|
||||||
text: "请零零零零五号至零零零零六号,前往入口。",
|
text: "请零零零零五号至零零零零六号,前往入口。",
|
||||||
lang: "zh-CN",
|
lang: "zh-CN",
|
||||||
rate: 0.9,
|
rate: 0.9,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -68,11 +68,13 @@ export function DisplayPage() {
|
|||||||
|| typeof SpeechSynthesisUtterance === "undefined"
|
|| typeof SpeechSynthesisUtterance === "undefined"
|
||||||
) return;
|
) return;
|
||||||
|
|
||||||
|
window.speechSynthesis.cancel();
|
||||||
|
for (let repeat = 0; repeat < 3; repeat += 1) {
|
||||||
const utterance = new SpeechSynthesisUtterance(currentAnnouncement);
|
const utterance = new SpeechSynthesisUtterance(currentAnnouncement);
|
||||||
utterance.lang = "zh-CN";
|
utterance.lang = "zh-CN";
|
||||||
utterance.rate = 0.9;
|
utterance.rate = 0.9;
|
||||||
window.speechSynthesis.cancel();
|
|
||||||
window.speechSynthesis.speak(utterance);
|
window.speechSynthesis.speak(utterance);
|
||||||
|
}
|
||||||
}, [currentAnnouncement, currentCallKey, hasSnapshot, token]);
|
}, [currentAnnouncement, currentCallKey, hasSnapshot, token]);
|
||||||
const waitingTicketCount = data?.waiting_ticket_count ?? data?.waiting_count ?? 0;
|
const waitingTicketCount = data?.waiting_ticket_count ?? data?.waiting_count ?? 0;
|
||||||
const waitingPeopleCount = data?.waiting_people_count ?? 0;
|
const waitingPeopleCount = data?.waiting_people_count ?? 0;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ describe("PublicDisplayCenterPage", () => {
|
|||||||
expect(screen.queryByRole("navigation", { name: "管理任务" })).not.toBeInTheDocument();
|
expect(screen.queryByRole("navigation", { name: "管理任务" })).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("新叫号批次出现时播报项目和号码", () => {
|
it("新叫号批次出现时连续三次播报项目和号码", () => {
|
||||||
const speak = vi.fn();
|
const speak = vi.fn();
|
||||||
class SpeechSynthesisUtteranceMock {
|
class SpeechSynthesisUtteranceMock {
|
||||||
text: string;
|
text: string;
|
||||||
@@ -95,10 +95,12 @@ describe("PublicDisplayCenterPage", () => {
|
|||||||
};
|
};
|
||||||
rerender(<PublicDisplayCenterPage />);
|
rerender(<PublicDisplayCenterPage />);
|
||||||
|
|
||||||
expect(speak).toHaveBeenCalledOnce();
|
expect(speak).toHaveBeenCalledTimes(3);
|
||||||
expect(speak.mock.calls[0][0]).toMatchObject({
|
for (const [utterance] of speak.mock.calls) {
|
||||||
|
expect(utterance).toMatchObject({
|
||||||
text: "东门观光车,请零零零一六号,前往入口。",
|
text: "东门观光车,请零零零一六号,前往入口。",
|
||||||
lang: "zh-CN",
|
lang: "zh-CN",
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -37,11 +37,13 @@ export function PublicDisplayCenterPage() {
|
|||||||
|
|
||||||
window.speechSynthesis.cancel();
|
window.speechSynthesis.cancel();
|
||||||
for (const announcement of announcements) {
|
for (const announcement of announcements) {
|
||||||
|
for (let repeat = 0; repeat < 3; repeat += 1) {
|
||||||
const utterance = new SpeechSynthesisUtterance(announcement);
|
const utterance = new SpeechSynthesisUtterance(announcement);
|
||||||
utterance.lang = "zh-CN";
|
utterance.lang = "zh-CN";
|
||||||
utterance.rate = 0.9;
|
utterance.rate = 0.9;
|
||||||
window.speechSynthesis.speak(utterance);
|
window.speechSynthesis.speak(utterance);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}, [data]);
|
}, [data]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user