/**
 * @file WebdriverIO configuration file for **integration tests**.
 *
 * @see https://webdriver.io/docs/configurationfile.html
 */
import { browser } from "@wdio/globals";
import { addCommands } from "./commands.mjs";
/// 
/// 
const headless = !!process.env.CI;
const lemmeSee = !!process.env.WDIO_LEMME_SEE;
/**
 * @type {WebdriverIO.Capabilities[]}
 */
const capabilities = [];
if (!process.env.WDIO_SKIP_CHROME) {
    /**
     * @satisfies {WebdriverIO.Capabilities}
     */
    const chromeBrowserConfig = {
        "browserName": "chrome",
        // "wdio:chromedriverOptions": {
        //     binary: "./node_modules/.bin/chromedriver",
        // },
        "goog:chromeOptions": {
            args: ["disable-infobars", "window-size=1280,800"],
        },
    };
    if (headless) {
        chromeBrowserConfig["goog:chromeOptions"].args.push(
            "headless",
            "no-sandbox",
            "disable-gpu",
            "disable-setuid-sandbox",
            "disable-dev-shm-usage",
        );
    }
    capabilities.push(chromeBrowserConfig);
}
if (process.env.WDIO_TEST_SAFARI) {
    capabilities.push({
        browserName: "safari",
    });
}
if (process.env.WDIO_TEST_FIREFOX) {
    capabilities.push({
        browserName: "firefox",
    });
}
/**
 * @satisfies {WebdriverIO.Config}
 */
export const config = {
    runner: "local",
    tsConfigPath: "./tsconfig.json",
    specs: [
        // "./tests/specs/**/*.ts"
        "./tests/specs/new-application-by-wizard.ts",
    ],
    exclude: [],
    maxInstances: 1,
    capabilities,
    logLevel: "warn",
    baseUrl: "http://localhost",
    waitforTimeout: 10000,
    connectionRetryTimeout: 120000,
    connectionRetryCount: 3,
    framework: "mocha",
    reporters: ["spec"],
    mochaOpts: {
        ui: "bdd",
        timeout: 60000,
    },
    /**
     * @param {WebdriverIO.Capabilities} capabilities
     * @param {string[]} specs
     * @param {WebdriverIO.Browser} browser
     * @returns {void}
     */
    before(capabilities, specs, browser) {
        addCommands(browser);
    },
    afterTest() {
        if (lemmeSee) return browser.pause(500);
    },
};