/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/desktop/src/renderer/html.test.ts
62 строки
2 KB
Dax
refactor(opencode): remove JSON storage migration (#30461)
03 июн 2026, 02:05
Не верифицирован
03 июн 2026, 02:05
ca2acc4
Код
Авторство
О чём код?
import { describe, expect, test } from "bun:test" import { join, dirname, resolve } from "node:path" import { existsSync } from "node:fs" import { fileURLToPath } from "node:url" const dir = dirname(fileURLToPath(import.meta.url)) const root = resolve(dir, "../..") const html = async (name: string) => Bun.file(join(dir, name)).text() /** * Packaged Electron windows load renderer HTML via the privileged `oc://` * protocol. Root-relative asset paths like `src="/foo.js"` would resolve from * the protocol origin root instead of relative to the current HTML entrypoint. * * All local resource references must use relative paths (`./`). */ describe("electron renderer html", () => { for (const name of ["index.html"]) { describe(name, () => { test("script src attributes use relative paths", async () => { const content = await html(name) const srcs = [...content.matchAll(/\bsrc=["']([^"']+)["']/g)].map((m) => m[1]) for (const src of srcs) { expect(src).not.toMatch(/^\/[^/]/) } }) test("link href attributes use relative paths", async () => { const content = await html(name) const hrefs = [...content.matchAll(/<link[^>]+href=["']([^"']+)["']/g)].map((m) => m[1]) for (const href of hrefs) { expect(href).not.toMatch(/^\/[^/]/) } }) test("no web manifest link (not applicable in Electron)", async () => { const content = await html(name) expect(content).not.toContain('rel="manifest"') }) }) } }) /** * Vite resolves `publicDir` relative to `root`, not the config file. * This test reads the actual values from electron.vite.config.ts to catch * regressions where the publicDir path no longer resolves correctly * after the renderer root is accounted for. */ describe("electron vite publicDir", () => { test("configured publicDir resolves to a directory with oc-theme-preload.js", async () => { const config = await Bun.file(join(root, "electron.vite.config.ts")).text() const pub = config.match(/publicDir:\s*["']([^"']+)["']/) const rendererRoot = config.match(/root:\s*["']([^"']+)["']/) expect(pub).not.toBeNull() expect(rendererRoot).not.toBeNull() const resolved = resolve(root, rendererRoot![1], pub![1]) expect(existsSync(resolved)).toBe(true) expect(existsSync(join(resolved, "oc-theme-preload.js"))).toBe(true) }) })