Skip to content

Commit 189ba64

Browse files
author
Zdravko
authored
chore: add option to provide relative path to the images for comparison. (#152)
The path is relative to resources/images
1 parent 37584d8 commit 189ba64

File tree

6 files changed

+17
-5
lines changed

6 files changed

+17
-5
lines changed

lib/interfaces/ns-capabilities-args.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ export interface INsCapabilitiesArgs {
3535
device?: IDevice;
3636
automationName?: AutomationName;
3737
deviceManager?: IDeviceManager;
38+
imagesPath?: string;
3839
}

lib/interfaces/ns-capabilities-args.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ export interface INsCapabilitiesArgs {
3636
device?: IDevice;
3737
automationName?: AutomationName;
3838
deviceManager?: IDeviceManager;
39+
imagesPath?: string;
3940
}

lib/ns-capabilities.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export class NsCapabilities implements INsCapabilities {
3939
private _device: IDevice;
4040
private _deviceManager: IDeviceManager;
4141
private _exceptions: Array<string> = new Array();
42+
private _imagesPath: string;
4243

4344
constructor(private _parser: INsCapabilitiesArgs) {
4445
this._projectDir = this._parser.projectDir;
@@ -65,6 +66,7 @@ export class NsCapabilities implements INsCapabilities {
6566
this._wdaLocalPort = this._parser.wdaLocalPort;
6667
this._path = this._parser.path;
6768
this._capabilitiesName = this._parser.capabilitiesName;
69+
this._imagesPath = this._parser.imagesPath;
6870
}
6971

7072
get path() { return this._path; }
@@ -107,6 +109,7 @@ export class NsCapabilities implements INsCapabilities {
107109
get deviceManager() { return this._deviceManager; }
108110
set deviceManager(deviceManager: IDeviceManager) { this._deviceManager = deviceManager; }
109111
get isValidated() { return this._isValidated; }
112+
get imagesPath() { return this._imagesPath; }
110113
//set isValidated(isValidated: boolean) { this._isValidated = isValidated; }
111114

112115
public extend(args: INsCapabilities) {

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: 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;
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, imagesPath: string;

lib/parser.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const config = (() => {
2525
.option("devMode", { alias: "dev-mode", describe: "Will skipp app instalation and will reuse the one installed on device!", type: "boolean", default: false })
2626
.option("ignoreDeviceController", { alias: "i-ns-device-controller", describe: "Use default appium options for running emulatos/ simulators.", type: "boolean", default: false })
2727
.option("cleanApp", { alias: "c", describe: "Uninstall app after test are finished", type: "boolean", default: false })
28+
.option("imagesPath", { describe: "comparison images path relative to resources/images", type: "string" })
2829
.help()
2930
.argv;
3031

@@ -89,6 +90,7 @@ const config = (() => {
8990
sessionId: options.sessionId,
9091
startSession: options.startSession,
9192
capabilitiesName: options.capabilitiesName,
93+
imagesPath: options.imagesPath || process.env.npm_config_imagesPath
9294
};
9395

9496
return config;
@@ -118,5 +120,6 @@ export const {
118120
attachToDebug,
119121
sessionId,
120122
startSession,
121-
capabilitiesName
123+
capabilitiesName,
124+
imagesPath
122125
}: INsCapabilitiesArgs = config;

lib/utils.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,13 @@ const getDeviceName = (args) => {
243243

244244
export function getStorageByDeviceName(args: INsCapabilities) {
245245
let storage = getStorage(args);
246+
if(args.imagesPath){
247+
const segments = args.imagesPath.split(/[\/\\]+/);
248+
storage = path.join(storage, segments.join(path.sep));
249+
return storage;
250+
}
246251
const appName = resolveSauceLabAppName(getAppName(args));
247252
storage = createStorageFolder(storage, appName);
248-
249253
storage = createStorageFolder(storage, getDeviceName(args));
250254

251255
return storage;
@@ -427,8 +431,8 @@ export async function scroll(wd, driver, direction: Direction, isIOS: boolean, y
427431
await driver.sleep(150);
428432
}
429433

430-
function createStorageFolder(storage, direcotry) {
431-
storage = resolve(storage, direcotry);
434+
function createStorageFolder(storage, directory) {
435+
storage = resolve(storage, directory);
432436
if (!fileExists(storage)) {
433437
fs.mkdirSync(storage);
434438
}

0 commit comments

Comments
 (0)