@@ -35,11 +35,17 @@ export async function startBrowserSession(
35
35
const entry = await filterDesktop ( args ) ;
36
36
const url = buildDesktopUrl ( args , entry ) ;
37
37
openBrowser ( url ) ;
38
+ if ( entry . notes ) {
39
+ return `${ url } , ${ entry . notes } ` ;
40
+ }
38
41
return url ;
39
42
} else {
40
43
const entry = await filterMobile ( args ) ;
41
44
const url = buildMobileUrl ( args , entry ) ;
42
45
openBrowser ( url ) ;
46
+ if ( entry . notes ) {
47
+ return `${ url } , ${ entry . notes } ` ;
48
+ }
43
49
return url ;
44
50
}
45
51
}
@@ -51,6 +57,7 @@ interface DesktopEntry {
51
57
os_version : string ;
52
58
browser : string ;
53
59
browser_version : string ;
60
+ notes ?: string ;
54
61
}
55
62
56
63
async function filterDesktop ( args : DesktopArgs ) : Promise < DesktopEntry > {
@@ -106,6 +113,24 @@ async function filterDesktop(args: DesktopArgs): Promise<DesktopEntry> {
106
113
if ( ! final )
107
114
throw new Error ( `No entry for browser version "${ args . browserVersion } ".` ) ;
108
115
116
+ if (
117
+ args . osVersion !== chosenOS &&
118
+ args . osVersion !== "latest" &&
119
+ args . osVersion !== "oldest"
120
+ ) {
121
+ final . notes = `Note: Os version ${ args . osVersion } was not found. Using "${ chosenOS } " instead.` ;
122
+ }
123
+ if (
124
+ args . browserVersion !== chosenBrow &&
125
+ args . browserVersion !== "latest" &&
126
+ args . browserVersion !== "oldest"
127
+ ) {
128
+ if ( ! final . notes ) {
129
+ final . notes = `Note: ` ;
130
+ }
131
+ final . notes += `Browser version ${ args . browserVersion } was not found. Using "${ chosenBrow } " instead.` ;
132
+ }
133
+
109
134
return final ;
110
135
}
111
136
@@ -131,6 +156,7 @@ interface MobileEntry {
131
156
os : string ;
132
157
os_version : string ;
133
158
display_name : string ;
159
+ notes ?: string ;
134
160
}
135
161
136
162
async function filterMobile ( args : MobileArgs ) : Promise < MobileEntry > {
@@ -140,18 +166,14 @@ async function filterMobile(args: MobileArgs): Promise<MobileEntry> {
140
166
os : grp . os ,
141
167
os_version : d . os_version ,
142
168
display_name : d . display_name ,
169
+ notes : "" ,
143
170
} ) ) ,
144
171
) ;
145
172
146
173
let candidates = all . filter ( ( d ) => d . os === args . os ) ;
147
174
if ( ! candidates . length )
148
175
throw new Error ( `No mobile OS entries for "${ args . os } ".` ) ;
149
176
150
- // resolve OS version
151
- const vers = candidates . map ( ( d ) => d . os_version ) ;
152
- const chosen = resolveVersion ( args . osVersion , vers ) ;
153
- candidates = candidates . filter ( ( d ) => d . os_version === chosen ) ;
154
-
155
177
// fuzzy‐match device name
156
178
const matches = customFuzzySearch (
157
179
candidates ,
@@ -160,18 +182,43 @@ async function filterMobile(args: MobileArgs): Promise<MobileEntry> {
160
182
5 ,
161
183
) ;
162
184
if ( ! matches . length )
163
- throw new Error (
164
- `No devices matching "${ args . device } " on ${ args . os } ${ chosen } .` ,
165
- ) ;
185
+ throw new Error ( `No devices matching "${ args . device } " on ${ args . os } .` ) ;
166
186
167
187
const exact = matches . find (
168
188
( m ) => m . display_name . toLowerCase ( ) === args . device . toLowerCase ( ) ,
169
189
) ;
170
190
if ( ! exact ) {
171
191
const names = matches . map ( ( m ) => m . display_name ) . join ( ", " ) ;
172
- throw new Error ( `Did you mean: ${ names } ?` ) ;
192
+ throw new Error (
193
+ `Alternative Device/Device's found : ${ names } . Please Select one.` ,
194
+ ) ;
173
195
}
174
- return exact ;
196
+ candidates = candidates . filter ( ( d ) => d . display_name === exact . display_name ) ;
197
+ if ( ! candidates . length )
198
+ throw new Error ( `No device "${ exact . display_name } " on ${ args . os } .` ) ;
199
+ // resolve browser versio
200
+
201
+ // resolve OS version
202
+ const vers = candidates . map ( ( d ) => d . os_version ) ;
203
+ const chosen = resolveVersion ( args . osVersion , vers ) ;
204
+ candidates = candidates . filter ( ( d ) => d . os_version === chosen ) ;
205
+
206
+ if ( ! candidates . length )
207
+ throw new Error ( `No entry for OS version "${ args . osVersion } ".` ) ;
208
+
209
+ let notes = "" ;
210
+ if (
211
+ chosen !== args . osVersion &&
212
+ args . osVersion !== "latest" &&
213
+ args . osVersion !== "oldest"
214
+ ) {
215
+ notes = `Note: Os version ${ args . osVersion } was not found. Using ${ chosen } instead.` ;
216
+ }
217
+
218
+ const final = candidates [ 0 ] ;
219
+ if ( ! final ) throw new Error ( `No entry for OS version "${ args . osVersion } ".` ) ;
220
+ final . notes = notes ;
221
+ return final ;
175
222
}
176
223
177
224
function buildMobileUrl ( args : MobileArgs , d : MobileEntry ) : string {
0 commit comments