maybe?
Some checks failed
Playwright Tests / test (push) Failing after 2m25s

This commit is contained in:
parent 0751d1da98
commit 7a1ab0ceaf
Signed by: tablet
GPG Key ID: 924A5F6AF051E87C

@ -5,7 +5,7 @@ import path from "path";
import { ObsidianTestFixtures } from "./fixtures.js"; import { ObsidianTestFixtures } from "./fixtures.js";
import { existsSync } from "fs"; import { existsSync } from "fs";
import { getApp, waitForIndexingComplete } from "./util.js"; import { getApp, waitForIndexingComplete } from "./util.js";
import {execSync} from "child_process"; import { execSync } from "child_process";
import { Page } from "playwright"; import { Page } from "playwright";
export interface ObsidianTestingConfig { export interface ObsidianTestingConfig {
@ -24,59 +24,68 @@ export function getExe(): string {
if (process.platform == "darwin") { if (process.platform == "darwin") {
throw new Error("use a non-toy operating system, dumbass"); throw new Error("use a non-toy operating system, dumbass");
} }
const possibleDirs = ["/opt/Obsidian", "/usr/lib/Obsidian", "/opt/obsidian", "/usr/lib/obsidian", "/var/lib/flatpak/app/md.obsidian.Obsidian/current/active/files", "/snap/obsidian/current"]; const possibleDirs = [
for(let i = 0; i < possibleDirs.length; i++) { "/opt/Obsidian",
if(existsSync(possibleDirs[i])) { "/usr/lib/Obsidian",
"/opt/obsidian",
"/usr/lib/obsidian",
"/var/lib/flatpak/app/md.obsidian.Obsidian/current/active/files",
"/snap/obsidian/current",
];
for (let i = 0; i < possibleDirs.length; i++) {
if (existsSync(possibleDirs[i])) {
console.log(execSync(`ls -l ${possibleDirs[i]}`).toString()); console.log(execSync(`ls -l ${possibleDirs[i]}`).toString());
return path.join(possibleDirs[i], "resources", "app.asar"); return path.join(possibleDirs[i], "resources", "app.asar");
} }
} }
return "" return "";
} }
async function selectNewVault(page: Page, vaultPath: string) { async function selectNewVault(page: Page, vaultPath: string) {
try { try {
let btn = await page.locator("button", {hasText: "Open"}); let btn = await page.locator("button", { hasText: "Open" });
const promise = page.waitForEvent("filechooser"); const promise = page.waitForEvent("filechooser");
await btn.click(); await btn.click();
const chooser = await promise; const chooser = await promise;
await chooser.setFiles(vaultPath); await chooser.setFiles(vaultPath);
} catch(e) { } catch (e) {
console.debug("congratulations, you don't have to choose a vault manually!") console.debug(
"congratulations, you don't have to choose a vault manually!"
);
} }
} }
const obsidianTestFixtures: Fixtures<ObsidianTestFixtures> = { const obsidianTestFixtures: Fixtures<ObsidianTestFixtures> = {
electronApp: [ electronApp: [
async ({ obsidian: { vault } }, run) => { async ({}, run) => {
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "true"; process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "true";
console.log("asar located at:", getExe()) console.log("asar located at:", getExe());
const electronApp = await electron.launch({ const electronApp = await electron.launch({
timeout: 60000, timeout: 60000,
args: [ args: [getExe()].filter((a) => !!a) as string[],
getExe(),
!!vault && `obsidian://open?path=${encodeURIComponent(vault)}`,
].filter((a) => !!a) as string[],
}); });
electronApp.on("console", async (msg) => { electronApp.on("console", async (msg) => {
console.log( console.log(
...(await Promise.all(msg.args().map((a) => a.jsonValue()))) ...(await Promise.all(msg.args().map((a) => a.jsonValue())))
); );
}); });
await run(electronApp); await run(electronApp);
await electronApp.close(); await electronApp.close();
}, },
{ timeout: 60000 }, { timeout: 60000 },
], ],
page: [ page: [
async ({ electronApp, obsidian: {vault} }, run) => { async ({ electronApp, obsidian: { vault } }, run) => {
const windows = electronApp.windows(); const windows = electronApp.windows();
console.log("windows", windows); console.log("windows", windows);
const page = windows.last()!; let page = windows.last()!;
await page.waitForEvent("load") await page.waitForEvent("load");
await page.waitForLoadState("domcontentloaded"); await page.waitForLoadState("domcontentloaded");
await selectNewVault(page, vault!); await selectNewVault(page, vault!);
page = electronApp.windows().last()!;
await page.waitForEvent("load");
await page.waitForLoadState("domcontentloaded");
await waitForIndexingComplete(await getApp(page)); await waitForIndexingComplete(await getApp(page));
page.on("console", async (msg) => { page.on("console", async (msg) => {
console.log( console.log(