appium-webdriveragent 13.1.2 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [13.2.0](https://github.com/appium/WebDriverAgent/compare/v13.1.3...v13.2.0) (2026-05-26)
2
+
3
+ ### Features
4
+
5
+ * Add XPath extensions ([#1144](https://github.com/appium/WebDriverAgent/issues/1144)) ([a975b89](https://github.com/appium/WebDriverAgent/commit/a975b89ac998d31a72bf3723b843d85af8867cf0))
6
+
7
+ ## [13.1.3](https://github.com/appium/WebDriverAgent/compare/v13.1.2...v13.1.3) (2026-05-24)
8
+
9
+ ### Bug Fixes
10
+
11
+ * Scheme for derived data path retrieval ([#1142](https://github.com/appium/WebDriverAgent/issues/1142)) ([9ada5f6](https://github.com/appium/WebDriverAgent/commit/9ada5f6fe2af29278c488e845f8714f22fabfeee))
12
+
1
13
  ## [13.1.2](https://github.com/appium/WebDriverAgent/compare/v13.1.1...v13.1.2) (2026-05-23)
2
14
 
3
15
  ### Bug Fixes
@@ -52,6 +52,7 @@
52
52
  641EE5D92240C5CA00173FCB /* XCUIElement+FBPickerWheel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7136A4781E8918E60024FC3D /* XCUIElement+FBPickerWheel.m */; };
53
53
  641EE5DA2240C5CA00173FCB /* XCUIApplicationProcessDelay.m in Sources */ = {isa = PBXBuildFile; fileRef = 6385F4A5220A40760095BBDB /* XCUIApplicationProcessDelay.m */; };
54
54
  641EE5DB2240C5CA00173FCB /* FBXPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 711084431DA3AA7500F913D6 /* FBXPath.m */; };
55
+ 71B2E0042733FB970074B004 /* FBXPathExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B2E0022733FB970074B002 /* FBXPathExtensions.m */; };
55
56
  641EE5DC2240C5CA00173FCB /* XCUIApplication+FBAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 719CD8FB2126C88B00C7D0C2 /* XCUIApplication+FBAlert.m */; };
56
57
  641EE5DE2240C5CA00173FCB /* XCUIApplication+FBTouchAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BD20721F86116100B36EC2 /* XCUIApplication+FBTouchAction.m */; };
57
58
  641EE5DF2240C5CA00173FCB /* FBWebServer.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9AB78D1CAEDF0C008C271F /* FBWebServer.m */; };
@@ -316,6 +317,7 @@
316
317
  64E3502F2AC0B6FE005F3ACB /* NSDictionary+FBUtf8SafeDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 716F0D9F2A16CA1000CDD977 /* NSDictionary+FBUtf8SafeDictionary.h */; };
317
318
  711084441DA3AA7500F913D6 /* FBXPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 711084421DA3AA7500F913D6 /* FBXPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
318
319
  711084451DA3AA7500F913D6 /* FBXPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 711084431DA3AA7500F913D6 /* FBXPath.m */; };
320
+ 71B2E0062733FB970074B006 /* FBXPathExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B2E0022733FB970074B002 /* FBXPathExtensions.m */; };
319
321
  7119097C2152580600BA3C7E /* XCUIScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = 7119097B2152580600BA3C7E /* XCUIScreen.h */; settings = {ATTRIBUTES = (Public, ); }; };
320
322
  7119E1EC1E891F8600D0B125 /* FBPickerWheelSelectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7119E1EB1E891F8600D0B125 /* FBPickerWheelSelectTests.m */; };
321
323
  711CD03425ED1106001C01D2 /* XCUIScreenDataSource-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 711CD03325ED1106001C01D2 /* XCUIScreenDataSource-Protocol.h */; };
@@ -976,6 +978,8 @@
976
978
  64B26509228CE4FF002A5025 /* FBTVNavigationTracker-Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FBTVNavigationTracker-Private.h"; sourceTree = "<group>"; };
977
979
  711084421DA3AA7500F913D6 /* FBXPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXPath.h; sourceTree = "<group>"; };
978
980
  711084431DA3AA7500F913D6 /* FBXPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBXPath.m; sourceTree = "<group>"; };
981
+ 71B2E0012733FB970074B001 /* FBXPathExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBXPathExtensions.h; sourceTree = "<group>"; };
982
+ 71B2E0022733FB970074B002 /* FBXPathExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBXPathExtensions.m; sourceTree = "<group>"; };
979
983
  7119097B2152580600BA3C7E /* XCUIScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XCUIScreen.h; sourceTree = "<group>"; };
980
984
  7119E1EB1E891F8600D0B125 /* FBPickerWheelSelectTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBPickerWheelSelectTests.m; sourceTree = "<group>"; };
981
985
  711CD03325ED1106001C01D2 /* XCUIScreenDataSource-Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCUIScreenDataSource-Protocol.h"; sourceTree = "<group>"; };
@@ -2000,9 +2004,11 @@
2000
2004
  714D88CA2733FB970074A925 /* FBXMLGenerationOptions.h */,
2001
2005
  714D88CB2733FB970074A925 /* FBXMLGenerationOptions.m */,
2002
2006
  712A0C861DA3E55D007D02E5 /* FBXPath-Private.h */,
2003
- 711084421DA3AA7500F913D6 /* FBXPath.h */,
2004
- 711084431DA3AA7500F913D6 /* FBXPath.m */,
2005
- EE6B64FB1D0F86EF00E85F5D /* XCTestPrivateSymbols.h */,
2007
+ 711084421DA3AA7500F913D6 /* FBXPath.h */,
2008
+ 711084431DA3AA7500F913D6 /* FBXPath.m */,
2009
+ 71B2E0012733FB970074B001 /* FBXPathExtensions.h */,
2010
+ 71B2E0022733FB970074B002 /* FBXPathExtensions.m */,
2011
+ EE6B64FB1D0F86EF00E85F5D /* XCTestPrivateSymbols.h */,
2006
2012
  EE6B64FC1D0F86EF00E85F5D /* XCTestPrivateSymbols.m */,
2007
2013
  633E904A220DEE7F007CADF9 /* XCUIApplicationProcessDelay.h */,
2008
2014
  6385F4A5220A40760095BBDB /* XCUIApplicationProcessDelay.m */,
@@ -3156,6 +3162,7 @@
3156
3162
  641EE5D92240C5CA00173FCB /* XCUIElement+FBPickerWheel.m in Sources */,
3157
3163
  641EE5DA2240C5CA00173FCB /* XCUIApplicationProcessDelay.m in Sources */,
3158
3164
  641EE5DB2240C5CA00173FCB /* FBXPath.m in Sources */,
3165
+ 71B2E0042733FB970074B004 /* FBXPathExtensions.m in Sources */,
3159
3166
  71C8E55425399A6B008572C1 /* XCUIApplication+FBQuiescence.m in Sources */,
3160
3167
  641EE5DC2240C5CA00173FCB /* XCUIApplication+FBAlert.m in Sources */,
3161
3168
  641EE70F2240CE4800173FCB /* FBTVNavigationTracker.m in Sources */,
@@ -3277,6 +3284,7 @@
3277
3284
  6385F4A7220A40760095BBDB /* XCUIApplicationProcessDelay.m in Sources */,
3278
3285
  71A5C67529A4F39600421C37 /* XCTIssue+FBPatcher.m in Sources */,
3279
3286
  711084451DA3AA7500F913D6 /* FBXPath.m in Sources */,
3287
+ 71B2E0062733FB970074B006 /* FBXPathExtensions.m in Sources */,
3280
3288
  719CD8FD2126C88B00C7D0C2 /* XCUIApplication+FBAlert.m in Sources */,
3281
3289
  13DE7A45287C2A8D003243C6 /* FBXCAccessibilityElement.m in Sources */,
3282
3290
  641EE70E2240CE4800173FCB /* FBTVNavigationTracker.m in Sources */,
@@ -15,11 +15,11 @@
15
15
  <key>CFBundlePackageType</key>
16
16
  <string>FMWK</string>
17
17
  <key>CFBundleShortVersionString</key>
18
- <string>13.1.2</string>
18
+ <string>13.2.0</string>
19
19
  <key>CFBundleSignature</key>
20
20
  <string>????</string>
21
21
  <key>CFBundleVersion</key>
22
- <string>13.1.2</string>
22
+ <string>13.2.0</string>
23
23
  <key>NSPrincipalClass</key>
24
24
  <string/>
25
25
  </dict>
@@ -51,6 +51,11 @@ NS_ASSUME_NONNULL_BEGIN
51
51
  document:(xmlDocPtr)doc
52
52
  contextNode:(nullable xmlNodePtr)contextNode;
53
53
 
54
+ + (xmlXPathObjectPtr)evaluate:(NSString *)xpathQuery
55
+ document:(xmlDocPtr)doc
56
+ contextNode:(nullable xmlNodePtr)contextNode
57
+ errorMessage:(NSString * _Nullable * _Nullable)errorMessage;
58
+
54
59
  @end
55
60
 
56
61
  NS_ASSUME_NONNULL_END
@@ -14,6 +14,7 @@
14
14
  #import "FBLogger.h"
15
15
  #import "FBMacros.h"
16
16
  #import "FBXMLGenerationOptions.h"
17
+ #import "FBXPathExtensions.h"
17
18
  #import "FBXCElementSnapshotWrapper+Helpers.h"
18
19
  #import "NSString+FBXMLSafeString.h"
19
20
  #import "XCUIApplication.h"
@@ -152,7 +153,17 @@ static NSString *const topNodeIndexPath = @"top";
152
153
 
153
154
  + (id)throwException:(NSString *)name forQuery:(NSString *)xpathQuery
154
155
  {
155
- NSString *reason = [NSString stringWithFormat:@"Cannot evaluate results for XPath expression \"%@\"", xpathQuery];
156
+ return [self throwException:name forQuery:xpathQuery detail:nil];
157
+ }
158
+
159
+ + (id)throwException:(NSString *)name forQuery:(NSString *)xpathQuery detail:(nullable NSString *)detail
160
+ {
161
+ NSString *reason;
162
+ if (nil != detail) {
163
+ reason = [NSString stringWithFormat:@"Cannot evaluate results for XPath expression \"%@\": %@", xpathQuery, detail];
164
+ } else {
165
+ reason = [NSString stringWithFormat:@"Cannot evaluate results for XPath expression \"%@\"", xpathQuery];
166
+ }
156
167
  @throw [NSException exceptionWithName:name reason:reason userInfo:@{}];
157
168
  return nil;
158
169
  }
@@ -284,16 +295,18 @@ static NSString *const topNodeIndexPath = @"top";
284
295
  contextNode = nodeSet->nodeTab[0];
285
296
  }
286
297
  }
298
+ NSString *evaluationError = nil;
287
299
  xmlXPathObjectPtr queryResult = [self evaluate:xpathQuery
288
300
  document:doc
289
- contextNode:contextNode];
301
+ contextNode:contextNode
302
+ errorMessage:&evaluationError];
290
303
  if (NULL != contextNodeQueryResult) {
291
304
  xmlXPathFreeObject(contextNodeQueryResult);
292
305
  }
293
306
  if (NULL == queryResult) {
294
307
  xmlFreeTextWriter(writer);
295
308
  xmlFreeDoc(doc);
296
- return [self throwException:FBInvalidXPathException forQuery:xpathQuery];
309
+ return [self throwException:FBInvalidXPathException forQuery:xpathQuery detail:evaluationError];
297
310
  }
298
311
 
299
312
  NSArray *matchingSnapshots = [self collectMatchingSnapshots:queryResult->nodesetval
@@ -435,6 +448,14 @@ static NSString *const topNodeIndexPath = @"top";
435
448
  + (xmlXPathObjectPtr)evaluate:(NSString *)xpathQuery
436
449
  document:(xmlDocPtr)doc
437
450
  contextNode:(nullable xmlNodePtr)contextNode
451
+ {
452
+ return [self evaluate:xpathQuery document:doc contextNode:contextNode errorMessage:nil];
453
+ }
454
+
455
+ + (xmlXPathObjectPtr)evaluate:(NSString *)xpathQuery
456
+ document:(xmlDocPtr)doc
457
+ contextNode:(nullable xmlNodePtr)contextNode
458
+ errorMessage:(NSString * _Nullable * _Nullable)errorMessage
438
459
  {
439
460
  xmlXPathContextPtr xpathCtx = xmlXPathNewContext(doc);
440
461
  if (NULL == xpathCtx) {
@@ -443,10 +464,21 @@ static NSString *const topNodeIndexPath = @"top";
443
464
  }
444
465
  xpathCtx->node = NULL == contextNode ? doc->children : contextNode;
445
466
 
467
+ FBXPathExtensions *extensions = [FBXPathExtensions new];
468
+ [extensions registerFunctionsWithContext:xpathCtx];
469
+
446
470
  xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression((const xmlChar *)[xpathQuery UTF8String], xpathCtx);
447
471
  if (NULL == xpathObj) {
472
+ NSString *detail = extensions.lastEvaluationError;
473
+ if (NULL != errorMessage) {
474
+ *errorMessage = detail;
475
+ }
476
+ if (nil != detail) {
477
+ [FBLogger logFmt:@"Failed to evaluate XPath query \"%@\": %@", xpathQuery, detail];
478
+ } else {
479
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathEvalExpression for XPath query \"%@\"", xpathQuery];
480
+ }
448
481
  xmlXPathFreeContext(xpathCtx);
449
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathEvalExpression for XPath query \"%@\"", xpathQuery];
450
482
  return NULL;
451
483
  }
452
484
  xmlXPathFreeContext(xpathCtx);
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ #ifdef __clang__
12
+ #pragma clang diagnostic push
13
+ #pragma clang diagnostic ignored "-Wpadded"
14
+ #endif
15
+
16
+ #import <libxml/xpath.h>
17
+
18
+ #ifdef __clang__
19
+ #pragma clang diagnostic pop
20
+ #endif
21
+
22
+ NS_ASSUME_NONNULL_BEGIN
23
+
24
+ @interface FBXPathExtensions : NSObject
25
+
26
+ /**
27
+ Registers XPath 2-compatible extension functions on the given libxml2 context.
28
+ */
29
+ - (void)registerFunctionsWithContext:(xmlXPathContextPtr)xpathCtx;
30
+
31
+ /**
32
+ Human-readable message for the most recent XPath extension evaluation failure on this instance,
33
+ for example an invalid regular expression pattern or flags. Nil when no extension error has occurred.
34
+ Scoped to the libxml2 context this instance is registered with; each evaluation should use its own instance.
35
+ */
36
+ @property (nonatomic, nullable, readonly, copy) NSString *lastEvaluationError;
37
+
38
+ @end
39
+
40
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,418 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import "FBXPathExtensions.h"
10
+
11
+ #import "FBLogger.h"
12
+
13
+ #import <libxml/xpathInternals.h>
14
+
15
+ static void FBRegisterXPathExtensions(xmlXPathContextPtr xpathCtx);
16
+
17
+ static NSString *const FBXPathTokenSequenceSeparator = @"\x1E";
18
+ static const NSRegularExpressionOptions FBXPathNoRegexOptions = (NSRegularExpressionOptions)0;
19
+ static const NSMatchingOptions FBXPathNoMatchingOptions = (NSMatchingOptions)0;
20
+
21
+ @interface FBXPathExtensions ()
22
+ @property (nonatomic, nullable, readwrite, copy) NSString *lastEvaluationError;
23
+ @end
24
+
25
+ static FBXPathExtensions *FBXPathExtensionsFromParserContext(xmlXPathParserContextPtr ctxt)
26
+ {
27
+ if (NULL == ctxt || NULL == ctxt->context || NULL == ctxt->context->userData) {
28
+ return nil;
29
+ }
30
+ return (__bridge FBXPathExtensions *)ctxt->context->userData;
31
+ }
32
+
33
+ static void FBXPathSetEvaluationError(xmlXPathParserContextPtr ctxt, int xpathErrorCode, NSString *message)
34
+ {
35
+ FBXPathExtensions *extensions = FBXPathExtensionsFromParserContext(ctxt);
36
+ extensions.lastEvaluationError = message;
37
+ [FBLogger logFmt:@"XPath extension evaluation error: %@", message];
38
+ if (NULL == ctxt) {
39
+ return;
40
+ }
41
+ xmlXPatherror(ctxt, __FILE__, __LINE__, xpathErrorCode);
42
+ ctxt->error = xpathErrorCode;
43
+ }
44
+
45
+ static void FBXPathSetInvalidArityError(xmlXPathParserContextPtr ctxt)
46
+ {
47
+ if (NULL == ctxt) {
48
+ return;
49
+ }
50
+ xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_INVALID_ARITY);
51
+ ctxt->error = XPATH_INVALID_ARITY;
52
+ }
53
+
54
+ static BOOL FBXPathFlagsAreValid(NSString *flags, BOOL allowsQFlag)
55
+ {
56
+ if (nil == flags || 0 == flags.length) {
57
+ return YES;
58
+ }
59
+
60
+ NSString *validFlags = allowsQFlag ? @"imsxq" : @"imsx";
61
+ for (NSUInteger index = 0; index < flags.length; index++) {
62
+ unichar flag = [flags characterAtIndex:index];
63
+ if ([validFlags rangeOfString:[NSString stringWithCharacters:&flag length:1]].location == NSNotFound) {
64
+ return NO;
65
+ }
66
+ }
67
+ return YES;
68
+ }
69
+
70
+ static NSString *FBXPathStringFromUTF8Bytes(const xmlChar *bytes)
71
+ {
72
+ if (NULL == bytes) {
73
+ return nil;
74
+ }
75
+ return [NSString stringWithUTF8String:(const char *)bytes];
76
+ }
77
+
78
+ @implementation FBXPathExtensions
79
+
80
+ - (void)registerFunctionsWithContext:(xmlXPathContextPtr)xpathCtx
81
+ {
82
+ xpathCtx->userData = (__bridge void *)self;
83
+ FBRegisterXPathExtensions(xpathCtx);
84
+ }
85
+
86
+ @end
87
+
88
+ static NSString *FBXPathPopNSString(xmlXPathParserContextPtr ctxt)
89
+ {
90
+ xmlChar *value = xmlXPathPopString(ctxt);
91
+ if (NULL == value || xmlXPathCheckError(ctxt)) {
92
+ return nil;
93
+ }
94
+ NSString *result = [NSString stringWithUTF8String:(const char *)value];
95
+ xmlFree(value);
96
+ return result;
97
+ }
98
+
99
+ static NSRegularExpressionOptions FBXPathRegexOptionsFromFlags(NSString *flags)
100
+ {
101
+ NSRegularExpressionOptions options = FBXPathNoRegexOptions;
102
+ if (nil != flags && [flags rangeOfString:@"i"].location != NSNotFound) {
103
+ options |= NSRegularExpressionCaseInsensitive;
104
+ }
105
+ return options;
106
+ }
107
+
108
+ static NSRegularExpression *FBXPathRegexWithPattern(NSString *pattern,
109
+ NSString *flags,
110
+ BOOL allowsQFlag,
111
+ xmlXPathParserContextPtr ctxt)
112
+ {
113
+ if (!FBXPathFlagsAreValid(flags, allowsQFlag)) {
114
+ FBXPathSetEvaluationError(ctxt, XPATH_EXPR_ERROR, @"Invalid regular expression flags");
115
+ return nil;
116
+ }
117
+
118
+ NSError *error = nil;
119
+ NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
120
+ options:FBXPathRegexOptionsFromFlags(flags)
121
+ error:&error];
122
+ if (nil == regex) {
123
+ NSString *message = error.localizedDescription ?: @"Invalid regular expression";
124
+ FBXPathSetEvaluationError(ctxt, XPATH_EXPR_ERROR, message);
125
+ return nil;
126
+ }
127
+ return regex;
128
+ }
129
+
130
+ static BOOL FBXPathTokenizeString(NSString *input,
131
+ NSString *pattern,
132
+ xmlXPathParserContextPtr ctxt,
133
+ NSArray<NSString *> **outTokens)
134
+ {
135
+ if (0 == input.length) {
136
+ *outTokens = @[];
137
+ return YES;
138
+ }
139
+
140
+ if (nil == pattern) {
141
+ NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\S+"
142
+ options:FBXPathNoRegexOptions
143
+ error:nil];
144
+ if (nil == regex) {
145
+ FBXPathSetEvaluationError(ctxt, XPATH_EXPR_ERROR, @"Invalid regular expression");
146
+ return NO;
147
+ }
148
+ NSMutableArray<NSString *> *tokens = [NSMutableArray array];
149
+ [regex enumerateMatchesInString:input
150
+ options:FBXPathNoMatchingOptions
151
+ range:NSMakeRange(0, input.length)
152
+ usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
153
+ if (nil != result) {
154
+ [tokens addObject:[input substringWithRange:result.range]];
155
+ }
156
+ }];
157
+ *outTokens = tokens.copy;
158
+ return YES;
159
+ }
160
+
161
+ if (0 == pattern.length) {
162
+ NSMutableArray<NSString *> *tokens = [NSMutableArray array];
163
+ [input enumerateSubstringsInRange:NSMakeRange(0, input.length)
164
+ options:NSStringEnumerationByComposedCharacterSequences
165
+ usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
166
+ if (substring.length > 0) {
167
+ [tokens addObject:substring];
168
+ }
169
+ }];
170
+ *outTokens = tokens.copy;
171
+ return YES;
172
+ }
173
+
174
+ NSError *error = nil;
175
+ NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
176
+ options:FBXPathNoRegexOptions
177
+ error:&error];
178
+ if (nil == regex) {
179
+ NSString *message = error.localizedDescription ?: @"Invalid regular expression";
180
+ FBXPathSetEvaluationError(ctxt, XPATH_EXPR_ERROR, message);
181
+ return NO;
182
+ }
183
+
184
+ NSMutableArray<NSString *> *tokens = [NSMutableArray array];
185
+ __block NSUInteger lastIndex = 0;
186
+ [regex enumerateMatchesInString:input
187
+ options:FBXPathNoMatchingOptions
188
+ range:NSMakeRange(0, input.length)
189
+ usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
190
+ if (nil == result) {
191
+ return;
192
+ }
193
+ if (result.range.location > lastIndex) {
194
+ NSString *token = [input substringWithRange:NSMakeRange(lastIndex, result.range.location - lastIndex)];
195
+ if (token.length > 0) {
196
+ [tokens addObject:token];
197
+ }
198
+ }
199
+ lastIndex = NSMaxRange(result.range);
200
+ }];
201
+ if (lastIndex < input.length) {
202
+ NSString *token = [input substringFromIndex:lastIndex];
203
+ if (token.length > 0) {
204
+ [tokens addObject:token];
205
+ }
206
+ }
207
+ *outTokens = tokens.copy;
208
+ return YES;
209
+ }
210
+
211
+ static void FBXPathReturnNSString(xmlXPathParserContextPtr ctxt, NSString *value)
212
+ {
213
+ if (nil == value) {
214
+ xmlXPathReturnEmptyString(ctxt);
215
+ return;
216
+ }
217
+ xmlChar *copiedValue = xmlStrdup((const xmlChar *)[value UTF8String]);
218
+ if (NULL == copiedValue) {
219
+ xmlXPathReturnEmptyString(ctxt);
220
+ return;
221
+ }
222
+ // xmlXPathWrapString takes ownership of the buffer passed to xmlXPathReturnString.
223
+ xmlXPathReturnString(ctxt, copiedValue);
224
+ }
225
+
226
+ static NSArray<NSString *> *FBXPathPartsFromXPathObject(xmlXPathObjectPtr sequence)
227
+ {
228
+ if (sequence->type == XPATH_NODESET && NULL != sequence->nodesetval) {
229
+ NSMutableArray<NSString *> *parts = [NSMutableArray array];
230
+ for (int index = 0; index < sequence->nodesetval->nodeNr; index++) {
231
+ xmlChar *content = xmlNodeGetContent(sequence->nodesetval->nodeTab[index]);
232
+ if (NULL != content) {
233
+ NSString *part = FBXPathStringFromUTF8Bytes(content);
234
+ xmlFree(content);
235
+ if (nil != part) {
236
+ [parts addObject:part];
237
+ }
238
+ }
239
+ }
240
+ return parts.copy;
241
+ }
242
+
243
+ xmlChar *asString = xmlXPathCastToString(sequence);
244
+ if (NULL == asString) {
245
+ return @[];
246
+ }
247
+ NSString *value = FBXPathStringFromUTF8Bytes(asString);
248
+ xmlFree(asString);
249
+ if (nil == value || 0 == value.length) {
250
+ return @[];
251
+ }
252
+ if ([value rangeOfString:FBXPathTokenSequenceSeparator].location != NSNotFound) {
253
+ return [value componentsSeparatedByString:FBXPathTokenSequenceSeparator];
254
+ }
255
+ return @[value];
256
+ }
257
+
258
+ static void FBXPathMatchesFunction(xmlXPathParserContextPtr ctxt, int nargs)
259
+ {
260
+ if (nargs < 2 || nargs > 3) {
261
+ FBXPathSetInvalidArityError(ctxt);
262
+ return;
263
+ }
264
+
265
+ NSString *flags = nargs == 3 ? FBXPathPopNSString(ctxt) : nil;
266
+ NSString *pattern = FBXPathPopNSString(ctxt);
267
+ NSString *input = FBXPathPopNSString(ctxt);
268
+ if (nil == pattern || nil == input || xmlXPathCheckError(ctxt)) {
269
+ return;
270
+ }
271
+
272
+ NSRegularExpression *regex = FBXPathRegexWithPattern(pattern, flags, NO, ctxt);
273
+ if (nil == regex) {
274
+ return;
275
+ }
276
+
277
+ NSRange range = NSMakeRange(0, input.length);
278
+ NSTextCheckingResult *match = [regex firstMatchInString:input options:FBXPathNoMatchingOptions range:range];
279
+ xmlXPathReturnBoolean(ctxt, nil != match);
280
+ }
281
+
282
+ static void FBXPathEndsWithFunction(xmlXPathParserContextPtr ctxt, int nargs)
283
+ {
284
+ if (nargs != 2) {
285
+ FBXPathSetInvalidArityError(ctxt);
286
+ return;
287
+ }
288
+
289
+ NSString *suffix = FBXPathPopNSString(ctxt);
290
+ NSString *input = FBXPathPopNSString(ctxt);
291
+ if (nil == suffix || nil == input || xmlXPathCheckError(ctxt)) {
292
+ return;
293
+ }
294
+
295
+ xmlXPathReturnBoolean(ctxt, [input hasSuffix:suffix]);
296
+ }
297
+
298
+ static void FBXPathLowerCaseFunction(xmlXPathParserContextPtr ctxt, int nargs)
299
+ {
300
+ if (nargs != 1) {
301
+ FBXPathSetInvalidArityError(ctxt);
302
+ return;
303
+ }
304
+
305
+ NSString *input = FBXPathPopNSString(ctxt);
306
+ if (nil == input || xmlXPathCheckError(ctxt)) {
307
+ return;
308
+ }
309
+
310
+ FBXPathReturnNSString(ctxt, input.lowercaseString);
311
+ }
312
+
313
+ static void FBXPathUpperCaseFunction(xmlXPathParserContextPtr ctxt, int nargs)
314
+ {
315
+ if (nargs != 1) {
316
+ FBXPathSetInvalidArityError(ctxt);
317
+ return;
318
+ }
319
+
320
+ NSString *input = FBXPathPopNSString(ctxt);
321
+ if (nil == input || xmlXPathCheckError(ctxt)) {
322
+ return;
323
+ }
324
+
325
+ FBXPathReturnNSString(ctxt, input.uppercaseString);
326
+ }
327
+
328
+ static void FBXPathReplaceFunction(xmlXPathParserContextPtr ctxt, int nargs)
329
+ {
330
+ if (nargs < 3 || nargs > 4) {
331
+ FBXPathSetInvalidArityError(ctxt);
332
+ return;
333
+ }
334
+
335
+ NSString *flags = nargs == 4 ? FBXPathPopNSString(ctxt) : nil;
336
+ NSString *replacement = FBXPathPopNSString(ctxt);
337
+ NSString *pattern = FBXPathPopNSString(ctxt);
338
+ NSString *input = FBXPathPopNSString(ctxt);
339
+ if (nil == replacement || nil == pattern || nil == input || xmlXPathCheckError(ctxt)) {
340
+ return;
341
+ }
342
+
343
+ NSRegularExpression *regex = FBXPathRegexWithPattern(pattern, flags, YES, ctxt);
344
+ if (nil == regex) {
345
+ return;
346
+ }
347
+
348
+ NSRange range = NSMakeRange(0, input.length);
349
+ NSString *result = [regex stringByReplacingMatchesInString:input
350
+ options:FBXPathNoMatchingOptions
351
+ range:range
352
+ withTemplate:replacement];
353
+ FBXPathReturnNSString(ctxt, result);
354
+ }
355
+
356
+ static void FBXPathTokenizeFunction(xmlXPathParserContextPtr ctxt, int nargs)
357
+ {
358
+ if (nargs < 1 || nargs > 2) {
359
+ FBXPathSetInvalidArityError(ctxt);
360
+ return;
361
+ }
362
+
363
+ NSString *pattern = nargs == 2 ? FBXPathPopNSString(ctxt) : nil;
364
+ NSString *input = FBXPathPopNSString(ctxt);
365
+ if (nil == input || xmlXPathCheckError(ctxt)) {
366
+ return;
367
+ }
368
+
369
+ NSArray<NSString *> *tokens = nil;
370
+ if (!FBXPathTokenizeString(input, pattern, ctxt, &tokens)) {
371
+ return;
372
+ }
373
+
374
+ FBXPathReturnNSString(ctxt, [tokens componentsJoinedByString:FBXPathTokenSequenceSeparator]);
375
+ }
376
+
377
+ static void FBXPathStringJoinFunction(xmlXPathParserContextPtr ctxt, int nargs)
378
+ {
379
+ if (nargs != 2) {
380
+ FBXPathSetInvalidArityError(ctxt);
381
+ return;
382
+ }
383
+
384
+ xmlChar *separatorChars = xmlXPathPopString(ctxt);
385
+ xmlXPathObjectPtr sequence = valuePop(ctxt);
386
+ if (xmlXPathCheckError(ctxt) || NULL == sequence || NULL == separatorChars) {
387
+ if (NULL != separatorChars) {
388
+ xmlFree(separatorChars);
389
+ }
390
+ if (NULL != sequence) {
391
+ xmlXPathFreeObject(sequence);
392
+ }
393
+ return;
394
+ }
395
+
396
+ NSString *separator = FBXPathStringFromUTF8Bytes(separatorChars);
397
+ xmlFree(separatorChars);
398
+ if (nil == separator) {
399
+ xmlXPathFreeObject(sequence);
400
+ return;
401
+ }
402
+
403
+ NSArray<NSString *> *parts = FBXPathPartsFromXPathObject(sequence);
404
+ xmlXPathFreeObject(sequence);
405
+
406
+ FBXPathReturnNSString(ctxt, [parts componentsJoinedByString:separator]);
407
+ }
408
+
409
+ static void FBRegisterXPathExtensions(xmlXPathContextPtr xpathCtx)
410
+ {
411
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "matches", FBXPathMatchesFunction);
412
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "ends-with", FBXPathEndsWithFunction);
413
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "lower-case", FBXPathLowerCaseFunction);
414
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "upper-case", FBXPathUpperCaseFunction);
415
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "replace", FBXPathReplaceFunction);
416
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "tokenize", FBXPathTokenizeFunction);
417
+ xmlXPathRegisterFunc(xpathCtx, BAD_CAST "string-join", FBXPathStringJoinFunction);
418
+ }
@@ -35,11 +35,16 @@ NSArray<NSNumber *> *(*XCAXAccessibilityAttributesForStringAttributes)(id);
35
35
 
36
36
  @implementation FBXCTestSymbolsLoader
37
37
 
38
+ #pragma clang diagnostic push
39
+ #pragma clang diagnostic ignored "-Wobjc-load-method"
40
+
38
41
  + (void)load
39
42
  {
40
43
  FBLoadXCTestSymbols();
41
44
  }
42
45
 
46
+ #pragma clang diagnostic pop
47
+
43
48
  @end
44
49
 
45
50
  void FBLoadXCTestSymbols(void)
@@ -22,9 +22,7 @@
22
22
  return 0;
23
23
  }
24
24
 
25
- - (void)setOffset:(UInt64)offset {
26
- ;
27
- }
25
+ - (void)setOffset:(UInt64)offset {}
28
26
 
29
27
  - (NSData*) readDataOfLength:(NSUInteger)length {
30
28
  return nil;
@@ -9,6 +9,7 @@
9
9
  #import <XCTest/XCTest.h>
10
10
 
11
11
  #import "FBIntegrationTestCase.h"
12
+ #import "FBExceptions.h"
12
13
  #import "FBMacros.h"
13
14
  #import "FBTestMacros.h"
14
15
  #import "FBXPath.h"
@@ -51,6 +52,31 @@
51
52
  return snapshot;
52
53
  }
53
54
 
55
+ - (NSSet<NSString *> *)labelsForMatchingSnapshots:(NSArray<id<FBXCElementSnapshot>> *)matchingSnapshots
56
+ {
57
+ NSMutableSet<NSString *> *labels = [NSMutableSet set];
58
+ for (id<FBXCElementSnapshot> snapshot in matchingSnapshots) {
59
+ NSString *label = [FBXCElementSnapshotWrapper ensureWrapped:snapshot].wdLabel;
60
+ if (nil != label) {
61
+ [labels addObject:label];
62
+ }
63
+ }
64
+ return labels.copy;
65
+ }
66
+
67
+ - (void)assertXPathQuery:(NSString *)query findsButtonLabels:(NSArray<NSString *> *)expectedLabels
68
+ {
69
+ NSArray<id<FBXCElementSnapshot>> *matchingSnapshots = [FBXPath matchesWithRootElement:self.testedApplication
70
+ forQuery:query];
71
+ NSSet<NSString *> *foundLabels = [self labelsForMatchingSnapshots:matchingSnapshots];
72
+ NSSet<NSString *> *expectedLabelSet = [NSSet setWithArray:expectedLabels];
73
+ XCTAssertEqual(foundLabels.count, expectedLabelSet.count);
74
+ XCTAssertEqualObjects(foundLabels, expectedLabelSet);
75
+ for (id<FBXCElementSnapshot> snapshot in matchingSnapshots) {
76
+ XCTAssertEqualObjects([FBXCElementSnapshotWrapper ensureWrapped:snapshot].wdType, @"XCUIElementTypeButton");
77
+ }
78
+ }
79
+
54
80
  - (void)testApplicationNodeXMLRepresentation
55
81
  {
56
82
  id<FBXCElementSnapshot> snapshot = [self.testedApplication fb_customSnapshot];
@@ -154,4 +180,81 @@
154
180
  }
155
181
  }
156
182
 
183
+ - (void)testFindMatchesWithMatchesFunction
184
+ {
185
+ [self assertXPathQuery:@"//XCUIElementTypeButton[matches(@label, '^Alerts$')]"
186
+ findsButtonLabels:@[@"Alerts"]];
187
+ }
188
+
189
+ - (void)testFindMatchesWithMatchesFunctionCaseInsensitive
190
+ {
191
+ [self assertXPathQuery:@"//XCUIElementTypeButton[matches(@label, '^alerts$', 'i')]"
192
+ findsButtonLabels:@[@"Alerts"]];
193
+ }
194
+
195
+ - (void)testFindMatchesWithEndsWithFunction
196
+ {
197
+ [self assertXPathQuery:@"//XCUIElementTypeButton[ends-with(@label, 'ing')]"
198
+ findsButtonLabels:@[@"Scrolling"]];
199
+ }
200
+
201
+ - (void)testFindMatchesWithLowerCaseFunction
202
+ {
203
+ [self assertXPathQuery:@"//XCUIElementTypeButton[lower-case(@label)='alerts']"
204
+ findsButtonLabels:@[@"Alerts"]];
205
+ }
206
+
207
+ - (void)testFindMatchesWithUpperCaseFunction
208
+ {
209
+ [self assertXPathQuery:@"//XCUIElementTypeButton[upper-case(@label)='TOUCH']"
210
+ findsButtonLabels:@[@"Touch"]];
211
+ }
212
+
213
+ - (void)testFindMatchesWithReplaceFunction
214
+ {
215
+ [self assertXPathQuery:@"//XCUIElementTypeButton[replace(@label, ' ', '')='Deadlockapp']"
216
+ findsButtonLabels:@[@"Deadlock app"]];
217
+ }
218
+
219
+ - (void)testFindMatchesWithTokenizeAndStringJoinFunctions
220
+ {
221
+ [self assertXPathQuery:@"//XCUIElementTypeButton[string-join(tokenize(@label, ' '), '-')='Deadlock-app']"
222
+ findsButtonLabels:@[@"Deadlock app"]];
223
+ }
224
+
225
+ - (void)testFindMatchesWithExtensionFunctionsNoMatches
226
+ {
227
+ NSArray<id<FBXCElementSnapshot>> *matchingSnapshots = [FBXPath matchesWithRootElement:self.testedApplication
228
+ forQuery:@"//XCUIElementTypeButton[matches(@label, '^NoSuchButton$')]"];
229
+ XCTAssertEqual(matchingSnapshots.count, 0);
230
+ }
231
+
232
+ - (void)testFindMultipleMatchesWithMatchesFunction
233
+ {
234
+ [self assertXPathQuery:@"//XCUIElementTypeButton[matches(@label, '.*')]"
235
+ findsButtonLabels:@[@"Alerts", @"Deadlock app", @"Attributes", @"Scrolling", @"Touch"]];
236
+ }
237
+
238
+ - (void)testInvalidXPathExtensionFunctionViaElementLookup
239
+ {
240
+ XCTAssertThrowsSpecificNamed([self.testedView fb_descendantsMatchingXPathQuery:@"//XCUIElementTypeButton[matches(@label)]"
241
+ shouldReturnAfterFirstMatch:NO],
242
+ NSException,
243
+ FBInvalidXPathException);
244
+ }
245
+
246
+ - (void)testInvalidXPathExtensionRegexpViaElementLookup
247
+ {
248
+ NSException *exception = nil;
249
+ @try {
250
+ [self.testedView fb_descendantsMatchingXPathQuery:@"//XCUIElementTypeButton[matches(@label, '[')]"
251
+ shouldReturnAfterFirstMatch:NO];
252
+ } @catch (NSException *caughtException) {
253
+ exception = caughtException;
254
+ }
255
+ XCTAssertEqualObjects(exception.name, FBInvalidXPathException);
256
+ XCTAssertTrue([exception.reason containsString:@"Cannot evaluate results for XPath expression"]);
257
+ XCTAssertTrue([exception.reason rangeOfString:@"invalid" options:NSCaseInsensitiveSearch].location != NSNotFound);
258
+ }
259
+
157
260
  @end
@@ -152,4 +152,129 @@
152
152
  XCTAssertEqual(1, [matchingSnapshots count]);
153
153
  }
154
154
 
155
+ - (NSString *)xpathStringResultForQuery:(NSString *)query document:(xmlDocPtr)doc
156
+ {
157
+ xmlXPathObjectPtr queryResult = [FBXPath evaluate:query document:doc contextNode:NULL];
158
+ if (NULL == queryResult) {
159
+ return nil;
160
+ }
161
+ xmlChar *stringValue = xmlXPathCastToString(queryResult);
162
+ xmlXPathFreeObject(queryResult);
163
+ if (NULL == stringValue) {
164
+ return nil;
165
+ }
166
+ NSString *result = [NSString stringWithUTF8String:(const char *)stringValue];
167
+ xmlFree(stringValue);
168
+ return result;
169
+ }
170
+
171
+ - (BOOL)xpathBooleanResultForQuery:(NSString *)query document:(xmlDocPtr)doc
172
+ {
173
+ xmlXPathObjectPtr queryResult = [FBXPath evaluate:query document:doc contextNode:NULL];
174
+ if (NULL == queryResult) {
175
+ return NO;
176
+ }
177
+ BOOL result = queryResult->boolval;
178
+ xmlXPathFreeObject(queryResult);
179
+ return result;
180
+ }
181
+
182
+ - (xmlDocPtr)documentForSnapshot:(XCElementSnapshotDouble *)snapshot query:(NSString *)query
183
+ {
184
+ xmlDocPtr doc;
185
+ xmlTextWriterPtr writer = xmlNewTextWriterDoc(&doc, 0);
186
+ NSMutableDictionary *elementStore = [NSMutableDictionary dictionary];
187
+ id<FBElement> root = (id<FBElement>)[FBXCElementSnapshotWrapper ensureWrapped:(id)snapshot];
188
+ int rc = xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL);
189
+ if (rc >= 0) {
190
+ rc = [FBXPath xmlRepresentationWithRootElement:(id<FBXCElementSnapshot>)root
191
+ writer:writer
192
+ elementStore:elementStore
193
+ query:query
194
+ excludingAttributes:nil];
195
+ if (rc >= 0) {
196
+ rc = xmlTextWriterEndDocument(writer);
197
+ }
198
+ }
199
+ xmlFreeTextWriter(writer);
200
+ XCTAssertTrue(rc >= 0);
201
+ return doc;
202
+ }
203
+
204
+ - (void)testXPathExtensionFunctions
205
+ {
206
+ XCElementSnapshotDouble *snapshot = [XCElementSnapshotDouble new];
207
+ snapshot.label = @"Hello World";
208
+ snapshot.value = @"One-Two-Three";
209
+
210
+ xmlDocPtr doc = [self documentForSnapshot:snapshot query:@"//*[@label and @name and @value]"];
211
+
212
+ @try {
213
+ XCTAssertTrue([self xpathBooleanResultForQuery:@"matches(//XCUIElementTypeOther/@label, 'Hello.*')" document:doc]);
214
+ XCTAssertFalse([self xpathBooleanResultForQuery:@"matches(//XCUIElementTypeOther/@label, 'hello.*')" document:doc]);
215
+ XCTAssertTrue([self xpathBooleanResultForQuery:@"matches(//XCUIElementTypeOther/@label, 'hello.*', 'i')" document:doc]);
216
+ XCTAssertTrue([self xpathBooleanResultForQuery:@"ends-with(//XCUIElementTypeOther/@name, 'Name')" document:doc]);
217
+ XCTAssertFalse([self xpathBooleanResultForQuery:@"ends-with(//XCUIElementTypeOther/@name, 'Foo')" document:doc]);
218
+ XCTAssertEqualObjects([self xpathStringResultForQuery:@"lower-case(//XCUIElementTypeOther/@label)" document:doc], @"hello world");
219
+ XCTAssertEqualObjects([self xpathStringResultForQuery:@"upper-case(//XCUIElementTypeOther/@name)" document:doc], @"TESTNAME");
220
+ XCTAssertEqualObjects([self xpathStringResultForQuery:@"replace(//XCUIElementTypeOther/@value, '-', '_')" document:doc], @"One_Two_Three");
221
+ XCTAssertEqualObjects([self xpathStringResultForQuery:@"string-join(tokenize(//XCUIElementTypeOther/@value, '-'), '|')" document:doc], @"One|Two|Three");
222
+ } @finally {
223
+ xmlFreeDoc(doc);
224
+ }
225
+ }
226
+
227
+ - (void)testInvalidXPathExtensionRegexp
228
+ {
229
+ XCElementSnapshotDouble *snapshot = [XCElementSnapshotDouble new];
230
+ snapshot.label = @"Hello World";
231
+ snapshot.value = @"One-Two-Three";
232
+
233
+ xmlDocPtr doc = [self documentForSnapshot:snapshot query:@"//*[@label and @name and @value]"];
234
+
235
+ @try {
236
+ [self assertXPathEvaluationFailsForQuery:@"matches(//XCUIElementTypeOther/@label, '[')" document:doc];
237
+ [self assertXPathEvaluationFailsForQuery:@"replace(//XCUIElementTypeOther/@label, '[', '')" document:doc];
238
+ [self assertXPathEvaluationFailsForQuery:@"tokenize(//XCUIElementTypeOther/@value, '[')" document:doc];
239
+ [self assertXPathEvaluationFailsForQuery:@"matches(//XCUIElementTypeOther/@label, 'a', 'z')" document:doc];
240
+ [self assertXPathEvaluationFailsForQuery:@"//XCUIElementTypeOther[matches(@label, '[')]" document:doc];
241
+ } @finally {
242
+ xmlFreeDoc(doc);
243
+ }
244
+ }
245
+
246
+ - (void)assertXPathEvaluationFailsForQuery:(NSString *)query document:(xmlDocPtr)doc
247
+ {
248
+ xmlXPathObjectPtr queryResult = [FBXPath evaluate:query document:doc contextNode:NULL];
249
+ @try {
250
+ XCTAssertEqual(NULL, queryResult);
251
+ } @finally {
252
+ if (NULL != queryResult) {
253
+ xmlXPathFreeObject(queryResult);
254
+ }
255
+ }
256
+ }
257
+
258
+ - (void)testInvalidXPathExtensionFunctionArity
259
+ {
260
+ XCElementSnapshotDouble *snapshot = [XCElementSnapshotDouble new];
261
+ snapshot.label = @"Hello World";
262
+ snapshot.value = @"One-Two-Three";
263
+
264
+ xmlDocPtr doc = [self documentForSnapshot:snapshot query:@"//*[@label and @name and @value]"];
265
+
266
+ @try {
267
+ [self assertXPathEvaluationFailsForQuery:@"matches(//XCUIElementTypeOther/@label)" document:doc];
268
+ [self assertXPathEvaluationFailsForQuery:@"lower-case()" document:doc];
269
+ [self assertXPathEvaluationFailsForQuery:@"string-join(//XCUIElementTypeOther/@label)" document:doc];
270
+ [self assertXPathEvaluationFailsForQuery:@"replace(//XCUIElementTypeOther/@label, '-')" document:doc];
271
+ [self assertXPathEvaluationFailsForQuery:@"//XCUIElementTypeOther[matches(@label)]" document:doc];
272
+ [self assertXPathEvaluationFailsForQuery:@"//XCUIElementTypeOther[lower-case()]" document:doc];
273
+ [self assertXPathEvaluationFailsForQuery:@"//XCUIElementTypeOther[string-join(@label)]" document:doc];
274
+ [self assertXPathEvaluationFailsForQuery:@"//XCUIElementTypeOther[replace(@label, '-')]" document:doc];
275
+ } @finally {
276
+ xmlFreeDoc(doc);
277
+ }
278
+ }
279
+
155
280
  @end
@@ -1 +1 @@
1
- {"version":3,"file":"xcodebuild.d.ts","sourceRoot":"","sources":["../../lib/xcodebuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xcodebuild.d.ts","sourceRoot":"","sources":["../../lib/xcodebuild.ts"],"names":[],"mappings":"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"}
@@ -144,7 +144,10 @@ class XcodeBuild {
144
144
  if (this.derivedDataPath) {
145
145
  return this.derivedDataPath;
146
146
  }
147
- const buildSettings = await this.retrieveBuildSettings();
147
+ // iOS/tvOS share the same derived data path
148
+ const buildSettings = await this.retrieveBuildSettings({
149
+ scheme: 'WebDriverAgentRunner',
150
+ });
148
151
  const buildDir = buildSettings?.BUILD_DIR;
149
152
  if (!buildDir) {
150
153
  this.log.warn('Cannot parse WDA BUILD_DIR from build settings');
@@ -1 +1 @@
1
- {"version":3,"file":"xcodebuild.js","sourceRoot":"","sources":["../../lib/xcodebuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xcodebuild.js","sourceRoot":"","sources":["../../lib/xcodebuild.ts"],"names":[],"mappings":"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"}
package/lib/xcodebuild.ts CHANGED
@@ -190,7 +190,10 @@ export class XcodeBuild {
190
190
  return this.derivedDataPath;
191
191
  }
192
192
 
193
- const buildSettings = await this.retrieveBuildSettings();
193
+ // iOS/tvOS share the same derived data path
194
+ const buildSettings = await this.retrieveBuildSettings({
195
+ scheme: 'WebDriverAgentRunner',
196
+ });
194
197
  const buildDir = buildSettings?.BUILD_DIR;
195
198
  if (!buildDir) {
196
199
  this.log.warn('Cannot parse WDA BUILD_DIR from build settings');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-webdriveragent",
3
- "version": "13.1.2",
3
+ "version": "13.2.0",
4
4
  "description": "Package bundling WebDriverAgent",
5
5
  "main": "./build/lib/index.js",
6
6
  "types": "./build/lib/index.d.ts",