Upload files to "qkf"

This commit is contained in:
2026-02-08 20:37:34 -06:00
parent aeae7b5828
commit 869d3508ab
5 changed files with 416 additions and 0 deletions

64
qkf/driverFactory.js Normal file
View File

@@ -0,0 +1,64 @@
// qkf/selenium/driverFactory.js
const { Builder } = require("selenium-webdriver");
function envBool(v, def = false) {
if (v == null) return def;
return String(v).toLowerCase() === "true" || String(v) === "1";
}
/**
* Driver factory:
* - Local: uses selenium-webdriver Builder().forBrowser()
* - Remote: if SELENIUM_REMOTE_URL is set, uses .usingServer(url)
*
* Env:
* - QKF_BROWSER=chrome|firefox|MicrosoftEdge
* - QKF_HEADLESS=true|false
* - SELENIUM_REMOTE_URL=http://localhost:4444/wd/hub (optional)
*/
async function createDriver() {
const browser = process.env.QKF_BROWSER || "chrome";
const headless = envBool(process.env.QKF_HEADLESS, false);
const remoteUrl = process.env.SELENIUM_REMOTE_URL || "";
const builder = new Builder().forBrowser(browser);
if (remoteUrl) builder.usingServer(remoteUrl);
// Headless options (best-effort; safe if missing)
try {
if (browser.toLowerCase() === "chrome") {
const chrome = require("selenium-webdriver/chrome");
const opts = new chrome.Options();
if (headless) opts.addArguments("--headless=new");
opts.addArguments("--window-size=1440,900");
builder.setChromeOptions(opts);
} else if (browser.toLowerCase() === "firefox") {
const firefox = require("selenium-webdriver/firefox");
const opts = new firefox.Options();
if (headless) opts.addArguments("-headless");
builder.setFirefoxOptions(opts);
} else if (browser.toLowerCase().includes("edge")) {
const edge = require("selenium-webdriver/edge");
const opts = new edge.Options();
if (headless) opts.addArguments("--headless=new");
opts.addArguments("--window-size=1440,900");
builder.setEdgeOptions(opts);
}
} catch {
// If browser-specific options modules aren't available, continue without them.
}
const driver = await builder.build();
// Default timeouts (adjust as needed)
await driver.manage().setTimeouts({
implicit: 0,
pageLoad: 60000,
script: 30000
});
return driver;
}
module.exports = { createDriver };