Buckets:
| import { expect, test, type Page } from "@playwright/test" | |
| import { base64Encode } from "@opencode-ai/core/util/encode" | |
| import { mockOpenCodeServer } from "../utils/mock-server" | |
| import { expectAppVisible } from "../utils/waits" | |
| const directory = "C:/OpenCode/PromptThinkingLevelRegression" | |
| const projectID = "proj_prompt_thinking_level_regression" | |
| const sessionID = "ses_prompt_thinking_level_regression" | |
| test("shows the V2 thinking level control while relevant", async ({ page }) => { | |
| await mockOpenCodeServer(page, { | |
| directory, | |
| project: { | |
| id: projectID, | |
| worktree: directory, | |
| vcs: "git", | |
| name: "prompt-thinking-level-regression", | |
| time: { created: 1700000000000, updated: 1700000000000 }, | |
| sandboxes: [], | |
| }, | |
| provider: { | |
| all: [ | |
| { | |
| id: "opencode", | |
| name: "OpenCode", | |
| models: { | |
| "thinking-model": { | |
| id: "thinking-model", | |
| name: "Thinking Model", | |
| limit: { context: 200_000 }, | |
| variants: { high: {} }, | |
| }, | |
| }, | |
| }, | |
| ], | |
| connected: ["opencode"], | |
| default: { providerID: "opencode", modelID: "thinking-model" }, | |
| }, | |
| sessions: [ | |
| { | |
| id: sessionID, | |
| slug: "prompt-thinking-level-regression", | |
| projectID, | |
| directory, | |
| title: "Prompt thinking level regression", | |
| version: "dev", | |
| time: { created: 1700000000000, updated: 1700000000000 }, | |
| }, | |
| ], | |
| pageMessages: () => ({ items: [] }), | |
| }) | |
| await page.addInitScript(() => { | |
| localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) | |
| }) | |
| await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) | |
| const composer = page.locator('[data-component="session-composer"]') | |
| const input = composer.locator('[data-component="prompt-input"]') | |
| const control = composer.locator('[data-component="prompt-variant-control"]') | |
| await expectAppVisible(composer) | |
| await idleComposer(page) | |
| await expect(control).toBeHidden() | |
| await composer.hover() | |
| await expect(control).toBeVisible() | |
| await control.locator('[data-action="prompt-model-variant"]').click() | |
| const high = page.getByRole("option", { name: "high" }) | |
| await expect(high).toBeVisible() | |
| await page.mouse.move(0, 0) | |
| await expect(control).toBeVisible() | |
| await expect(high).toBeVisible() | |
| await high.click() | |
| await idleComposer(page) | |
| await input.focus() | |
| await expect(control).toBeVisible() | |
| await idleComposer(page) | |
| await expect(control).toBeVisible() | |
| }) | |
| async function idleComposer(page: Page) { | |
| await page.mouse.move(0, 0) | |
| await page.evaluate(() => (document.activeElement as HTMLElement | null)?.blur()) | |
| } | |
Xet Storage Details
- Size:
- 2.75 kB
- Xet hash:
- 88496a75abc4640b1836029356a39560ba8d55fec4a24ac5129ba30fe889c4e8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.