본문
+ + ); +} + +describe("useArticleAnalytics TTS bridge", () => { + beforeEach(() => { + window.sessionStorage.clear(); + vi.stubGlobal("IntersectionObserver", MockIntersectionObserver); + vi.stubGlobal( + "fetch", + vi.fn(async () => new Response(null, { status: 204 })), + ); + Object.defineProperty(window.navigator, "sendBeacon", { + configurable: true, + value: undefined, + }); + Object.defineProperty(window, "matchMedia", { + configurable: true, + value: vi.fn(() => ({ matches: false })), + }); + }); + + afterEach(() => { + vi.unstubAllGlobals(); + window.sessionStorage.clear(); + }); + + it("forwards privacy-safe TTS player events into the article analytics endpoint", async () => { + render(+ Listen +
++ 속도·구간·이어듣기는 이 브라우저에만 저장돼요. + {selectedArtifact.status === "pending" + ? " 오디오 파일이 아직 생성 중이면 재생이 지연될 수 있어요." + : null} +
+- {title} 안의 섹션 인덱스를 먼저 찾고, 필요하면 관련 글 출처도 함께 - 보여줘요. + {sectionContext + ? `「${sectionContext.sectionTitle}」 부분을 기준으로 먼저 답해볼게요.` + : `${title} 전체를 기준으로 질문과 피드백을 받아요.`} + 답을 본 뒤에는 이 내용을 댓글로 달아서 서징에게도 물어볼 수 있어요. + 작성자가 직접 볼 수 있어요!