diff --git a/extensions/diffs/src/tool.test.ts b/extensions/diffs/src/tool.test.ts index cefa9518278..28db0d61e53 100644 --- a/extensions/diffs/src/tool.test.ts +++ b/extensions/diffs/src/tool.test.ts @@ -397,7 +397,7 @@ describe("diffs tool", () => { }); const viewerPath = String((result?.details as Record).viewerPath); - const [id] = viewerPath.split("/").filter(Boolean).slice(-2); + const id = extractViewerArtifactId(viewerPath); const html = await store.readHtml(id); expect(html).toContain('body data-theme="light"'); expect(html).toContain("--diffs-font-size: 17px;"); @@ -446,7 +446,7 @@ describe("diffs tool", () => { expect((result?.details as Record).fileScale).toBe(2.75); expect((result?.details as Record).fileMaxWidth).toBe(1320); const viewerPath = String((result?.details as Record).viewerPath); - const [id] = viewerPath.split("/").filter(Boolean).slice(-2); + const id = extractViewerArtifactId(viewerPath); const html = await store.readHtml(id); expect(html).toContain('body data-theme="dark"'); }); @@ -580,6 +580,22 @@ function readDetails(result: unknown): Record { return details; } +function extractViewerArtifactId(viewerPath: string): string { + let previousSegment: string | undefined; + let currentSegment: string | undefined; + for (const segment of viewerPath.split("/")) { + if (segment.length === 0) { + continue; + } + previousSegment = currentSegment; + currentSegment = segment; + } + if (!previousSegment) { + throw new Error(`Missing artifact id in viewer path: ${viewerPath}`); + } + return previousSegment; +} + function readParametersProperties(parameters: unknown): Record { if (isRecord(parameters) && isRecord(parameters.properties)) { return parameters.properties;