Skip to content

Commit d8e2d02

Browse files
committed
fix(viewer): address title ci
1 parent 3666fde commit d8e2d02

2 files changed

Lines changed: 8 additions & 6 deletions

File tree

e2e/viewer.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,13 @@ test("activity in an unselected session badges the tab title until viewed", asyn
275275
await publish(server.url, { html: "<p>a</p>", title: "First", agent: "one" });
276276

277277
await page.goto(server.url);
278-
await expect(page).toHaveTitle("sideshow");
278+
await expect(page).toHaveTitle("one session · sideshow");
279279

280280
await publish(server.url, { html: "<p>b</p>", title: "Second", agent: "two" });
281281

282-
await expect(page).toHaveTitle("(1) sideshow");
282+
await expect(page).toHaveTitle("(1) one session · sideshow");
283283
await page.locator(".sess", { hasText: "two" }).click();
284-
await expect(page).toHaveTitle("sideshow");
284+
await expect(page).toHaveTitle("two session · sideshow");
285285
});
286286

287287
test("Cmd+Option+Up/Down switches between sessions, wrapping at the ends", async ({

server/app.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -656,9 +656,11 @@ export function createApp({
656656
if (!title) return text;
657657
const escaped = escapeHtml(title);
658658
const titleTag = `<title>${escaped}</title>`;
659-
return /<title>.*?<\/title>/.test(text)
660-
? text.replace(/<title>.*?<\/title>/, titleTag)
661-
: injectHead(text, titleTag);
659+
const titleStart = text.indexOf("<title>");
660+
if (titleStart < 0) return injectHead(text, titleTag);
661+
const titleEnd = text.indexOf("</title>", titleStart + "<title>".length);
662+
if (titleEnd < 0) return injectHead(text, titleTag);
663+
return `${text.slice(0, titleStart)}${titleTag}${text.slice(titleEnd + "</title>".length)}`;
662664
};
663665

664666
const sessionDocumentTitle = (session: Session | null | undefined) => {

0 commit comments

Comments
 (0)