appium-webdriveragent 3.15.0 → 3.15.1

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.
Files changed (30) hide show
  1. package/PrivateHeaders/.DS_Store +0 -0
  2. package/WebDriverAgent.xcodeproj/project.pbxproj +24 -0
  3. package/WebDriverAgent.xcodeproj/project.xcworkspace/xcuserdata/elf.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  4. package/WebDriverAgent.xcodeproj/xcuserdata/elf.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +91 -0
  5. package/WebDriverAgent.xcodeproj/xcuserdata/{kazuaki.xcuserdatad → elf.xcuserdatad}/xcschemes/xcschememanagement.plist +12 -35
  6. package/WebDriverAgentLib/.DS_Store +0 -0
  7. package/WebDriverAgentLib/Categories/XCUIApplication+FBUIInterruptions.h +23 -0
  8. package/WebDriverAgentLib/Categories/XCUIApplication+FBUIInterruptions.m +32 -0
  9. package/WebDriverAgentLib/Utilities/FBConfiguration.h +5 -0
  10. package/WebDriverAgentLib/Utilities/FBConfiguration.m +6 -0
  11. package/WebDriverAgentLib/Utilities/FBReflectionUtils.h +24 -0
  12. package/WebDriverAgentLib/Utilities/FBReflectionUtils.m +32 -0
  13. package/WebDriverAgentLib/Utilities/FBXCAXClientProxy.m +5 -23
  14. package/WebDriverAgentLib/Utilities/LRUCache/.DS_Store +0 -0
  15. package/WebDriverAgentLib/Vendor/.DS_Store +0 -0
  16. package/WebDriverAgentRunner/.DS_Store +0 -0
  17. package/WebDriverAgentRunner/UITestingUITests.m +1 -0
  18. package/WebDriverAgentRunner-Runner.app.zip +0 -0
  19. package/WebDriverAgentTests/IntegrationApp/Resources/.DS_Store +0 -0
  20. package/WebDriverAgentTests/IntegrationTests/FBAlertTests.m +1 -0
  21. package/build/index.js +4 -6
  22. package/build/lib/check-dependencies.js +1 -1
  23. package/build/lib/constants.js +1 -1
  24. package/build/lib/utils.js +10 -10
  25. package/build/lib/webdriveragent.js +2 -2
  26. package/build/lib/xcodebuild.js +1 -1
  27. package/package.json +1 -1
  28. package/WebDriverAgent.xcodeproj/project.xcworkspace/xcuserdata/kazuaki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  29. package/WebDriverAgent.xcodeproj/project.xcworkspace/xcuserdata/kazuaki.xcuserdatad/WorkspaceSettings.xcsettings +0 -20
  30. package/WebDriverAgent.xcodeproj/xcuserdata/kazuaki.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -2322
Binary file
@@ -386,6 +386,14 @@
386
386
  71649ECE2518C19C0087F212 /* IOSTestSettings.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 71649EC82518C19C0087F212 /* IOSTestSettings.xcconfig */; };
387
387
  716C9346224D540C004B8542 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 716C9345224D540C004B8542 /* libxml2.tbd */; };
388
388
  716C9347224D540C004B8542 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 716C9345224D540C004B8542 /* libxml2.tbd */; };
389
+ 716C9DFA27315D21005AD475 /* FBReflectionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 716C9DF827315D21005AD475 /* FBReflectionUtils.h */; };
390
+ 716C9DFB27315D21005AD475 /* FBReflectionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 716C9DF827315D21005AD475 /* FBReflectionUtils.h */; };
391
+ 716C9DFC27315D21005AD475 /* FBReflectionUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 716C9DF927315D21005AD475 /* FBReflectionUtils.m */; };
392
+ 716C9DFD27315D21005AD475 /* FBReflectionUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 716C9DF927315D21005AD475 /* FBReflectionUtils.m */; };
393
+ 716C9E0027315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 716C9DFE27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h */; };
394
+ 716C9E0127315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 716C9DFE27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h */; };
395
+ 716C9E0227315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 716C9DFF27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m */; };
396
+ 716C9E0327315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 716C9DFF27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m */; };
389
397
  716E0BCE1E917E810087A825 /* NSString+FBXMLSafeString.h in Headers */ = {isa = PBXBuildFile; fileRef = 716E0BCC1E917E810087A825 /* NSString+FBXMLSafeString.h */; };
390
398
  716E0BCF1E917E810087A825 /* NSString+FBXMLSafeString.m in Sources */ = {isa = PBXBuildFile; fileRef = 716E0BCD1E917E810087A825 /* NSString+FBXMLSafeString.m */; };
391
399
  716E0BD11E917F260087A825 /* FBXMLSafeStringTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 716E0BD01E917F260087A825 /* FBXMLSafeStringTests.m */; };
@@ -992,6 +1000,10 @@
992
1000
  716C9343224D53DF004B8542 /* libAccessibility.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libAccessibility.tbd; path = usr/lib/libAccessibility.tbd; sourceTree = SDKROOT; };
993
1001
  716C9344224D53FC004B8542 /* XCTAutomationSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTAutomationSupport.framework; path = Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/XCTAutomationSupport.framework; sourceTree = DEVELOPER_DIR; };
994
1002
  716C9345224D540C004B8542 /* libxml2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libxml2.tbd; path = usr/lib/libxml2.tbd; sourceTree = SDKROOT; };
1003
+ 716C9DF827315D21005AD475 /* FBReflectionUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBReflectionUtils.h; sourceTree = "<group>"; };
1004
+ 716C9DF927315D21005AD475 /* FBReflectionUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBReflectionUtils.m; sourceTree = "<group>"; };
1005
+ 716C9DFE27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XCUIApplication+FBUIInterruptions.h"; sourceTree = "<group>"; };
1006
+ 716C9DFF27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "XCUIApplication+FBUIInterruptions.m"; sourceTree = "<group>"; };
995
1007
  716E0BCC1E917E810087A825 /* NSString+FBXMLSafeString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+FBXMLSafeString.h"; sourceTree = "<group>"; };
996
1008
  716E0BCD1E917E810087A825 /* NSString+FBXMLSafeString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+FBXMLSafeString.m"; sourceTree = "<group>"; };
997
1009
  716E0BD01E917F260087A825 /* FBXMLSafeStringTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBXMLSafeStringTests.m; sourceTree = "<group>"; };
@@ -1725,6 +1737,8 @@
1725
1737
  AD6C269B1CF2494200F8B5FF /* XCUIApplication+FBHelpers.m */,
1726
1738
  71C8E54F25399A6B008572C1 /* XCUIApplication+FBQuiescence.h */,
1727
1739
  71C8E55025399A6B008572C1 /* XCUIApplication+FBQuiescence.m */,
1740
+ 716C9DFE27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h */,
1741
+ 716C9DFF27315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m */,
1728
1742
  71D475C02538F5A8008D9401 /* XCUIApplicationProcess+FBQuiescence.h */,
1729
1743
  71D475C12538F5A8008D9401 /* XCUIApplicationProcess+FBQuiescence.m */,
1730
1744
  EEC9EED420064FAA00BC0D5B /* XCUICoordinate+FBFix.h */,
@@ -1899,6 +1913,8 @@
1899
1913
  EEEC7C911F21F27A0053426C /* FBPredicate.m */,
1900
1914
  71B155DD23080CA600646AFB /* FBProtocolHelpers.h */,
1901
1915
  71B155DE23080CA600646AFB /* FBProtocolHelpers.m */,
1916
+ 716C9DF827315D21005AD475 /* FBReflectionUtils.h */,
1917
+ 716C9DF927315D21005AD475 /* FBReflectionUtils.m */,
1902
1918
  EEE9B4701CD02B88009D2030 /* FBRunLoopSpinner.h */,
1903
1919
  EEE9B4711CD02B88009D2030 /* FBRunLoopSpinner.m */,
1904
1920
  EE9AB7911CAEDF0C008C271F /* FBRuntimeUtils.h */,
@@ -2247,6 +2263,7 @@
2247
2263
  641EE6352240C5CA00173FCB /* XCUIElement+FBUtilities.h in Headers */,
2248
2264
  641EE6362240C5CA00173FCB /* XCUIElement+FBScrolling.h in Headers */,
2249
2265
  1357E297233D05240054BDB8 /* XCUIHitPointResult.h in Headers */,
2266
+ 716C9DFB27315D21005AD475 /* FBReflectionUtils.h in Headers */,
2250
2267
  641EE6372240C5CA00173FCB /* XCSourceCodeTreeNode.h in Headers */,
2251
2268
  641EE6382240C5CA00173FCB /* XCPointerEventPath.h in Headers */,
2252
2269
  641EE6392240C5CA00173FCB /* FBRouteRequest.h in Headers */,
@@ -2312,6 +2329,7 @@
2312
2329
  641EE66C2240C5CA00173FCB /* UIPinchGestureRecognizer-RecordingAdditions.h in Headers */,
2313
2330
  641EE66D2240C5CA00173FCB /* XCTestManager_TestsInterface-Protocol.h in Headers */,
2314
2331
  641EE66E2240C5CA00173FCB /* XCUIApplication+FBAlert.h in Headers */,
2332
+ 716C9E0127315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h in Headers */,
2315
2333
  7182275C258744C300661B83 /* HTTPServer.h in Headers */,
2316
2334
  641EE66F2240C5CA00173FCB /* XCDeviceEvent.h in Headers */,
2317
2335
  641EE6702240C5CA00173FCB /* FBMathUtils.h in Headers */,
@@ -2485,6 +2503,7 @@
2485
2503
  71F5BE4F252F14EB00EE9EBA /* FBExceptions.h in Headers */,
2486
2504
  648C10AB22AAAD9C00B81B9A /* UIKeyboardImpl.h in Headers */,
2487
2505
  EE35AD401E3B77D600A02D78 /* XCTest.h in Headers */,
2506
+ 716C9E0027315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h in Headers */,
2488
2507
  719CD8F82126C78F00C7D0C2 /* FBAlertsMonitor.h in Headers */,
2489
2508
  EE35AD241E3B77D600A02D78 /* XCAccessibilityElement.h in Headers */,
2490
2509
  EE158AE41CBD456F00A3E3F0 /* FBSession.h in Headers */,
@@ -2688,6 +2707,7 @@
2688
2707
  EE35AD151E3B77D600A02D78 /* CDStructures.h in Headers */,
2689
2708
  71E75E6D254824230099FC87 /* XCUIElementQuery+FBHelpers.h in Headers */,
2690
2709
  EE35AD311E3B77D600A02D78 /* XCKeyboardLayout.h in Headers */,
2710
+ 716C9DFA27315D21005AD475 /* FBReflectionUtils.h in Headers */,
2691
2711
  E444DCB624913C220060D7EB /* RouteRequest.h in Headers */,
2692
2712
  71F5BE23252E576C00EE9EBA /* XCUIElement+FBSwiping.h in Headers */,
2693
2713
  718226CC2587443700661B83 /* GCDAsyncSocket.h in Headers */,
@@ -3120,6 +3140,7 @@
3120
3140
  641EE5FD2240C5CA00173FCB /* FBBaseActionsSynthesizer.m in Sources */,
3121
3141
  641EE5FE2240C5CA00173FCB /* XCUIElement+FBWebDriverAttributes.m in Sources */,
3122
3142
  641EE5FF2240C5CA00173FCB /* XCUIElement+FBForceTouch.m in Sources */,
3143
+ 716C9E0327315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m in Sources */,
3123
3144
  641EE6002240C5CA00173FCB /* FBTouchActionCommands.m in Sources */,
3124
3145
  719DCF182601EAFB000E765F /* FBNotificationsHelper.m in Sources */,
3125
3146
  714EAA102673FDFE005C5B47 /* FBCapabilities.m in Sources */,
@@ -3154,6 +3175,7 @@
3154
3175
  641EE61B2240C5CA00173FCB /* FBPasteboard.m in Sources */,
3155
3176
  641EE61C2240C5CA00173FCB /* FBAlert.m in Sources */,
3156
3177
  718F49CB23087B040045FE8B /* FBCommandStatus.m in Sources */,
3178
+ 716C9DFD27315D21005AD475 /* FBReflectionUtils.m in Sources */,
3157
3179
  641EE61D2240C5CA00173FCB /* FBElementCommands.m in Sources */,
3158
3180
  641EE61E2240C5CA00173FCB /* FBExceptionHandler.m in Sources */,
3159
3181
  641EE61F2240C5CA00173FCB /* FBXCodeCompatibility.m in Sources */,
@@ -3253,6 +3275,7 @@
3253
3275
  EE9B76A91CF7A43900275851 /* FBLogger.m in Sources */,
3254
3276
  EE158ABB1CBD456F00A3E3F0 /* FBCustomCommands.m in Sources */,
3255
3277
  AD6C26991CF2481700F8B5FF /* XCUIDevice+FBHelpers.m in Sources */,
3278
+ 716C9E0227315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m in Sources */,
3256
3279
  EE6B64FE1D0F86EF00E85F5D /* XCTestPrivateSymbols.m in Sources */,
3257
3280
  AD76723E1D6B7CC000610457 /* XCUIElement+FBTyping.m in Sources */,
3258
3281
  EE158AAF1CBD456F00A3E3F0 /* XCUIElement+FBAccessibility.m in Sources */,
@@ -3265,6 +3288,7 @@
3265
3288
  E444DCB224913C220060D7EB /* RoutingConnection.m in Sources */,
3266
3289
  EE158AC11CBD456F00A3E3F0 /* FBFindElementCommands.m in Sources */,
3267
3290
  EE7E271D1D06C69F001BEC7B /* FBDebugLogDelegateDecorator.m in Sources */,
3291
+ 716C9DFC27315D21005AD475 /* FBReflectionUtils.m in Sources */,
3268
3292
  71C8E55325399A6B008572C1 /* XCUIApplication+FBQuiescence.m in Sources */,
3269
3293
  71414EDA2670A1EE003A8C5D /* LRUCacheNode.m in Sources */,
3270
3294
  EE158AB91CBD456F00A3E3F0 /* FBAlertViewCommands.m in Sources */,
@@ -0,0 +1,91 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Bucket
3
+ uuid = "2F0174F2-ED3F-4D11-9A17-7C590053D796"
4
+ type = "1"
5
+ version = "2.0">
6
+ <Breakpoints>
7
+ <BreakpointProxy
8
+ BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
9
+ <BreakpointContent
10
+ uuid = "471ECA8C-2C53-4C59-88DB-1C1CB3D61601"
11
+ shouldBeEnabled = "No"
12
+ ignoreCount = "0"
13
+ continueAfterRunningActions = "No"
14
+ breakpointStackSelectionBehavior = "1"
15
+ scope = "1"
16
+ stopOnStyle = "0">
17
+ </BreakpointContent>
18
+ </BreakpointProxy>
19
+ <BreakpointProxy
20
+ BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
21
+ <BreakpointContent
22
+ uuid = "C2E06865-6A52-4686-9771-279AF13ABF8A"
23
+ shouldBeEnabled = "Yes"
24
+ ignoreCount = "0"
25
+ continueAfterRunningActions = "No"
26
+ filePath = "WebDriverAgentLib/Categories/XCUIElement+FBUtilities.m"
27
+ timestampString = "0"
28
+ startingColumnNumber = "9223372036854775807"
29
+ endingColumnNumber = "9223372036854775807"
30
+ startingLineNumber = "264"
31
+ endingLineNumber = "264">
32
+ </BreakpointContent>
33
+ </BreakpointProxy>
34
+ <BreakpointProxy
35
+ BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
36
+ <BreakpointContent
37
+ uuid = "54216FE6-E240-47F1-88D3-D450CF0AF44E"
38
+ shouldBeEnabled = "Yes"
39
+ ignoreCount = "0"
40
+ continueAfterRunningActions = "No"
41
+ filePath = "WebDriverAgentLib/Categories/XCUIElement+FBResolve.m"
42
+ startingColumnNumber = "9223372036854775807"
43
+ endingColumnNumber = "9223372036854775807"
44
+ startingLineNumber = "37"
45
+ endingLineNumber = "37"
46
+ landmarkName = "-fb_stableInstance"
47
+ landmarkType = "7">
48
+ <Locations>
49
+ <Location
50
+ uuid = "54216FE6-E240-47F1-88D3-D450CF0AF44E - b09f4ce1ce926e6"
51
+ shouldBeEnabled = "Yes"
52
+ ignoreCount = "0"
53
+ continueAfterRunningActions = "No"
54
+ symbolName = "-[XCUIElement(FBResolve) fb_stableInstance]"
55
+ moduleName = "WebDriverAgentLib"
56
+ usesParentBreakpointCondition = "Yes"
57
+ urlString = "file:///Users/elf/code/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBResolve.m"
58
+ startingColumnNumber = "9223372036854775807"
59
+ endingColumnNumber = "9223372036854775807"
60
+ startingLineNumber = "37"
61
+ endingLineNumber = "37"
62
+ offsetFromSymbolStart = "19">
63
+ </Location>
64
+ <Location
65
+ shouldBeEnabled = "Yes"
66
+ ignoreCount = "0"
67
+ continueAfterRunningActions = "No"
68
+ usesParentBreakpointCondition = "Yes"
69
+ offsetFromSymbolStart = "0">
70
+ </Location>
71
+ </Locations>
72
+ </BreakpointContent>
73
+ </BreakpointProxy>
74
+ <BreakpointProxy
75
+ BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
76
+ <BreakpointContent
77
+ uuid = "D3009B57-42BC-4905-99BC-70232544FAFB"
78
+ shouldBeEnabled = "Yes"
79
+ ignoreCount = "0"
80
+ continueAfterRunningActions = "No"
81
+ filePath = "WebDriverAgentTests/IntegrationTests/FBAlertTests.m"
82
+ startingColumnNumber = "5"
83
+ endingColumnNumber = "64"
84
+ startingLineNumber = "32"
85
+ endingLineNumber = "32"
86
+ landmarkName = "-setUp"
87
+ landmarkType = "7">
88
+ </BreakpointContent>
89
+ </BreakpointProxy>
90
+ </Breakpoints>
91
+ </Bucket>
@@ -4,78 +4,55 @@
4
4
  <dict>
5
5
  <key>SchemeUserState</key>
6
6
  <dict>
7
- <key>IntegrationApp.xcscheme</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>3</integer>
11
- </dict>
12
7
  <key>IntegrationApp.xcscheme_^#shared#^_</key>
13
8
  <dict>
14
9
  <key>orderHint</key>
15
- <integer>5</integer>
10
+ <integer>0</integer>
16
11
  </dict>
17
12
  <key>IntegrationTests_1.xcscheme_^#shared#^_</key>
18
13
  <dict>
19
14
  <key>orderHint</key>
20
- <integer>6</integer>
15
+ <integer>1</integer>
21
16
  </dict>
22
17
  <key>IntegrationTests_2.xcscheme_^#shared#^_</key>
23
18
  <dict>
24
19
  <key>orderHint</key>
25
- <integer>7</integer>
20
+ <integer>2</integer>
26
21
  </dict>
27
22
  <key>IntegrationTests_3.xcscheme_^#shared#^_</key>
28
23
  <dict>
29
24
  <key>orderHint</key>
30
- <integer>8</integer>
25
+ <integer>3</integer>
31
26
  </dict>
32
- <key>WebDriverAgentLib.xcscheme_^#shared#^_</key>
27
+ <key>WebDriverAgentLib copy.xcscheme_^#shared#^_</key>
33
28
  <dict>
34
29
  <key>orderHint</key>
35
- <integer>0</integer>
30
+ <integer>9</integer>
36
31
  </dict>
37
- <key>WebDriverAgentLib_tvOS copy.xcscheme_^#shared#^_</key>
32
+ <key>WebDriverAgentLib.xcscheme_^#shared#^_</key>
38
33
  <dict>
39
34
  <key>orderHint</key>
40
- <integer>10</integer>
35
+ <integer>4</integer>
41
36
  </dict>
42
37
  <key>WebDriverAgentLib_tvOS.xcscheme_^#shared#^_</key>
43
38
  <dict>
44
39
  <key>orderHint</key>
45
- <integer>3</integer>
46
- </dict>
47
- <key>WebDriverAgentLib_watchOS.xcscheme_^#shared#^_</key>
48
- <dict>
49
- <key>orderHint</key>
50
- <integer>10</integer>
40
+ <integer>5</integer>
51
41
  </dict>
52
42
  <key>WebDriverAgentRunner-nodebug.xcscheme_^#shared#^_</key>
53
43
  <dict>
54
44
  <key>orderHint</key>
55
- <integer>2</integer>
45
+ <integer>7</integer>
56
46
  </dict>
57
47
  <key>WebDriverAgentRunner.xcscheme_^#shared#^_</key>
58
48
  <dict>
59
49
  <key>orderHint</key>
60
- <integer>1</integer>
50
+ <integer>6</integer>
61
51
  </dict>
62
52
  <key>WebDriverAgentRunner_tvOS.xcscheme_^#shared#^_</key>
63
53
  <dict>
64
54
  <key>orderHint</key>
65
- <integer>4</integer>
66
- </dict>
67
- <key>WebDriverAgentRunner_watchOS.xcscheme_^#shared#^_</key>
68
- <dict>
69
- <key>orderHint</key>
70
- <integer>9</integer>
71
- </dict>
72
- </dict>
73
- <key>SuppressBuildableAutocreation</key>
74
- <dict>
75
- <key>72F9A2AB26B5121A00A27636</key>
76
- <dict>
77
- <key>primary</key>
78
- <true/>
55
+ <integer>8</integer>
79
56
  </dict>
80
57
  </dict>
81
58
  </dict>
Binary file
@@ -0,0 +1,23 @@
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. An additional grant
7
+ * of patent rights can be found in the PATENTS file in the same directory.
8
+ */
9
+
10
+ #import <XCTest/XCTest.h>
11
+
12
+ NS_ASSUME_NONNULL_BEGIN
13
+
14
+ @interface XCUIApplication (FBUIInterruptions)
15
+
16
+ /**
17
+ * Disables automatic UI interruptions handling for all applications.
18
+ */
19
+ + (void)fb_disableUIInterruptionsHandling;
20
+
21
+ @end
22
+
23
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,32 @@
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. An additional grant
7
+ * of patent rights can be found in the PATENTS file in the same directory.
8
+ */
9
+
10
+ #import "XCUIApplication+FBUIInterruptions.h"
11
+
12
+ #import "FBReflectionUtils.h"
13
+ #import "XCUIApplication.h"
14
+
15
+ @implementation XCUIApplication (FBUIInterruptions)
16
+
17
+ - (BOOL)fb_doesNotHandleUIInterruptions
18
+ {
19
+ return YES;
20
+ }
21
+
22
+ + (void)fb_disableUIInterruptionsHandling
23
+ {
24
+ static dispatch_once_t onceToken;
25
+ dispatch_once(&onceToken, ^{
26
+ FBReplaceMethod([self class],
27
+ @selector(doesNotHandleUIInterruptions),
28
+ @selector(fb_doesNotHandleUIInterruptions));
29
+ });
30
+ }
31
+
32
+ @end
@@ -118,6 +118,11 @@ extern NSString *const FBSnapshotMaxDepthKey;
118
118
  */
119
119
  + (BOOL)verboseLoggingEnabled;
120
120
 
121
+ /**
122
+ Disables automatic handling of XCTest UI interruptions.
123
+ */
124
+ + (void)disableApplicationUIInterruptionsHandling;
125
+
121
126
  /**
122
127
  * Configure keyboards preference to make test running stable
123
128
  */
@@ -17,6 +17,7 @@
17
17
  #import "XCTestPrivateSymbols.h"
18
18
  #import "XCElementSnapshot.h"
19
19
  #import "XCTestConfiguration.h"
20
+ #import "XCUIApplication+FBUIInterruptions.h"
20
21
 
21
22
  static NSUInteger const DefaultStartingPort = 8100;
22
23
  static NSUInteger const DefaultMjpegServerPort = 9100;
@@ -74,6 +75,11 @@ static UIInterfaceOrientation FBScreenshotOrientation = UIInterfaceOrientationUn
74
75
  [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"XCTDisableRemoteQueryEvaluation"];
75
76
  }
76
77
 
78
+ + (void)disableApplicationUIInterruptionsHandling
79
+ {
80
+ [XCUIApplication fb_disableUIInterruptionsHandling];
81
+ }
82
+
77
83
  + (void)enableXcTestDebugLogs
78
84
  {
79
85
  ((XCTestConfiguration *)XCTestConfiguration.activeTestConfiguration).emitOSLogs = YES;
@@ -0,0 +1,24 @@
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. An additional grant
7
+ * of patent rights can be found in the PATENTS file in the same directory.
8
+ */
9
+
10
+ #import <Foundation/Foundation.h>
11
+
12
+ NS_ASSUME_NONNULL_BEGIN
13
+
14
+ /**
15
+ * Swizzles the implemntation of originalSelector with the swizzledSelector for the given class.
16
+ * Both methods must belong to this class.
17
+ *
18
+ * @param cls The class where to swizzle
19
+ * @param originalSelector original method selector
20
+ * @paramswizzledSelector swizzled method selector
21
+ */
22
+ void FBReplaceMethod(Class cls, SEL originalSelector, SEL swizzledSelector);
23
+
24
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,32 @@
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. An additional grant
7
+ * of patent rights can be found in the PATENTS file in the same directory.
8
+ */
9
+
10
+ #import "FBReflectionUtils.h"
11
+
12
+ #import <objc/runtime.h>
13
+
14
+ void FBReplaceMethod(Class class, SEL originalSelector, SEL swizzledSelector) {
15
+ Method originalMethod = class_getInstanceMethod(class, originalSelector);
16
+ Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
17
+
18
+ BOOL didAddMethod =
19
+ class_addMethod(class,
20
+ originalSelector,
21
+ method_getImplementation(swizzledMethod),
22
+ method_getTypeEncoding(swizzledMethod));
23
+
24
+ if (didAddMethod) {
25
+ class_replaceMethod(class,
26
+ swizzledSelector,
27
+ method_getImplementation(originalMethod),
28
+ method_getTypeEncoding(originalMethod));
29
+ } else {
30
+ method_exchangeImplementations(originalMethod, swizzledMethod);
31
+ }
32
+ }
@@ -13,9 +13,10 @@
13
13
 
14
14
  #import "FBConfiguration.h"
15
15
  #import "FBLogger.h"
16
+ #import "FBMacros.h"
17
+ #import "FBReflectionUtils.h"
16
18
  #import "XCAXClient_iOS.h"
17
19
  #import "XCUIDevice.h"
18
- #import "FBMacros.h"
19
20
 
20
21
  static id FBAXClient = nil;
21
22
 
@@ -35,28 +36,9 @@ static id FBAXClient = nil;
35
36
  {
36
37
  static dispatch_once_t onceToken;
37
38
  dispatch_once(&onceToken, ^{
38
- Class class = [self class];
39
-
40
- SEL originalSelector = @selector(defaultParameters);
41
- SEL swizzledSelector = @selector(fb_getParametersForElementSnapshot);
42
-
43
- Method originalMethod = class_getInstanceMethod(class, originalSelector);
44
- Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
45
-
46
- BOOL didAddMethod =
47
- class_addMethod(class,
48
- originalSelector,
49
- method_getImplementation(swizzledMethod),
50
- method_getTypeEncoding(swizzledMethod));
51
-
52
- if (didAddMethod) {
53
- class_replaceMethod(class,
54
- swizzledSelector,
55
- method_getImplementation(originalMethod),
56
- method_getTypeEncoding(originalMethod));
57
- } else {
58
- method_exchangeImplementations(originalMethod, swizzledMethod);
59
- }
39
+ SEL originalParametersSelector = @selector(defaultParameters);
40
+ SEL swizzledParametersSelector = @selector(fb_getParametersForElementSnapshot);
41
+ FBReplaceMethod([self class], originalParametersSelector, swizzledParametersSelector);
60
42
  });
61
43
  }
62
44
 
Binary file
@@ -25,6 +25,7 @@
25
25
  [FBDebugLogDelegateDecorator decorateXCTestLogger];
26
26
  [FBConfiguration disableRemoteQueryEvaluation];
27
27
  [FBConfiguration configureDefaultKeyboardPreferences];
28
+ [FBConfiguration disableApplicationUIInterruptionsHandling];
28
29
  if (NSProcessInfo.processInfo.environment[@"ENABLE_AUTOMATIC_SCREENSHOTS"]) {
29
30
  [FBConfiguration enableScreenshots];
30
31
  } else {
Binary file
@@ -29,6 +29,7 @@
29
29
  dispatch_once(&onceToken, ^{
30
30
  [self launchApplication];
31
31
  [self goToAlertsPage];
32
+ [FBConfiguration disableApplicationUIInterruptionsHandling];
32
33
  });
33
34
  [self clearAlert];
34
35
  }
package/build/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.resetTestProcesses = exports.checkForDependencies = exports.bundleWDASim = exports.WebDriverAgent = exports.WDA_RUNNER_BUNDLE_ID = exports.WDA_BUNDLE_ID = exports.WDA_BASE_URL = exports.PROJECT_FILE = exports.NoSessionProxy = exports.BOOTSTRAP_PATH = void 0;
8
+ exports.WDA_BASE_URL = exports.PROJECT_FILE = exports.WDA_RUNNER_BUNDLE_ID = exports.WDA_BUNDLE_ID = exports.BOOTSTRAP_PATH = exports.resetTestProcesses = exports.bundleWDASim = exports.checkForDependencies = exports.NoSessionProxy = exports.WebDriverAgent = void 0;
7
9
 
8
10
  require("source-map-support/register");
9
11
 
@@ -19,10 +21,6 @@ var utils = _interopRequireWildcard(require("./lib/utils"));
19
21
 
20
22
  var _asyncbox = require("asyncbox");
21
23
 
22
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
24
  const {
27
25
  checkForDependencies,
28
26
  bundleWDASim
@@ -59,4 +57,4 @@ if (require.main === module) {
59
57
  }require('source-map-support').install();
60
58
 
61
59
 
62
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImNoZWNrRm9yRGVwZW5kZW5jaWVzIiwiYnVuZGxlV0RBU2ltIiwiZGVwZW5kZW5jaWVzIiwiTm9TZXNzaW9uUHJveHkiLCJwcm94aWVzIiwiV2ViRHJpdmVyQWdlbnQiLCJkcml2ZXIiLCJXREFfQlVORExFX0lEIiwiQk9PVFNUUkFQX1BBVEgiLCJXREFfQkFTRV9VUkwiLCJXREFfUlVOTkVSX0JVTkRMRV9JRCIsIlBST0pFQ1RfRklMRSIsImNvbnN0YW50cyIsInJlc2V0VGVzdFByb2Nlc3NlcyIsInV0aWxzIiwicmVxdWlyZSIsIm1haW4iLCJtb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFHQSxNQUFNO0FBQUVBLEVBQUFBLG9CQUFGO0FBQXdCQyxFQUFBQTtBQUF4QixJQUF5Q0MsWUFBL0M7OztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFxQkMsT0FBM0I7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQXFCQyxNQUEzQjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLGFBQUY7QUFBaUJDLEVBQUFBLGNBQWpCO0FBQWlDQyxFQUFBQSxZQUFqQztBQUErQ0MsRUFBQUEsb0JBQS9DO0FBQXFFQyxFQUFBQTtBQUFyRSxJQUFzRkMsU0FBNUY7Ozs7OztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUF5QkMsS0FBL0I7OztBQUlBLElBQUlDLE9BQU8sQ0FBQ0MsSUFBUixLQUFpQkMsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNqQixvQkFBVDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZGVwZW5kZW5jaWVzIGZyb20gJy4vbGliL2NoZWNrLWRlcGVuZGVuY2llcyc7XG5pbXBvcnQgKiBhcyBwcm94aWVzIGZyb20gJy4vbGliL25vLXNlc3Npb24tcHJveHknO1xuaW1wb3J0ICogYXMgZHJpdmVyIGZyb20gJy4vbGliL3dlYmRyaXZlcmFnZW50JztcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYXN5bmNpZnkgfSBmcm9tICdhc3luY2JveCc7XG5cblxuY29uc3QgeyBjaGVja0ZvckRlcGVuZGVuY2llcywgYnVuZGxlV0RBU2ltIH0gPSBkZXBlbmRlbmNpZXM7XG5jb25zdCB7IE5vU2Vzc2lvblByb3h5IH0gPSBwcm94aWVzO1xuY29uc3QgeyBXZWJEcml2ZXJBZ2VudCB9ID0gZHJpdmVyO1xuY29uc3QgeyBXREFfQlVORExFX0lELCBCT09UU1RSQVBfUEFUSCwgV0RBX0JBU0VfVVJMLCBXREFfUlVOTkVSX0JVTkRMRV9JRCwgUFJPSkVDVF9GSUxFIH0gPSBjb25zdGFudHM7XG5jb25zdCB7IHJlc2V0VGVzdFByb2Nlc3NlcyB9ID0gdXRpbHM7XG5cblxuLy8gV2hlbiBydW4gYXMgYSBjb21tYW5kIGxpbmUgdXRpbGl0eSwgdGhpcyBzaG91bGQgY2hlY2sgZm9yIHRoZSBkZXBlbmRlbmNpZXNcbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShjaGVja0ZvckRlcGVuZGVuY2llcyk7XG59XG5cbmV4cG9ydCB7XG4gIFdlYkRyaXZlckFnZW50LFxuICBOb1Nlc3Npb25Qcm94eSxcbiAgY2hlY2tGb3JEZXBlbmRlbmNpZXMsIGJ1bmRsZVdEQVNpbSxcbiAgcmVzZXRUZXN0UHJvY2Vzc2VzLFxuICBCT09UU1RSQVBfUEFUSCwgV0RBX0JVTkRMRV9JRCxcbiAgV0RBX1JVTk5FUl9CVU5ETEVfSUQsIFBST0pFQ1RfRklMRSxcbiAgV0RBX0JBU0VfVVJMLFxufTtcbiJdLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4ifQ==
60
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImNoZWNrRm9yRGVwZW5kZW5jaWVzIiwiYnVuZGxlV0RBU2ltIiwiZGVwZW5kZW5jaWVzIiwiTm9TZXNzaW9uUHJveHkiLCJwcm94aWVzIiwiV2ViRHJpdmVyQWdlbnQiLCJkcml2ZXIiLCJXREFfQlVORExFX0lEIiwiQk9PVFNUUkFQX1BBVEgiLCJXREFfQkFTRV9VUkwiLCJXREFfUlVOTkVSX0JVTkRMRV9JRCIsIlBST0pFQ1RfRklMRSIsImNvbnN0YW50cyIsInJlc2V0VGVzdFByb2Nlc3NlcyIsInV0aWxzIiwicmVxdWlyZSIsIm1haW4iLCJtb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTTtBQUFFQSxFQUFBQSxvQkFBRjtBQUF3QkMsRUFBQUE7QUFBeEIsSUFBeUNDLFlBQS9DOzs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBcUJDLE9BQTNCOztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFxQkMsTUFBM0I7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxhQUFGO0FBQWlCQyxFQUFBQSxjQUFqQjtBQUFpQ0MsRUFBQUEsWUFBakM7QUFBK0NDLEVBQUFBLG9CQUEvQztBQUFxRUMsRUFBQUE7QUFBckUsSUFBc0ZDLFNBQTVGOzs7Ozs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBeUJDLEtBQS9COzs7QUFJQSxJQUFJQyxPQUFPLENBQUNDLElBQVIsS0FBaUJDLE1BQXJCLEVBQTZCO0FBQzNCLDBCQUFTakIsb0JBQVQ7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGRlcGVuZGVuY2llcyBmcm9tICcuL2xpYi9jaGVjay1kZXBlbmRlbmNpZXMnO1xuaW1wb3J0ICogYXMgcHJveGllcyBmcm9tICcuL2xpYi9uby1zZXNzaW9uLXByb3h5JztcbmltcG9ydCAqIGFzIGRyaXZlciBmcm9tICcuL2xpYi93ZWJkcml2ZXJhZ2VudCc7XG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuXG5cbmNvbnN0IHsgY2hlY2tGb3JEZXBlbmRlbmNpZXMsIGJ1bmRsZVdEQVNpbSB9ID0gZGVwZW5kZW5jaWVzO1xuY29uc3QgeyBOb1Nlc3Npb25Qcm94eSB9ID0gcHJveGllcztcbmNvbnN0IHsgV2ViRHJpdmVyQWdlbnQgfSA9IGRyaXZlcjtcbmNvbnN0IHsgV0RBX0JVTkRMRV9JRCwgQk9PVFNUUkFQX1BBVEgsIFdEQV9CQVNFX1VSTCwgV0RBX1JVTk5FUl9CVU5ETEVfSUQsIFBST0pFQ1RfRklMRSB9ID0gY29uc3RhbnRzO1xuY29uc3QgeyByZXNldFRlc3RQcm9jZXNzZXMgfSA9IHV0aWxzO1xuXG5cbi8vIFdoZW4gcnVuIGFzIGEgY29tbWFuZCBsaW5lIHV0aWxpdHksIHRoaXMgc2hvdWxkIGNoZWNrIGZvciB0aGUgZGVwZW5kZW5jaWVzXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkoY2hlY2tGb3JEZXBlbmRlbmNpZXMpO1xufVxuXG5leHBvcnQge1xuICBXZWJEcml2ZXJBZ2VudCxcbiAgTm9TZXNzaW9uUHJveHksXG4gIGNoZWNrRm9yRGVwZW5kZW5jaWVzLCBidW5kbGVXREFTaW0sXG4gIHJlc2V0VGVzdFByb2Nlc3NlcyxcbiAgQk9PVFNUUkFQX1BBVEgsIFdEQV9CVU5ETEVfSUQsXG4gIFdEQV9SVU5ORVJfQlVORExFX0lELCBQUk9KRUNUX0ZJTEUsXG4gIFdEQV9CQVNFX1VSTCxcbn07XG4iXSwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uIn0=
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.bundleWDASim = bundleWDASim;
9
8
  exports.checkForDependencies = checkForDependencies;
9
+ exports.bundleWDASim = bundleWDASim;
10
10
 
11
11
  require("source-map-support/register");
12
12
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.WDA_UPGRADE_TIMESTAMP_PATH = exports.WDA_SCRIPTS_ROOT = exports.WDA_SCHEME = exports.WDA_RUNNER_BUNDLE_ID = exports.WDA_RUNNER_APP = exports.WDA_PROJECT = exports.WDA_BUNDLE_ID = exports.WDA_BASE_URL = exports.SDK_SIMULATOR = exports.SDK_DEVICE = exports.PROJECT_FILE = exports.PLATFORM_NAME_TVOS = exports.PLATFORM_NAME_IOS = exports.BOOTSTRAP_PATH = void 0;
8
+ exports.WDA_UPGRADE_TIMESTAMP_PATH = exports.WDA_SCRIPTS_ROOT = exports.WDA_BASE_URL = exports.SDK_DEVICE = exports.SDK_SIMULATOR = exports.PLATFORM_NAME_IOS = exports.PLATFORM_NAME_TVOS = exports.WDA_SCHEME = exports.WDA_PROJECT = exports.PROJECT_FILE = exports.WDA_RUNNER_APP = exports.WDA_RUNNER_BUNDLE_ID = exports.WDA_BUNDLE_ID = exports.BOOTSTRAP_PATH = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11