tia
Version:
Time is All (logs driven test engine with ExtJs support)
323 lines (273 loc) • 8.05 kB
text/typescript
import * as path from 'path';
import { Logs } from 'selenium-webdriver';
import * as loggerCfg from './loggers/logger-cfg';
import * as cLogger from './loggers/console-logger';
import * as logger from './loggers/logger';
import * as tracer from './tracer';
import * as fileUtils from '../utils/file-utils';
import * as textUtils from '../utils/text-utils';
import * as testInfo from './test-info';
import * as diffUtils from '../utils/diff-utils';
import * as mailUtils from '../utils/mail-utils';
import * as remoteDriverUtils from '../utils/remote-driver-utils';
import wrap from './wrap';
import * as engineConsts from '../config/engine-constants';
import * as suiteConfigDefault from '../config/default-suite-config';
import * as globalConfigDefault from '../config/default-global-config';
import * as dirConfigDefault from '../config/default-dir-config';
import * as l from '../api/log/log';
import * as t from '../api/test';
import * as lL from '../api/low-level';
import * as hL from '../api/high-level';
import * as a from '../api/assertions';
import * as timeUtils from '../utils/time-utils';
import * as nodeUtils from '../utils/nodejs-utils';
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore
import commonConsts = require('../common-utils/common-constants');
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore
import commonMiscUtils = require('../common-utils/common-misc-utils');
import { ExtJsCmpAPI } from '../api/extjs/new-api/components/extjs-components';
import UtilsAPI from '../api/utils/utils-index';
import winstonMock from '../api/log/winston-mock';
import rStreamToLog from '../api/log/r-stream-to-log';
/**
* **[[GlobalTiaObjects|gT]].logUtils**
*/
export class LogUtils {
static winstonMock = winstonMock;
static rStreamToLog = rStreamToLog;
}
import { ExtJsAPI } from '../api/extjs/extjs-index';
// Chromedriver needs nodejs.
process.env.PATH = process.env.PATH + path.delimiter + path.dirname(process.execPath);
process.env.SELENIUM_PROMISE_MANAGER = '0';
import { path as chromeDriverPath } from 'chromedriver';
process.env.PATH = chromeDriverPath + path.delimiter + process.env.PATH;
import * as wdModule from 'selenium-webdriver';
import * as chrome from 'selenium-webdriver/chrome';
import { Executor, HttpClient as Client } from 'selenium-webdriver/http';
import * as firefox from 'selenium-webdriver/firefox';
import * as input from 'selenium-webdriver/lib/input';
/**
* **[[GlobalTiaObjects|gT]].sOrig**
*/
export class OriginalSeleniumAPI {
static wdModule = wdModule;
static by = wdModule.By;
static key = wdModule.Key;
static until = wdModule.until;
static input = input;
static driverLogType = wdModule.logging.Type.DRIVER;
static browserLogType = wdModule.logging.Type.BROWSER;
static chrome = chrome;
static firefox = firefox;
static Executor = Executor;
static Client = Client;
static logs: Logs;
/**
* Assigned at driver initialization.
*/
static driver: wdModule.WebDriver;
}
/**
* **[[GlobalTiaObjects|gT]].cLParams**
*/
export class CommandLineParams {
static rootDir: string;
static extLog?: string;
static difsToSlog: boolean;
static slogDifToConsole: boolean;
static dir: string;
static emailCfgPath: string;
static slogSubj?: string[];
static testsParentDir: string;
static traceLevel: number;
static minPathSearchIndex: number;
static defHost: string;
static ejExplore: boolean;
static keepBrowserAtError: boolean;
static suite: string;
static errToConsole: boolean;
static logToConsole: boolean;
static pattern: string;
static new: boolean;
static ignoreSkipFlag: boolean;
static selActsDelay: number;
static stopRemoteDriver: boolean;
static useRemoteDriver: boolean;
static forceLogActions: boolean;
static shareBrowser: boolean;
static clearProfiles: boolean;
static browser: string;
static headless: boolean;
static debugLocale: boolean;
static hangTimeout: number;
static enableEmail: boolean;
static xvfb: boolean;
static tooLongTime = engineConsts.tooLongTime;
static showEmptySuites: boolean;
static printProcInfo: boolean;
static stackToLog: boolean;
static browserLogLevel: number;
static driverLogLevel: number;
}
/**
* **[[GlobalTiaInnerObjects|gIn]].suite**
*/
export interface Suite {
root: string;
browserProfilesPath: string;
log: string;
etLog: string;
configPath: string;
changedEDiffs: number;
}
/**
* **gIn**
*/
export class GlobalTiaInnerObjects {
static suite: Suite;
static loggerCfg = loggerCfg;
static cLogger = cLogger;
static logger = logger;
static tracer = tracer;
static fileUtils = fileUtils;
static textUtils = textUtils;
static tU = textUtils;
static tInfo = testInfo;
static diffUtils = diffUtils;
static mailUtils = mailUtils;
static remoteDriverUtils = remoteDriverUtils;
static wrap = wrap;
static tracePrefix = '';
static chromeDriverPath = chromeDriverPath;
static dirArr: string[];
static errRecursionCount: number;
static cancelThisTest: boolean;
static suiteErrRecursionCount: number;
static cancelSuite: boolean;
static sharedBrowserInitiated: boolean;
static screenShotScheduled: boolean;
static brHelpersInitiated: boolean;
}
import * as driver from '../api/selenium/sel-driver';
import * as wait from '../api/selenium/sel-waits';
import * as uA from '../api/selenium/sel-user-actions';
import * as browser from '../api/selenium/sel-browser';
import { idToIdForLogObj } from '../api/selenium/sel-misc';
/**
* **[[GlobalTiaObjects|gT]].s**
*/
export class SeleniumAPI {
static driver = driver;
static wait = wait;
static uA = uA;
static browser = browser;
static idToIdForLogObj = idToIdForLogObj;
}
/**
* **gT**
*/
export class GlobalTiaObjects {
/**
* Tia engine constants.
*/
static engineConsts = engineConsts;
static suiteConfigDefault = suiteConfigDefault;
static globalConfigDefault = globalConfigDefault;
static dirConfigDefault = dirConfigDefault;
/**
* Selenium API.
*/
static s = SeleniumAPI;
/**
* Utilities for logging.
*/
static l = l;
/**
* Misc. test utils.
*/
static t = t;
/**
* Low level API for tests. It can be used for helpers writing.
*/
static lL = lL;
/**
* High level API for tests. It can be used for helpers writing.
*/
static hL = hL;
/**
* Assertions
*/
static a = a;
/**
* Utilities.
*/
static u = UtilsAPI;
/**
* ExtJs common API
*/
static e = ExtJsAPI;
static commonConsts = commonConsts;
static cC = commonConsts;
static commonMiscUtils = commonMiscUtils;
static sOrig = OriginalSeleniumAPI; // TODO: change type.
/**
* ExtJs Components API.
*/
static eC = ExtJsCmpAPI;
/**
*
*/
static nodeUtils = nodeUtils;
static timeUtils = timeUtils;
static logUtils = LogUtils;
static tiaDir: string;
/**
* Tia version.
*/
static version: string;
/**
* Supported browsers.
*/
static browsers = [
'chrome', // First browser is default.
'firefox',
];
static cLParams = CommandLineParams;
static rootTestsDirPath: string;
static rootResultsDir: string;
static rootSuiteConfig: any;
static globalConfig: any;
static defaultRootProfile: any;
static rootDirConfig: any;
static rootLog: string;
static config: any;
static suiteConfig: any;
static firstRunWithRemoteDriver?: boolean;
}
/**
* Global namespace.
*/
// eslint-disable-next-line @typescript-eslint/no-namespace
declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace NodeJS {
interface Global {
gT: typeof GlobalTiaObjects;
gIn: typeof GlobalTiaInnerObjects;
// e: ExtJsApi;
// eC: ExtJsComponents;
// s: SeleniumApi;
// sOrig: SeleniumOriginalApi;
// a: TiaAssertions;
// l: TiaLogs;
// t: TiaTest;
}
}
}
global.gT = GlobalTiaObjects;
global.gIn = GlobalTiaInnerObjects;
// require('../api/api-index');