1- import { dirname , join } from "path" ;
2- import { readFileSync } from "fs" ;
3- import * as utils from "./utils" ;
4- import * as parser from "./parser" ;
51import * as glob from 'glob' ;
2+ import { dirname , join } from "path" ;
3+ import { readFileSync , statSync , existsSync } from "fs" ;
4+ import { logInfo , logWarn , logError } from "./utils" ;
65
7- export function resolveCapabilities ( capsLocation : string , runType : string , projectDir : string , verbose : boolean = false ) : { } {
6+ export function resolveCapabilities ( capsLocation : string , runType : string , projectDir : string , capabilitiesName : string , verbose : boolean = false ) : { } {
87 let caps ;
9- const customCapabilitiesConfigs = searchCapabilities ( capsLocation , projectDir , verbose ) ; ;
10-
11- if ( customCapabilitiesConfigs ) {
12- const customCapabilities = JSON . parse ( customCapabilitiesConfigs . toString ( ) ) ;
13- utils . log ( customCapabilities , verbose ) ;
8+ const capabilitiesConfigFile = searchCapabilities ( capsLocation , projectDir , capabilitiesName , verbose ) ; ;
149
15- caps = customCapabilities [ runType ] ;
10+ if ( capabilitiesConfigFile ) {
11+ const capabilitiesObject = JSON . parse ( capabilitiesConfigFile . toString ( ) ) ;
12+ caps = capabilitiesObject [ runType ] ;
1613 }
1714
18- if ( ! customCapabilitiesConfigs || ! caps ) {
19- throw new Error ( "No capabilities found!!!" ) ;
15+ if ( ! caps ) {
16+ const msg = `No capabilities of type ${ runType } found! Check you appium capabilities file!` ;
17+ logError ( msg ) ;
18+ logInfo ( `Available capabilities:` ) ;
19+ console . dir ( JSON . parse ( capabilitiesConfigFile . toString ( ) ) ) ;
20+ throw new Error ( msg ) ;
2021 }
2122
2223 return caps ;
2324}
2425
25- export function searchCapabilities ( capabilitiesLocation , projectDir , verbose : boolean = false ) {
26- if ( utils . isFile ( capabilitiesLocation ) ) {
27- return seCapabilities ( capabilitiesLocation ) ;
26+ export function searchCapabilities ( capabilitiesLocation , projectDir , capabilitiesName , verbose : boolean = false ) {
27+ let appiumCapabilitiesFile = undefined ;
28+
29+ if ( existsSync ( capabilitiesLocation ) && statSync ( capabilitiesLocation ) . isFile ( ) ) {
30+ appiumCapabilitiesFile = capabilitiesLocation ;
31+ console . log ( appiumCapabilitiesFile ) ;
2832 }
2933
30- console . log ( `Search capabilities in ${ capabilitiesLocation } ` ) ;
31- let customCapabilitiesLocation = sreachCapabilitiesByFolder ( capabilitiesLocation ) ;
32-
33- if ( ! customCapabilitiesLocation || customCapabilitiesLocation . length === 0 ) {
34- console . log ( `Search capabilities in ${ projectDir } ` ) ;
34+ if ( ! appiumCapabilitiesFile ) {
35+ logInfo ( `Search capabilities in ${ capabilitiesLocation } ` ) ;
36+ appiumCapabilitiesFile = sreachCapabilitiesByFolder ( capabilitiesLocation , capabilitiesName ) ;
37+ }
3538
36- customCapabilitiesLocation = sreachCapabilitiesByFolder ( projectDir )
39+ if ( ! appiumCapabilitiesFile ) {
40+ logInfo ( `Search capabilities in ${ projectDir } ` ) ;
41+ appiumCapabilitiesFile = sreachCapabilitiesByFolder ( projectDir , capabilitiesName )
3742 }
3843
39- if ( ! customCapabilitiesLocation || customCapabilitiesLocation . length === 0 ) {
40- console . log ( `Search capabilities in ${ dirname ( projectDir ) } ` ) ;
41- customCapabilitiesLocation = sreachCapabilitiesByFolder ( dirname ( projectDir ) )
44+ if ( ! appiumCapabilitiesFile ) {
45+ const parentRoot = dirname ( projectDir ) ;
46+ logInfo ( `Search capabilities in ${ parentRoot } ` ) ;
47+ appiumCapabilitiesFile = sreachCapabilitiesByFolder ( parentRoot , capabilitiesName ) ;
4248 }
4349
44- if ( customCapabilitiesLocation && customCapabilitiesLocation . length > 0 && utils . fileExists ( customCapabilitiesLocation ) ) {
45- return seCapabilities ( customCapabilitiesLocation ) ;
50+ if ( appiumCapabilitiesFile && existsSync ( appiumCapabilitiesFile ) ) {
51+ return seCapabilities ( appiumCapabilitiesFile ) ;
52+ } else {
53+ logError ( `We could not locate any file ${ capabilitiesName } !` ) ;
4654 }
4755
48- throw Error ( "No capabilities found!!!" ) ;
56+ return appiumCapabilitiesFile ;
4957}
5058
51- const sreachCapabilitiesByFolder = ( location ) => {
52- const capabiliteFiles = glob . sync ( join ( location , "/**/" , parser . capabilitiesName ) ) ;
53- console . log ( 'Found files:' , capabiliteFiles ) ;
54- return capabiliteFiles [ 0 ] ;
59+ const sreachCapabilitiesByFolder = ( location , capabilitiesName ) => {
60+ const capabiliteFiles = glob . sync ( join ( location , "/**/" , capabilitiesName ) ) ;
61+ logInfo ( 'Found files:' , capabiliteFiles ) ;
62+ let capsFile = capabiliteFiles && capabiliteFiles . length > 0 ? capabiliteFiles [ 0 ] : undefined ;
63+ if ( capsFile ) {
64+ logInfo ( 'Peek first file:' , capabiliteFiles [ 0 ] ) ;
65+ } else {
66+ logWarn ( `No appium capabilities file '${ capabilitiesName } ' found in '${ location } '.` ) ;
67+ }
68+ return capsFile ;
5569}
5670
5771const seCapabilities = appiumCapabilitiesLocation => {
5872 const file = readFileSync ( appiumCapabilitiesLocation ) ;
5973 process . env . APPIUM_CAPABILITIES = file . toString ( ) ;
60- utils . log ( " Capabilities found at: " + appiumCapabilitiesLocation , true ) ;
74+ logInfo ( ` Capabilities found at: ${ appiumCapabilitiesLocation } ` ) ;
6175 return file ;
6276}
0 commit comments