session-timeline-file-projection.spec.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { expect, test } from "@playwright/test"
  2. import { assistantMessage, setupTimeline, toolPart, userMessage } from "../performance/timeline-stability/fixture"
  3. test("renders completed write content", async ({ page }) => {
  4. const id = "prt_file_projection_write"
  5. await setupTimeline(page, {
  6. messages: [
  7. userMessage(),
  8. assistantMessage([
  9. toolPart(id, "write", "completed", { filePath: "src/write.ts", content: "export const written = true\n" }),
  10. ]),
  11. ],
  12. settings: { editToolPartsExpanded: true },
  13. })
  14. await expect(page.locator(`[data-timeline-part-id="${id}"] [data-component="write-content"]`)).toBeVisible()
  15. })
  16. test("renders a completed single-file patch", async ({ page }) => {
  17. const id = "prt_file_projection_single_patch"
  18. await setupTimeline(page, {
  19. messages: [
  20. userMessage(),
  21. assistantMessage([
  22. toolPart(
  23. id,
  24. "patch",
  25. "completed",
  26. { files: ["src/a.ts"] },
  27. {
  28. metadata: {
  29. files: [
  30. {
  31. filePath: "src/a.ts",
  32. relativePath: "src/a.ts",
  33. type: "update",
  34. additions: 1,
  35. deletions: 1,
  36. before: "export const value = 1\n",
  37. after: "export const value = 2\n",
  38. },
  39. ],
  40. },
  41. },
  42. ),
  43. ]),
  44. ],
  45. settings: { editToolPartsExpanded: true },
  46. })
  47. await expect(page.locator(`[data-timeline-part-id="${id}"] [data-component="apply-patch-file-diff"]`)).toBeVisible()
  48. })