refactor(desktop): consolidate desktop-electron into desktop package (#25822)
This commit is contained in:
parent
6f7d63e9ce
commit
b4147c8d08
441 changed files with 113 additions and 13439 deletions
62
packages/desktop/src/renderer/html.test.ts
Normal file
62
packages/desktop/src/renderer/html.test.ts
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
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", "loading.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)
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue