| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { expect, test } from "@playwright/test"
- import {
- assistantMessage,
- reasoningPart,
- setupTimeline,
- status,
- textPart,
- toolPart,
- userMessage,
- } from "../performance/timeline-stability/fixture"
- const profiles = [
- { name: "summaries off no reasoning", summaries: false, reasoning: "", other: false, thinking: true, body: false },
- {
- name: "summaries off reasoning heading",
- summaries: false,
- reasoning: "## Inspecting stability",
- other: false,
- thinking: true,
- body: false,
- },
- {
- name: "summaries off with visible tool",
- summaries: false,
- reasoning: "## Inspecting stability",
- other: true,
- thinking: true,
- body: false,
- },
- { name: "summaries on no content", summaries: true, reasoning: "", other: false, thinking: true, body: false },
- {
- name: "summaries on blank reasoning",
- summaries: true,
- reasoning: " ",
- other: false,
- thinking: true,
- body: false,
- },
- {
- name: "summaries on visible reasoning",
- summaries: true,
- reasoning: "## Inspecting stability",
- other: false,
- thinking: false,
- body: true,
- },
- {
- name: "summaries on visible tool no reasoning",
- summaries: true,
- reasoning: "",
- other: true,
- thinking: false,
- body: false,
- },
- ] as const
- for (const profile of profiles) {
- test(`projects busy reasoning profile ${profile.name}`, async ({ page }) => {
- const reasoningID = `prt_reasoning_matrix_${profiles.indexOf(profile)}`
- const parts = [
- ...(profile.reasoning ? [reasoningPart(reasoningID, profile.reasoning)] : []),
- ...(profile.other
- ? [toolPart(`prt_reasoning_tool_${profiles.indexOf(profile)}`, "skill", "running", { name: "inspect" })]
- : []),
- ]
- const timeline = await setupTimeline(page, {
- messages: [userMessage(), assistantMessage(parts, { completed: false })],
- settings: { showReasoningSummaries: profile.summaries },
- })
- await timeline.send(status("busy"), 150)
- await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(profile.thinking ? 1 : 0)
- await expect(page.locator(`[data-timeline-part-id="${reasoningID}"]`)).toHaveCount(profile.body ? 1 : 0)
- if (!profile.summaries && profile.reasoning.trim()) {
- await expect(page.getByText("Inspecting stability", { exact: true })).toBeVisible()
- }
- })
- }
- test("does not infer reasoning visibility from provider identity", async ({ page }) => {
- const timeline = await setupTimeline(page, {
- messages: [
- userMessage(),
- assistantMessage([textPart("prt_provider_text", "No reasoning payload")], { completed: false }),
- ],
- settings: { showReasoningSummaries: true },
- })
- await timeline.send(status("busy"), 150)
- await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0)
- await expect(page.locator('[data-timeline-part-id*="reasoning"]')).toHaveCount(0)
- await expect(page.locator('[data-timeline-part-id="prt_provider_text"]')).toBeVisible()
- })
|