Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions lib/capabilities-helper.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
/// <reference types="node" />
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;
80 changes: 47 additions & 33 deletions lib/capabilities-helper.ts
Original file line number Diff line number Diff line change
@@ -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;
}
3 changes: 2 additions & 1 deletion lib/device-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/ns-capabilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down