First working POC
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user