diff options
| author | Filip <[email protected]> | 2026-01-30 19:04:02 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-30 18:04:02 +0000 |
| commit | f48e2e56c95a7b96648176f1f783929dc4f33b37 (patch) | |
| tree | 106a32d8955e3ec5f10b80d1d6dbbae01d22626a /packages/app/e2e/settings | |
| parent | fe66ca163cbb9d689cf296c4c2f7a63414c1cf45 (diff) | |
| download | opencode-f48e2e56c95a7b96648176f1f783929dc4f33b37.tar.gz opencode-f48e2e56c95a7b96648176f1f783929dc4f33b37.zip | |
test(app): change language test (#11295)
Diffstat (limited to 'packages/app/e2e/settings')
| -rw-r--r-- | packages/app/e2e/settings/settings-language.spec.ts | 39 | ||||
| -rw-r--r-- | packages/app/e2e/settings/settings-providers.spec.ts | 56 | ||||
| -rw-r--r-- | packages/app/e2e/settings/settings.spec.ts | 44 |
3 files changed, 139 insertions, 0 deletions
diff --git a/packages/app/e2e/settings/settings-language.spec.ts b/packages/app/e2e/settings/settings-language.spec.ts new file mode 100644 index 000000000..b2ef70bf8 --- /dev/null +++ b/packages/app/e2e/settings/settings-language.spec.ts @@ -0,0 +1,39 @@ +import { test, expect } from "../fixtures" +import { modKey, settingsLanguageSelectSelector } from "../utils" + +test("smoke changing language updates settings labels", async ({ page, gotoSession }) => { + await page.addInitScript(() => { + localStorage.setItem("opencode.global.dat:language", JSON.stringify({ locale: "en" })) + }) + + await gotoSession() + + const dialog = page.getByRole("dialog") + + await page.keyboard.press(`${modKey}+Comma`).catch(() => undefined) + + const opened = await dialog + .waitFor({ state: "visible", timeout: 3000 }) + .then(() => true) + .catch(() => false) + + if (!opened) { + await page.getByRole("button", { name: "Settings" }).first().click() + await expect(dialog).toBeVisible() + } + + const heading = dialog.getByRole("heading", { level: 2 }) + await expect(heading).toHaveText("General") + + const select = dialog.locator(settingsLanguageSelectSelector) + await expect(select).toBeVisible() + await select.locator('[data-slot="select-select-trigger"]').click() + + await page.locator('[data-slot="select-select-item"]').filter({ hasText: "Deutsch" }).click() + + await expect(heading).toHaveText("Allgemein") + + await select.locator('[data-slot="select-select-trigger"]').click() + await page.locator('[data-slot="select-select-item"]').filter({ hasText: "English" }).click() + await expect(heading).toHaveText("General") +}) diff --git a/packages/app/e2e/settings/settings-providers.spec.ts b/packages/app/e2e/settings/settings-providers.spec.ts new file mode 100644 index 000000000..5b9325c2a --- /dev/null +++ b/packages/app/e2e/settings/settings-providers.spec.ts @@ -0,0 +1,56 @@ +import { test, expect } from "../fixtures" +import { modKey, promptSelector } from "../utils" + +test("smoke providers settings opens provider selector", async ({ page, gotoSession }) => { + await gotoSession() + + const dialog = page.getByRole("dialog") + + await page.keyboard.press(`${modKey}+Comma`).catch(() => undefined) + + const opened = await dialog + .waitFor({ state: "visible", timeout: 3000 }) + .then(() => true) + .catch(() => false) + + if (!opened) { + await page.getByRole("button", { name: "Settings" }).first().click() + await expect(dialog).toBeVisible() + } + + await dialog.getByRole("tab", { name: "Providers" }).click() + await expect(dialog.getByText("Connected providers", { exact: true })).toBeVisible() + await expect(dialog.getByText("Popular providers", { exact: true })).toBeVisible() + + await dialog.getByRole("button", { name: "Show more providers" }).click() + + const providerDialog = page.getByRole("dialog").filter({ has: page.getByPlaceholder("Search providers") }) + + await expect(providerDialog).toBeVisible() + await expect(providerDialog.getByPlaceholder("Search providers")).toBeVisible() + await expect(providerDialog.locator('[data-slot="list-item"]').first()).toBeVisible() + + await page.keyboard.press("Escape") + await expect(providerDialog).toHaveCount(0) + await expect(page.locator(promptSelector)).toBeVisible() + + const stillOpen = await dialog.isVisible().catch(() => false) + if (!stillOpen) return + + await page.keyboard.press("Escape") + const closed = await dialog + .waitFor({ state: "detached", timeout: 1500 }) + .then(() => true) + .catch(() => false) + if (closed) return + + await page.keyboard.press("Escape") + const closedSecond = await dialog + .waitFor({ state: "detached", timeout: 1500 }) + .then(() => true) + .catch(() => false) + if (closedSecond) return + + await page.locator('[data-component="dialog-overlay"]').click({ position: { x: 5, y: 5 } }) + await expect(dialog).toHaveCount(0) +}) diff --git a/packages/app/e2e/settings/settings.spec.ts b/packages/app/e2e/settings/settings.spec.ts new file mode 100644 index 000000000..293a4ba9a --- /dev/null +++ b/packages/app/e2e/settings/settings.spec.ts @@ -0,0 +1,44 @@ +import { test, expect } from "../fixtures" +import { modKey } from "../utils" + +test("smoke settings dialog opens, switches tabs, closes", async ({ page, gotoSession }) => { + await gotoSession() + + const dialog = page.getByRole("dialog") + + await page.keyboard.press(`${modKey}+Comma`).catch(() => undefined) + + const opened = await dialog + .waitFor({ state: "visible", timeout: 3000 }) + .then(() => true) + .catch(() => false) + + if (!opened) { + await page.getByRole("button", { name: "Settings" }).first().click() + await expect(dialog).toBeVisible() + } + + await dialog.getByRole("tab", { name: "Shortcuts" }).click() + await expect(dialog.getByRole("button", { name: "Reset to defaults" })).toBeVisible() + await expect(dialog.getByPlaceholder("Search shortcuts")).toBeVisible() + + await page.keyboard.press("Escape") + + const closed = await dialog + .waitFor({ state: "detached", timeout: 1500 }) + .then(() => true) + .catch(() => false) + + if (closed) return + + await page.keyboard.press("Escape") + const closedSecond = await dialog + .waitFor({ state: "detached", timeout: 1500 }) + .then(() => true) + .catch(() => false) + + if (closedSecond) return + + await page.locator('[data-component="dialog-overlay"]').click({ position: { x: 5, y: 5 } }) + await expect(dialog).toHaveCount(0) +}) |
