prompt-input-v2-command-draft.spec.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { expect, test } from "@playwright/test"
  2. import { base64Encode } from "@opencode-ai/core/util/encode"
  3. import { mockOpenCodeServer } from "../utils/mock-server"
  4. import { expectAppVisible } from "../utils/waits"
  5. const directory = "C:/OpenCode/PromptInputV2Editing"
  6. const projectID = "proj_prompt_input_v2_editing"
  7. const sessionID = "ses_prompt_input_v2_editing"
  8. test("preserves the draft when a populated command menu triggers a built-in", async ({ page }) => {
  9. await mockOpenCodeServer(page, {
  10. directory,
  11. project: {
  12. id: projectID,
  13. worktree: directory,
  14. vcs: "git",
  15. name: "prompt-input-v2-editing",
  16. time: { created: 1700000000000, updated: 1700000000000 },
  17. sandboxes: [],
  18. },
  19. provider: { all: [], connected: [], default: {} },
  20. sessions: [
  21. {
  22. id: sessionID,
  23. slug: "prompt-input-v2-editing",
  24. projectID,
  25. directory,
  26. title: "Prompt input V2 editing",
  27. version: "dev",
  28. time: { created: 1700000000000, updated: 1700000000000 },
  29. },
  30. ],
  31. pageMessages: () => ({ items: [] }),
  32. })
  33. await page.addInitScript(() => {
  34. localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
  35. })
  36. await page.goto(`/${base64Encode(directory)}/session/${sessionID}`)
  37. const composer = page.locator('[data-component="prompt-input-v2"]')
  38. const input = composer.locator('[data-component="prompt-input"]')
  39. await expectAppVisible(composer)
  40. await input.fill("keep me")
  41. await composer.getByRole("button", { name: "Add images and files" }).click()
  42. await page.getByRole("menuitem", { name: "Commands" }).click()
  43. await page.locator('[data-suggestion-id="model.choose"]').click()
  44. await expect(input).toHaveText("keep me")
  45. })