diff --git a/lib/capabilities-helper.d.ts b/lib/capabilities-helper.d.ts index 45e1e1b..540962b 100644 --- a/lib/capabilities-helper.d.ts +++ b/lib/capabilities-helper.d.ts @@ -1,3 +1,2 @@ -/// -export declare function resolveCapabilities(capsLocation: string, runType: string, projectDir: string, verbose?: boolean): {}; -export declare function searchCapabilities(capabilitiesLocation: any, projectDir: any, verbose?: boolean): Buffer; +export declare function resolveCapabilities(capsLocation: string, runType: string, projectDir: string, capabilitiesName: string, verbose?: boolean): {}; +export declare function searchCapabilities(capabilitiesLocation: any, projectDir: any, capabilitiesName: any, verbose?: boolean): any; diff --git a/lib/capabilities-helper.ts b/lib/capabilities-helper.ts index c841f11..03ac24f 100644 --- a/lib/capabilities-helper.ts +++ b/lib/capabilities-helper.ts @@ -1,62 +1,76 @@ -import { dirname, join } from "path"; -import { readFileSync } from "fs"; -import * as utils from "./utils"; -import * as parser from "./parser"; import * as glob from 'glob'; +import { dirname, join } from "path"; +import { readFileSync, statSync, existsSync } from "fs"; +import { logInfo, logWarn, logError } from "./utils"; -export function resolveCapabilities(capsLocation: string, runType: string, projectDir: string, verbose: boolean = false): {} { +export function resolveCapabilities(capsLocation: string, runType: string, projectDir: string, capabilitiesName: string, verbose: boolean = false): {} { let caps; - const customCapabilitiesConfigs = searchCapabilities(capsLocation, projectDir, verbose);; - - if (customCapabilitiesConfigs) { - const customCapabilities = JSON.parse(customCapabilitiesConfigs.toString()); - utils.log(customCapabilities, verbose); + const capabilitiesConfigFile = searchCapabilities(capsLocation, projectDir, capabilitiesName, verbose);; - caps = customCapabilities[runType]; + if (capabilitiesConfigFile) { + const capabilitiesObject = JSON.parse(capabilitiesConfigFile.toString()); + caps = capabilitiesObject[runType]; } - if (!customCapabilitiesConfigs || !caps) { - throw new Error("No capabilities found!!!"); + if (!caps) { + const msg = `No capabilities of type ${runType} found! Check you appium capabilities file!`; + logError(msg); + logInfo(`Available capabilities:`); + console.dir(JSON.parse(capabilitiesConfigFile.toString())); + throw new Error(msg); } return caps; } -export function searchCapabilities(capabilitiesLocation, projectDir, verbose: boolean = false) { - if (utils.isFile(capabilitiesLocation)) { - return seCapabilities(capabilitiesLocation); +export function searchCapabilities(capabilitiesLocation, projectDir, capabilitiesName, verbose: boolean = false) { + let appiumCapabilitiesFile = undefined; + + if (existsSync(capabilitiesLocation) && statSync(capabilitiesLocation).isFile()) { + appiumCapabilitiesFile = capabilitiesLocation; + console.log(appiumCapabilitiesFile); } - console.log(`Search capabilities in ${capabilitiesLocation}`); - let customCapabilitiesLocation = sreachCapabilitiesByFolder(capabilitiesLocation); - - if (!customCapabilitiesLocation || customCapabilitiesLocation.length === 0) { - console.log(`Search capabilities in ${projectDir}`); + if (!appiumCapabilitiesFile) { + logInfo(`Search capabilities in ${capabilitiesLocation}`); + appiumCapabilitiesFile = sreachCapabilitiesByFolder(capabilitiesLocation, capabilitiesName); + } - customCapabilitiesLocation = sreachCapabilitiesByFolder(projectDir) + if (!appiumCapabilitiesFile) { + logInfo(`Search capabilities in ${projectDir}`); + appiumCapabilitiesFile = sreachCapabilitiesByFolder(projectDir, capabilitiesName) } - if (!customCapabilitiesLocation || customCapabilitiesLocation.length === 0) { - console.log(`Search capabilities in ${dirname(projectDir)}`); - customCapabilitiesLocation = sreachCapabilitiesByFolder(dirname(projectDir)) + if (!appiumCapabilitiesFile) { + const parentRoot = dirname(projectDir); + logInfo(`Search capabilities in ${parentRoot}`); + appiumCapabilitiesFile = sreachCapabilitiesByFolder(parentRoot, capabilitiesName); } - if (customCapabilitiesLocation && customCapabilitiesLocation.length > 0 && utils.fileExists(customCapabilitiesLocation)) { - return seCapabilities(customCapabilitiesLocation); + if (appiumCapabilitiesFile && existsSync(appiumCapabilitiesFile)) { + return seCapabilities(appiumCapabilitiesFile); + } else { + logError(`We could not locate any file ${capabilitiesName}!`); } - throw Error("No capabilities found!!!"); + return appiumCapabilitiesFile; } -const sreachCapabilitiesByFolder = (location) => { - const capabiliteFiles = glob.sync(join(location, "/**/", parser.capabilitiesName)); - console.log('Found files:', capabiliteFiles); - return capabiliteFiles[0]; +const sreachCapabilitiesByFolder = (location, capabilitiesName) => { + const capabiliteFiles = glob.sync(join(location, "/**/", capabilitiesName)); + logInfo('Found files:', capabiliteFiles); + let capsFile = capabiliteFiles && capabiliteFiles.length > 0 ? capabiliteFiles[0] : undefined; + if (capsFile) { + logInfo('Peek first file:', capabiliteFiles[0]); + } else { + logWarn(`No appium capabilities file '${capabilitiesName}' found in '${location}'.`); + } + return capsFile; } const seCapabilities = appiumCapabilitiesLocation => { const file = readFileSync(appiumCapabilitiesLocation); process.env.APPIUM_CAPABILITIES = file.toString(); - utils.log("Capabilities found at: " + appiumCapabilitiesLocation, true); + logInfo(`Capabilities found at: ${appiumCapabilitiesLocation}`); return file; } \ No newline at end of file diff --git a/lib/device-manager.ts b/lib/device-manager.ts index 970d4c6..aa93603 100644 --- a/lib/device-manager.ts +++ b/lib/device-manager.ts @@ -94,7 +94,8 @@ export class DeviceManager implements IDeviceManager { } else { device.type === DeviceType.DEVICE ? logInfo("Device is connected:", device) : logInfo("Device is already started", device) if (!args.reuseDevice && device.type !== DeviceType.DEVICE) { - console.log("Since is it specified without reusing, the device would be shut down and restart!"); + logInfo("Option --reuseDevice is set to false, the device would be shut down and restart!"); + logInfo("Use --reuseDevice to preserve device state!"); DeviceController.kill(device); await DeviceController.startDevice(device); } diff --git a/lib/ns-capabilities.ts b/lib/ns-capabilities.ts index 8267f0b..c625367 100644 --- a/lib/ns-capabilities.ts +++ b/lib/ns-capabilities.ts @@ -52,7 +52,7 @@ export class NsCapabilities implements INsCapabilities { this._sessionId = parser.sessionId; this._startSession = parser.startSession; if (!this._attachToDebug && !this._sessionId) { - this._appiumCaps = resolveCapabilities(this._appiumCapsLocation, parser.runType, parser.projectDir); + this._appiumCaps = resolveCapabilities(this._appiumCapsLocation, parser.runType, parser.projectDir, parser.capabilitiesName); } this._testFolder = parser.testFolder; this._storage = parser.storage;