90 lines
2.6 KiB
TypeScript
90 lines
2.6 KiB
TypeScript
import os from "node:os";
|
|
import path from "node:path";
|
|
import { spawn, type ChildProcess } from "node:child_process";
|
|
import fs from "node:fs";
|
|
|
|
let tauriDriver: ChildProcess;
|
|
|
|
export const config: WebdriverIO.Config = {
|
|
specs: ["./e2e/specs/**/*.e2e.ts"],
|
|
exclude: [],
|
|
|
|
// Run tests sequentially to avoid session conflicts
|
|
maxInstances: 1,
|
|
|
|
port: 4444, // tauri-driver default port
|
|
hostname: "localhost",
|
|
|
|
capabilities: [
|
|
{
|
|
maxInstances: 1,
|
|
"tauri:options": {
|
|
application: getTauriApplicationPath(),
|
|
// Use a separate test data directory
|
|
env: {
|
|
JELLYTAU_DATA_DIR: path.join(os.tmpdir(), "jellytau-test-data"),
|
|
},
|
|
},
|
|
} as WebdriverIO.Capabilities,
|
|
],
|
|
|
|
logLevel: "warn", // Reduce log noise
|
|
bail: 0,
|
|
waitforTimeout: 10000,
|
|
connectionRetryTimeout: 120000,
|
|
connectionRetryCount: 3,
|
|
|
|
framework: "mocha",
|
|
reporters: ["spec"],
|
|
|
|
mochaOpts: {
|
|
ui: "bdd",
|
|
timeout: 60000,
|
|
},
|
|
|
|
// Start tauri-driver before session
|
|
onPrepare: async function () {
|
|
tauriDriver = spawn(
|
|
path.resolve(os.homedir(), ".cargo", "bin", "tauri-driver"),
|
|
[],
|
|
{ stdio: [null, process.stdout, process.stderr] }
|
|
);
|
|
|
|
return new Promise((resolve) => {
|
|
setTimeout(resolve, 1000); // Give tauri-driver time to start
|
|
});
|
|
},
|
|
|
|
// Clean up tauri-driver after session
|
|
onComplete: async function () {
|
|
tauriDriver.kill();
|
|
},
|
|
};
|
|
|
|
function getTauriApplicationPath(): string {
|
|
const platform = process.platform;
|
|
const cwd = process.cwd();
|
|
|
|
// Check for release build first, fallback to debug
|
|
if (platform === "win32") {
|
|
const releasePath = path.join(cwd, "src-tauri/target/release/jellytau.exe");
|
|
const debugPath = path.join(cwd, "src-tauri/target/debug/jellytau.exe");
|
|
if (fs.existsSync(releasePath)) return releasePath;
|
|
if (fs.existsSync(debugPath)) return debugPath;
|
|
return releasePath; // Return default if neither exists
|
|
} else if (platform === "darwin") {
|
|
const releasePath = path.join(cwd, "src-tauri/target/release/bundle/macos/jellytau.app");
|
|
const debugPath = path.join(cwd, "src-tauri/target/debug/bundle/macos/jellytau.app");
|
|
if (fs.existsSync(releasePath)) return releasePath;
|
|
if (fs.existsSync(debugPath)) return debugPath;
|
|
return releasePath;
|
|
} else {
|
|
// Linux
|
|
const releasePath = path.join(cwd, "src-tauri/target/release/jellytau");
|
|
const debugPath = path.join(cwd, "src-tauri/target/debug/jellytau");
|
|
if (fs.existsSync(releasePath)) return releasePath;
|
|
if (fs.existsSync(debugPath)) return debugPath;
|
|
return debugPath; // Return debug path as default for Linux
|
|
}
|
|
}
|