mirror of
https://github.com/element-hq/element-desktop
synced 2025-03-26 10:43:34 +01:00
Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
4f475ddaeb
commit
8c51bed2d0
@ -55,4 +55,14 @@ test.describe("App launch", () => {
|
|||||||
}),
|
}),
|
||||||
).resolves.not.toBeNull();
|
).resolves.not.toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test.describe("--no-update", () => {
|
||||||
|
test.use({
|
||||||
|
extraArgs: ["--no-update"],
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should respect option", async ({ page, stdout }) => {
|
||||||
|
expect(stdout.data.toString()).toContain("Auto update disabled via command line flag");
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -11,12 +11,37 @@ import fs from "node:fs/promises";
|
|||||||
import path, { dirname } from "node:path";
|
import path, { dirname } from "node:path";
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from "node:url";
|
||||||
|
import { PassThrough } from "node:stream";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A PassThrough stream that captures all data written to it.
|
||||||
|
*/
|
||||||
|
class CapturedPassThrough extends PassThrough {
|
||||||
|
private _chunks = [];
|
||||||
|
|
||||||
|
public constructor() {
|
||||||
|
super();
|
||||||
|
super.on("data", this.onData);
|
||||||
|
}
|
||||||
|
|
||||||
|
private onData = (chunk): void => {
|
||||||
|
this._chunks.push(chunk);
|
||||||
|
};
|
||||||
|
|
||||||
|
public get data(): Buffer {
|
||||||
|
return Buffer.concat(this._chunks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
interface Fixtures {
|
interface Fixtures {
|
||||||
app: ElectronApplication;
|
app: ElectronApplication;
|
||||||
tmpDir: string;
|
tmpDir: string;
|
||||||
extraEnv: Record<string, string>;
|
extraEnv: Record<string, string>;
|
||||||
extraArgs: string[];
|
extraArgs: string[];
|
||||||
|
|
||||||
|
// Utilities to capture stdout and stderr for tests to make assertions against
|
||||||
|
stdout: CapturedPassThrough;
|
||||||
|
stderr: CapturedPassThrough;
|
||||||
}
|
}
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||||
@ -24,6 +49,16 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|||||||
export const test = base.extend<Fixtures>({
|
export const test = base.extend<Fixtures>({
|
||||||
extraEnv: {},
|
extraEnv: {},
|
||||||
extraArgs: [],
|
extraArgs: [],
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-empty-pattern
|
||||||
|
stdout: async ({}, use) => {
|
||||||
|
await use(new CapturedPassThrough());
|
||||||
|
},
|
||||||
|
// eslint-disable-next-line no-empty-pattern
|
||||||
|
stderr: async ({}, use) => {
|
||||||
|
await use(new CapturedPassThrough());
|
||||||
|
},
|
||||||
|
|
||||||
// eslint-disable-next-line no-empty-pattern
|
// eslint-disable-next-line no-empty-pattern
|
||||||
tmpDir: async ({}, use) => {
|
tmpDir: async ({}, use) => {
|
||||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "element-desktop-tests-"));
|
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "element-desktop-tests-"));
|
||||||
@ -31,7 +66,7 @@ export const test = base.extend<Fixtures>({
|
|||||||
await use(tmpDir);
|
await use(tmpDir);
|
||||||
await fs.rm(tmpDir, { recursive: true });
|
await fs.rm(tmpDir, { recursive: true });
|
||||||
},
|
},
|
||||||
app: async ({ tmpDir, extraEnv, extraArgs }, use) => {
|
app: async ({ tmpDir, extraEnv, extraArgs, stdout, stderr }, use) => {
|
||||||
const args = ["--profile-dir", tmpDir];
|
const args = ["--profile-dir", tmpDir];
|
||||||
|
|
||||||
const executablePath = process.env["ELEMENT_DESKTOP_EXECUTABLE"];
|
const executablePath = process.env["ELEMENT_DESKTOP_EXECUTABLE"];
|
||||||
@ -49,8 +84,8 @@ export const test = base.extend<Fixtures>({
|
|||||||
args: [...args, ...extraArgs],
|
args: [...args, ...extraArgs],
|
||||||
});
|
});
|
||||||
|
|
||||||
app.process().stdout.pipe(process.stdout);
|
app.process().stdout.pipe(stdout).pipe(process.stdout);
|
||||||
app.process().stderr.pipe(process.stderr);
|
app.process().stderr.pipe(stderr).pipe(process.stderr);
|
||||||
|
|
||||||
await app.firstWindow();
|
await app.firstWindow();
|
||||||
|
|
||||||
|
@ -436,6 +436,7 @@ app.on("ready", async () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Minimist parses `--no-`-prefixed arguments as booleans with value `false` rather than verbatim.
|
||||||
if (argv["update"] === false) {
|
if (argv["update"] === false) {
|
||||||
console.log("Auto update disabled via command line flag");
|
console.log("Auto update disabled via command line flag");
|
||||||
} else if (global.vectorConfig["update_base_url"]) {
|
} else if (global.vectorConfig["update_base_url"]) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user