Files
openwork/apps/desktop/electron/electron-builder-config.test.mjs

75 lines
3.1 KiB
JavaScript

import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import { describe, it } from "node:test";
import path from "node:path";
import { fileURLToPath } from "node:url";
import YAML from "yaml";
const dirname = path.dirname(fileURLToPath(import.meta.url));
async function readConfig(name) {
return YAML.parse(await readFile(path.resolve(dirname, "..", name), "utf8"));
}
describe("Electron distribution configs", () => {
it("uses a stable Linux desktop identity and ships integration icons", async () => {
const packageMetadata = JSON.parse(
await readFile(path.resolve(dirname, "..", "package.json"), "utf8"),
);
const config = await readConfig("electron-builder.base.yml");
assert.equal(packageMetadata.desktopName, "com.differentai.openwork");
assert.equal(config.npmRebuild, false);
assert.deepEqual(config.files.at(-1), {
from: ".electron-runtime/node_modules",
to: "node_modules",
});
assert.equal(config.linux.syncDesktopName, true);
assert.equal(config.linux.icon, "resources/icons/linux");
assert.deepEqual(config.linux.extraResources[0], {
from: "resources/icons/linux",
to: "icons/linux",
filter: ["*.png"],
});
});
it("keeps the public artifact and protocol unchanged", async () => {
const config = await readConfig("electron-builder.yml");
assert.equal(config.extends, "./electron-builder.base.yml");
assert.equal(config.appId, "com.differentai.openwork");
assert.equal(config.productName, "OpenWork");
assert.equal(config.protocols[0].schemes[0], "openwork");
assert.equal(config.artifactName, "openwork-${os}-${arch}-${version}.${ext}");
});
it("defines an enterprise flavor with the standard app identity and release provider", async () => {
const config = await readConfig("electron-builder.enterprise.yml");
assert.equal(config.extends, "./electron-builder.base.yml");
assert.equal(config.appId, "com.differentai.openwork");
assert.equal(config.productName, "OpenWork Enterprise");
assert.equal(config.extraMetadata.openworkDistribution, "enterprise");
assert.equal(config.protocols[0].schemes[0], "openwork");
assert.equal(config.publish[0].provider, "github");
assert.equal(config.publish[0].owner, "different-ai");
assert.equal(config.publish[0].repo, "openwork");
assert.equal(config.publish[0].channel, "enterprise");
assert.equal(
config.artifactName,
"openwork-enterprise-${os}-${arch}-${version}.${ext}",
);
});
it("defines a Cloud flavor with its own artifacts and updater channel", async () => {
const config = await readConfig("electron-builder.cloud.yml");
assert.equal(config.extends, "./electron-builder.base.yml");
assert.equal(config.appId, "com.differentai.openwork");
assert.equal(config.productName, "OpenWork Cloud");
assert.equal(config.extraMetadata.openworkDistribution, "cloud");
assert.equal(config.protocols[0].schemes[0], "openwork");
assert.equal(config.publish[0].channel, "cloud");
assert.equal(
config.artifactName,
"openwork-cloud-${os}-${arch}-${version}.${ext}",
);
});
});