Skip to content

Commit 98292e4

Browse files
fix: parser (#145)
* fix: parser and ns-caps-args
1 parent 214b1f4 commit 98292e4

File tree

11 files changed

+34
-26
lines changed

11 files changed

+34
-26
lines changed

index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { AppiumServer } from "./lib/appium-server";
12
import { IDeviceManager } from "./lib/interfaces/device-manager";
23
import * as frameComparerHelper from "./lib/frame-comparer";
34
import { INsCapabilitiesArgs } from "./lib/interfaces/ns-capabilities-args";
@@ -16,7 +17,7 @@ export { IDeviceManager } from "./lib/interfaces/device-manager";
1617
export { LogType } from "./lib/log-types";
1718
export { INsCapabilities } from "./lib/interfaces/ns-capabilities";
1819
export { INsCapabilitiesArgs } from "./lib/interfaces/ns-capabilities-args";
19-
export declare function startServer(port?: number, deviceManager?: IDeviceManager): Promise<void>;
20+
export declare function startServer(port?: number, deviceManager?: IDeviceManager): Promise<AppiumServer>;
2021
export declare function stopServer(): Promise<void>;
2122
export declare function createDriver(args?: INsCapabilitiesArgs): Promise<any>;
2223
/**

index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export { LogType } from "./lib/log-types";
2727
export { INsCapabilities } from "./lib/interfaces/ns-capabilities";
2828
export { INsCapabilitiesArgs } from "./lib/interfaces/ns-capabilities-args";
2929

30-
const nsCapabilities: INsCapabilities = new NsCapabilities({ ...<INsCapabilities>parser });
30+
const nsCapabilities: INsCapabilities = new NsCapabilities(parser);
3131
const appiumServer = new AppiumServer(nsCapabilities);
3232
let frameComparer: FrameComparer;
3333
let appiumDriver = null;
@@ -69,8 +69,9 @@ if (nsCapabilities.startSession) {
6969
}
7070

7171
export async function startServer(port?: number, deviceManager?: IDeviceManager) {
72-
await appiumServer.start(port, deviceManager);
72+
await appiumServer.start(port || nsCapabilities.port, deviceManager);
7373
await attachToExitProcessHoockup(appiumServer.server, "appium");
74+
return appiumServer;
7475
}
7576

7677
export async function stopServer() {

lib/appium-driver.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ export class AppiumDriver {
197197

198198
if (!args.attachToDebug && !args.sessionId) {
199199
if (!args.device) {
200-
args.device = DeviceManager.getDefaultDevice(args);
200+
args.deviceManager = args.deviceManager || new DeviceManager();
201+
args.device = await args.deviceManager.startDevice(args);
201202
}
202203
await AppiumDriver.applyAdditionalSettings(args);
203204
}

lib/appium-server.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,9 @@ export class AppiumServer {
6969
await this.prepApp();
7070
}
7171

72-
7372
log("Starting server...", this._args.verbose);
7473
const logLevel = this._args.verbose === true ? "debug" : "info";
7574
this.port = this._args.port || port;
76-
let retry = false;
7775

7876
if (!this._args.attachToDebug) {
7977

lib/capabilities-helper.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export declare function resolveCapabilities(capsLocation: string, runType: string, projectDir: string, capabilitiesName: string, verbose?: boolean): {};
2-
export declare function searchCapabilities(capabilitiesLocation: any, projectDir: any, capabilitiesName: any, verbose?: boolean): any;
2+
export declare function searchCapabilities(capabilitiesLocation: string, projectDir: string, capabilitiesName: string, verbose?: boolean): any;

lib/capabilities-helper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function resolveCapabilities(capsLocation: string, runType: string, proje
2323
return caps;
2424
}
2525

26-
export function searchCapabilities(capabilitiesLocation, projectDir, capabilitiesName, verbose: boolean = false) {
26+
export function searchCapabilities(capabilitiesLocation: string, projectDir: string, capabilitiesName: string, verbose: boolean = false) {
2727
let appiumCapabilitiesFile = undefined;
2828

2929
if (existsSync(capabilitiesLocation) && statSync(capabilitiesLocation).isFile()) {
@@ -32,7 +32,7 @@ export function searchCapabilities(capabilitiesLocation, projectDir, capabilitie
3232
}
3333

3434
if (!appiumCapabilitiesFile) {
35-
logInfo(`Search capabilities in ${capabilitiesLocation}`);
35+
logInfo(`Search capabilities in ${capabilitiesLocation} for ${capabilitiesName}`);
3636
appiumCapabilitiesFile = sreachCapabilitiesByFolder(capabilitiesLocation, capabilitiesName);
3737
}
3838

lib/ns-capabilities.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { INsCapabilities } from "./interfaces/ns-capabilities";
2+
import { INsCapabilitiesArgs } from "./interfaces/ns-capabilities-args";
23
import { AutomationName } from "./automation-name";
34
import { IDevice } from "mobile-devices-controller";
45
import { IDeviceManager } from "./interfaces/device-manager";
@@ -36,13 +37,13 @@ export declare class NsCapabilities implements INsCapabilities {
3637
private _device;
3738
private _deviceManager;
3839
private _exceptions;
39-
constructor(_parser: INsCapabilities);
40+
constructor(_parser: INsCapabilitiesArgs);
4041
readonly path: string;
4142
readonly projectDir: string;
4243
readonly projectBinary: string;
4344
readonly pluginRoot: string;
4445
readonly pluginBinary: string;
45-
readonly port: number;
46+
port: number;
4647
readonly verbose: boolean;
4748
readonly appiumCapsLocation: string;
4849
appiumCaps: any;

lib/ns-capabilities.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { INsCapabilities } from "./interfaces/ns-capabilities";
2+
import { INsCapabilitiesArgs } from "./interfaces/ns-capabilities-args";
23
import { AutomationName } from "./automation-name";
34
import { resolveCapabilities } from "./capabilities-helper";
45
import { getAppPath, fileExists, logInfo, logError } from "./utils";
@@ -39,7 +40,7 @@ export class NsCapabilities implements INsCapabilities {
3940
private _deviceManager: IDeviceManager;
4041
private _exceptions: Array<string> = new Array();
4142

42-
constructor(private _parser: INsCapabilities) {
43+
constructor(private _parser: INsCapabilitiesArgs) {
4344
this._projectDir = this._parser.projectDir;
4445
this._projectBinary = this._parser.projectBinary;
4546
this._pluginRoot = this._parser.pluginRoot;
@@ -72,6 +73,7 @@ export class NsCapabilities implements INsCapabilities {
7273
get pluginRoot() { return this._pluginRoot; }
7374
get pluginBinary() { return this._pluginBinary; }
7475
get port() { return this._port; }
76+
set port(port) { this._port = port; }
7577
get verbose() { return this._verbose; }
7678
get appiumCapsLocation() { return this._appiumCapsLocation; }
7779
get appiumCaps() { return this._appiumCaps; }
@@ -121,17 +123,17 @@ export class NsCapabilities implements INsCapabilities {
121123
this._isValidated = true;
122124
}
123125
if (!this._attachToDebug && !this._sessionId) {
124-
this._appiumCaps = resolveCapabilities(this._appiumCapsLocation, this._parser.runType || this.runType, this.projectDir, this._capabilitiesName);
126+
this._appiumCaps = resolveCapabilities(this.appiumCapsLocation, this.runType, this.projectDir, this._capabilitiesName);
125127

126128
this.setAutomationName();
127129
this.resolveApplication();
128130
this.checkMandatoryCapabiliies();
129131
this.throwExceptions();
130132
this.shouldSetFullResetOption();
131133
this._isValidated = true;
134+
} else {
135+
this._isValidated = false;
132136
}
133-
134-
this._isValidated = false;
135137
}
136138

137139
private isAndroidPlatform() { return this._appiumCaps && this._appiumCaps ? this._appiumCaps.platformName.toLowerCase().includes("android") : undefined; }

lib/parser.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export declare const projectDir: any, projectBinary: any, pluginRoot: any, pluginBinary: any, port: any, verbose: any, appiumCapsLocation: any, testFolder: any, runType: any, isSauceLab: any, appPath: any, storage: any, testReports: any, reuseDevice: any, devMode: any, ignoreDeviceController: any, wdaLocalPort: any, path: any, relaxedSecurity: any, cleanApp: boolean, attachToDebug: any, sessionId: any, startSession: any;
1+
export declare const projectDir: string, projectBinary: string, pluginRoot: string, pluginBinary: string, port: number, verbose: boolean, appiumCapsLocation: string, testFolder: string, runType: string, isSauceLab: boolean, appPath: string, storage: string, testReports: string, reuseDevice: boolean, devMode: boolean, ignoreDeviceController: boolean, wdaLocalPort: number, path: string, relaxedSecurity: boolean, cleanApp: boolean, attachToDebug: boolean, sessionId: string, startSession: boolean, capabilitiesName: string;

lib/parser.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import * as yargs from "yargs";
2-
import { join, dirname } from "path";
2+
import { join } from "path";
33
import { resolve, logError } from "./utils";
4-
import { ParserArgs } from "./interfaces/parser-args";
4+
import { INsCapabilitiesArgs } from "./interfaces/ns-capabilities-args";
55

66
const config = (() => {
77
const options = yargs
88
.option("runType", { describe: "Path to excute command.", type: "string", default: null })
99
.option("testFolder", { describe: "e2e test folder name", default: "e2e", type: "string" })
1010
.option("appiumCapsLocation", { describe: "Capabilities", type: "string" })
1111
.option("sauceLab", { describe: "SauceLab", default: false, type: "boolean" })
12-
.option("port", { alias: "p", describe: "Appium port", type: "number" })
12+
.option("port", { alias: "p", describe: "Appium port", type: "number", default: 8300 })
1313
.option("attachToDebug", { alias: "a", describe: "Attach to appium desktop app.", default: false, type: "boolean" })
1414
.option("capabilitiesName", { describe: "Capabilities file name", default: "appium.capabilities.json", type: "string" })
1515
.option("sessionId", { alias: "s", describe: "Session to attach", default: false, type: "string" })
@@ -87,7 +87,8 @@ const config = (() => {
8787
relaxedSecurity: options.relaxedSecurity,
8888
attachToDebug: options.attachToDebug,
8989
sessionId: options.sessionId,
90-
startSession: options.startSession
90+
startSession: options.startSession,
91+
capabilitiesName: options.capabilitiesName,
9192
};
9293

9394
return config;
@@ -116,5 +117,6 @@ export const {
116117
cleanApp,
117118
attachToDebug,
118119
sessionId,
119-
startSession
120-
} = config;
120+
startSession,
121+
capabilitiesName
122+
}: INsCapabilitiesArgs = config;

0 commit comments

Comments
 (0)