├── .gitignore ├── .travis.yml ├── README.md ├── VodQAReactNative.app ├── Base.lproj │ └── LaunchScreen.nib ├── Frameworks │ ├── IDEBundleInjection.framework │ │ ├── IDEBundleInjection │ │ ├── Info.plist │ │ ├── _CodeSignature │ │ │ └── CodeResources │ │ └── version.plist │ └── XCTest.framework │ │ ├── Headers │ │ ├── XCAbstractTest.h │ │ ├── XCTest.h │ │ ├── XCTestAssertions.h │ │ ├── XCTestAssertionsImpl.h │ │ ├── XCTestCase+AsynchronousTesting.h │ │ ├── XCTestCase.h │ │ ├── XCTestCaseRun.h │ │ ├── XCTestDefines.h │ │ ├── XCTestErrors.h │ │ ├── XCTestExpectation.h │ │ ├── XCTestLog.h │ │ ├── XCTestObservation.h │ │ ├── XCTestObservationCenter.h │ │ ├── XCTestObserver.h │ │ ├── XCTestProbe.h │ │ ├── XCTestRun.h │ │ ├── XCTestSuite.h │ │ ├── XCTestSuiteRun.h │ │ ├── XCUIApplication.h │ │ ├── XCUICoordinate.h │ │ ├── XCUIDevice.h │ │ ├── XCUIElement.h │ │ ├── XCUIElementAttributes.h │ │ ├── XCUIElementQuery.h │ │ ├── XCUIElementTypeQueryProvider.h │ │ ├── XCUIElementTypes.h │ │ ├── XCUIKeyboardKeys.h │ │ └── XCUIRemote.h │ │ ├── Info.plist │ │ ├── Modules │ │ └── module.modulemap │ │ ├── TextBasedStubs │ │ └── XCTest.tbd │ │ ├── XCTest │ │ ├── XCTest.tbd │ │ ├── XPCServices │ │ ├── XCUIRecorderService.xpc │ │ │ ├── Info.plist │ │ │ ├── XCUIRecorderService │ │ │ ├── _CodeSignature │ │ │ │ └── CodeResources │ │ │ └── version.plist │ │ └── xctestSymbolicator.xpc │ │ │ ├── Info.plist │ │ │ ├── _CodeSignature │ │ │ └── CodeResources │ │ │ ├── version.plist │ │ │ └── xctestSymbolicator │ │ ├── _CodeSignature │ │ └── CodeResources │ │ ├── en.lproj │ │ └── InfoPlist.strings │ │ └── version.plist ├── Info.plist ├── PkgInfo ├── PlugIns │ └── VodQAReactNativeTests.xctest │ │ ├── Info.plist │ │ ├── VodQAReactNativeTests │ │ └── _CodeSignature │ │ └── CodeResources ├── VodQAReactNative ├── _CodeSignature │ └── CodeResources ├── assets │ ├── assets │ │ └── vodqa.png │ └── node_modules │ │ └── react-native │ │ └── Libraries │ │ └── CustomComponents │ │ └── NavigationExperimental │ │ └── assets │ │ ├── back-icon.png │ │ ├── back-icon@1.5x.png │ │ ├── back-icon@2x.png │ │ ├── back-icon@3x.png │ │ └── back-icon@4x.png ├── main.jsbundle └── main.jsbundle.meta ├── pom.xml └── src ├── main └── java │ └── com │ └── github │ ├── android │ └── AndroidManager.java │ ├── device │ ├── Device.java │ ├── DeviceManager.java │ ├── DeviceType.java │ ├── IOSRuntime.java │ └── SimulatorManager.java │ ├── iOS │ └── IOSManager.java │ ├── interfaces │ ├── ISimulatorManager.java │ └── Manager.java │ └── utils │ └── CommandPromptUtil.java └── test └── java └── com ├── github └── device │ ├── AndroidTest.java │ ├── IOSDeviceTest.java │ └── SimulatorTest.java └── test └── SampleTest.java /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | iOSDeviceManager.iml 3 | .idea/ 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | 3 | jdk: 4 | - oraclejdk8 5 | 6 | script: mvn clean site install -Dmaven.test.skip=true 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DeviceManager 2 | Utility to Manage Connected iOS & Android Devices (Including iOS Simulators and Android Emulators) 3 | 4 | ## Maven: 5 | 6 | Add following dependency to your pom.xml 7 | 8 | ``` 9 | 10 | 11 | jitpack.io 12 | https://jitpack.io 13 | 14 | 15 | ``` 16 | 17 | ``` 18 | 19 | com.github.SrinivasanTarget 20 | iOSDeviceManager 21 | master-SNAPSHOT 22 | 23 | ``` 24 | 25 | ## Exposed Methods: 26 | 27 | * getAllSimulators - Gets all available or installed simulators in macOS 28 | * getSimulatorUDID - Returns UDID of simulator needed. 29 | * getSimulatorState - Returns state of Simulator e.g `booted`, `shutdown`, etc 30 | * bootSimulator - Will boot the specified Simulator 31 | * install - Will install the application on Simulator 32 | * uninstall - Will remove the application from Simulator 33 | * getSimulatorDetailsFromUDID - Retrives simulator details for given UDID 34 | * captureScreenshot - Captures screenshot for given UDID. 35 | * shutDownAllBootedSimulators - Shutdown all booted simulators 36 | * getAllBootedSimulators - Retrives all booted simulators 37 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Base.lproj/LaunchScreen.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Base.lproj/LaunchScreen.nib -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/IDEBundleInjection.framework/IDEBundleInjection: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/IDEBundleInjection.framework/IDEBundleInjection -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/IDEBundleInjection.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/IDEBundleInjection.framework/Info.plist -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/IDEBundleInjection.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | jVuquTxW/zgsDhVvtjnDjaLklQM= 10 | 11 | version.plist 12 | 13 | 8QWxGqKg24q+pGg+L+4KKzAFC2I= 14 | 15 | 16 | files2 17 | 18 | version.plist 19 | 20 | 8QWxGqKg24q+pGg+L+4KKzAFC2I= 21 | 22 | 23 | rules 24 | 25 | ^ 26 | 27 | ^.*\.lproj/ 28 | 29 | optional 30 | 31 | weight 32 | 1000 33 | 34 | ^.*\.lproj/locversion.plist$ 35 | 36 | omit 37 | 38 | weight 39 | 1100 40 | 41 | ^version.plist$ 42 | 43 | 44 | rules2 45 | 46 | .*\.dSYM($|/) 47 | 48 | weight 49 | 11 50 | 51 | ^ 52 | 53 | weight 54 | 20 55 | 56 | ^(.*/)?\.DS_Store$ 57 | 58 | omit 59 | 60 | weight 61 | 2000 62 | 63 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 64 | 65 | nested 66 | 67 | weight 68 | 10 69 | 70 | ^.* 71 | 72 | ^.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^Info\.plist$ 87 | 88 | omit 89 | 90 | weight 91 | 20 92 | 93 | ^PkgInfo$ 94 | 95 | omit 96 | 97 | weight 98 | 20 99 | 100 | ^[^/]+$ 101 | 102 | nested 103 | 104 | weight 105 | 10 106 | 107 | ^embedded\.provisionprofile$ 108 | 109 | weight 110 | 20 111 | 112 | ^version\.plist$ 113 | 114 | weight 115 | 20 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/IDEBundleInjection.framework/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | IDEBundleInjection 7 | BuildVersion 8 | 119 9 | CFBundleShortVersionString 10 | 5.0 11 | CFBundleVersion 12 | 11004 13 | ProjectName 14 | IDEBundleInjection_Sim 15 | SourceVersion 16 | 11004000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCAbstractTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | @class XCTestRun; 37 | 38 | /*! 39 | * @class XCTest 40 | * 41 | * An abstract base class for testing. XCTestCase and XCTestSuite extend XCTest to provide 42 | * for creating, managing, and executing tests. Most developers will not need to subclass 43 | * XCTest directly. 44 | */ 45 | @interface XCTest : NSObject { 46 | #ifndef __OBJC2__ 47 | @private 48 | id _internal; 49 | #endif 50 | } 51 | 52 | /*! 53 | * @property testCaseCount 54 | * Number of test cases. Must be overridden by subclasses. 55 | */ 56 | @property (readonly) NSUInteger testCaseCount; 57 | 58 | /*! 59 | * @property name 60 | * Test's name. Must be overridden by subclasses. 61 | */ 62 | @property (readonly, copy, nullable) NSString *name; 63 | 64 | /*! 65 | * @property testRunClass 66 | * The XCTestRun subclass that will be instantiated when the test is run to hold 67 | * the test's results. Must be overridden by subclasses. 68 | */ 69 | @property (readonly, nullable) Class testRunClass; 70 | 71 | /*! 72 | * @property testRun 73 | * The test run object that executed the test, an instance of testRunClass. If the test has not yet been run, this will be nil. 74 | */ 75 | @property (readonly, nullable) XCTestRun *testRun; 76 | 77 | /*! 78 | * @method -performTest: 79 | * The method through which tests are executed. Must be overridden by subclasses. 80 | */ 81 | - (void)performTest:(XCTestRun *)run; 82 | 83 | /*! 84 | * @method -runTest 85 | * Creates an instance of the testRunClass and passes it as a parameter to -performTest:. 86 | */ 87 | - (void)runTest; 88 | 89 | /*! 90 | * @method -setUp 91 | * Setup method called before the invocation of each test method in the class. 92 | */ 93 | - (void)setUp; 94 | 95 | /*! 96 | * @method -tearDown 97 | * Teardown method called after the invocation of each test method in the class. 98 | */ 99 | - (void)tearDown; 100 | 101 | @end 102 | 103 | NS_ASSUME_NONNULL_END 104 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2016 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | #import 34 | 35 | #import 36 | #import 37 | #import 38 | #import 39 | #import 40 | #import 41 | #import 42 | #import 43 | #import 44 | #import 45 | #import 46 | #import 47 | #import 48 | #import 49 | #import 50 | 51 | #import 52 | #import 53 | #import 54 | #import 55 | #import 56 | #import 57 | #import 58 | #import 59 | #import 60 | #import 61 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestAssertions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | /*! 35 | * @function XCTFail(...) 36 | * Generates a failure unconditionally. 37 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 38 | */ 39 | #define XCTFail(...) \ 40 | _XCTPrimitiveFail(self, __VA_ARGS__) 41 | 42 | /*! 43 | * @define XCTAssertNil(expression, ...) 44 | * Generates a failure when ((\a expression) != nil). 45 | * @param expression An expression of id type. 46 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 47 | */ 48 | #define XCTAssertNil(expression, ...) \ 49 | _XCTPrimitiveAssertNil(self, expression, @#expression, __VA_ARGS__) 50 | 51 | /*! 52 | * @define XCTAssertNotNil(expression, ...) 53 | * Generates a failure when ((\a expression) == nil). 54 | * @param expression An expression of id type. 55 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 56 | */ 57 | #define XCTAssertNotNil(expression, ...) \ 58 | _XCTPrimitiveAssertNotNil(self, expression, @#expression, __VA_ARGS__) 59 | 60 | /*! 61 | * @define XCTAssert(expression, ...) 62 | * Generates a failure when ((\a expression) == false). 63 | * @param expression An expression of boolean type. 64 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 65 | */ 66 | #define XCTAssert(expression, ...) \ 67 | _XCTPrimitiveAssertTrue(self, expression, @#expression, __VA_ARGS__) 68 | 69 | /*! 70 | * @define XCTAssertTrue(expression, ...) 71 | * Generates a failure when ((\a expression) == false). 72 | * @param expression An expression of boolean type. 73 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 74 | */ 75 | #define XCTAssertTrue(expression, ...) \ 76 | _XCTPrimitiveAssertTrue(self, expression, @#expression, __VA_ARGS__) 77 | 78 | /*! 79 | * @define XCTAssertFalse(expression, ...) 80 | * Generates a failure when ((\a expression) != false). 81 | * @param expression An expression of boolean type. 82 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 83 | */ 84 | #define XCTAssertFalse(expression, ...) \ 85 | _XCTPrimitiveAssertFalse(self, expression, @#expression, __VA_ARGS__) 86 | 87 | /*! 88 | * @define XCTAssertEqualObjects(expression1, expression2, ...) 89 | * Generates a failure when ((\a expression1) not equal to (\a expression2)). 90 | * @param expression1 An expression of id type. 91 | * @param expression2 An expression of id type. 92 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 93 | */ 94 | #define XCTAssertEqualObjects(expression1, expression2, ...) \ 95 | _XCTPrimitiveAssertEqualObjects(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 96 | 97 | /*! 98 | * @define XCTAssertNotEqualObjects(expression1, expression2, ...) 99 | * Generates a failure when ((\a expression1) equal to (\a expression2)). 100 | * @param expression1 An expression of id type. 101 | * @param expression2 An expression of id type. 102 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 103 | */ 104 | #define XCTAssertNotEqualObjects(expression1, expression2, ...) \ 105 | _XCTPrimitiveAssertNotEqualObjects(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 106 | 107 | /*! 108 | * @define XCTAssertEqual(expression1, expression2, ...) 109 | * Generates a failure when ((\a expression1) != (\a expression2)). 110 | * @param expression1 An expression of C scalar type. 111 | * @param expression2 An expression of C scalar type. 112 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 113 | */ 114 | #define XCTAssertEqual(expression1, expression2, ...) \ 115 | _XCTPrimitiveAssertEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 116 | 117 | /*! 118 | * @define XCTAssertNotEqual(expression1, expression2, ...) 119 | * Generates a failure when ((\a expression1) == (\a expression2)). 120 | * @param expression1 An expression of C scalar type. 121 | * @param expression2 An expression of C scalar type. 122 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 123 | */ 124 | #define XCTAssertNotEqual(expression1, expression2, ...) \ 125 | _XCTPrimitiveAssertNotEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 126 | 127 | /*! 128 | * @define XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...) 129 | * Generates a failure when (difference between (\a expression1) and (\a expression2) is > (\a accuracy))). 130 | * @param expression1 An expression of C scalar type. 131 | * @param expression2 An expression of C scalar type. 132 | * @param accuracy An expression of C scalar type describing the maximum difference between \a expression1 and \a expression2 for these values to be considered equal. 133 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 134 | */ 135 | #define XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...) \ 136 | _XCTPrimitiveAssertEqualWithAccuracy(self, expression1, @#expression1, expression2, @#expression2, accuracy, @#accuracy, __VA_ARGS__) 137 | 138 | /*! 139 | * @define XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...) 140 | * Generates a failure when (difference between (\a expression1) and (\a expression2) is <= (\a accuracy)). 141 | * @param expression1 An expression of C scalar type. 142 | * @param expression2 An expression of C scalar type. 143 | * @param accuracy An expression of C scalar type describing the maximum difference between \a expression1 and \a expression2 for these values to be considered equal. 144 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 145 | */ 146 | #define XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...) \ 147 | _XCTPrimitiveAssertNotEqualWithAccuracy(self, expression1, @#expression1, expression2, @#expression2, accuracy, @#accuracy, __VA_ARGS__) 148 | 149 | /*! 150 | * @define XCTAssertGreaterThan(expression1, expression2, ...) 151 | * Generates a failure when ((\a expression1) <= (\a expression2)). 152 | * @param expression1 An expression of C scalar type. 153 | * @param expression2 An expression of C scalar type. 154 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 155 | */ 156 | #define XCTAssertGreaterThan(expression1, expression2, ...) \ 157 | _XCTPrimitiveAssertGreaterThan(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 158 | 159 | /*! 160 | * @define XCTAssertGreaterThanOrEqual(expression1, expression2, ...) 161 | * Generates a failure when ((\a expression1) < (\a expression2)). 162 | * @param expression1 An expression of C scalar type. 163 | * @param expression2 An expression of C scalar type. 164 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 165 | */ 166 | #define XCTAssertGreaterThanOrEqual(expression1, expression2, ...) \ 167 | _XCTPrimitiveAssertGreaterThanOrEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 168 | 169 | /*! 170 | * @define XCTAssertLessThan(expression1, expression2, ...) 171 | * Generates a failure when ((\a expression1) >= (\a expression2)). 172 | * @param expression1 An expression of C scalar type. 173 | * @param expression2 An expression of C scalar type. 174 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 175 | */ 176 | #define XCTAssertLessThan(expression1, expression2, ...) \ 177 | _XCTPrimitiveAssertLessThan(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 178 | 179 | /*! 180 | * @define XCTAssertLessThanOrEqual(expression1, expression2, ...) 181 | * Generates a failure when ((\a expression1) > (\a expression2)). 182 | * @param expression1 An expression of C scalar type. 183 | * @param expression2 An expression of C scalar type. 184 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 185 | */ 186 | #define XCTAssertLessThanOrEqual(expression1, expression2, ...) \ 187 | _XCTPrimitiveAssertLessThanOrEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 188 | 189 | /*! 190 | * @define XCTAssertThrows(expression, ...) 191 | * Generates a failure when ((\a expression) does not throw). 192 | * @param expression An expression. 193 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 194 | */ 195 | #define XCTAssertThrows(expression, ...) \ 196 | _XCTPrimitiveAssertThrows(self, expression, @#expression, __VA_ARGS__) 197 | 198 | /*! 199 | * @define XCTAssertThrowsSpecific(expression, exception_class, ...) 200 | * Generates a failure when ((\a expression) does not throw \a exception_class). 201 | * @param expression An expression. 202 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 203 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 204 | */ 205 | #define XCTAssertThrowsSpecific(expression, exception_class, ...) \ 206 | _XCTPrimitiveAssertThrowsSpecific(self, expression, @#expression, exception_class, __VA_ARGS__) 207 | 208 | /*! 209 | * @define XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...) 210 | * Generates a failure when ((\a expression) does not throw \a exception_class with \a exception_name). 211 | * @param expression An expression. 212 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 213 | * @param exception_name The name of the exception. 214 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 215 | */ 216 | #define XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...) \ 217 | _XCTPrimitiveAssertThrowsSpecificNamed(self, expression, @#expression, exception_class, exception_name, __VA_ARGS__) 218 | 219 | /*! 220 | * @define XCTAssertNoThrow(expression, ...) 221 | * Generates a failure when ((\a expression) throws). 222 | * @param expression An expression. 223 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 224 | */ 225 | #define XCTAssertNoThrow(expression, ...) \ 226 | _XCTPrimitiveAssertNoThrow(self, expression, @#expression, __VA_ARGS__) 227 | 228 | /*! 229 | * @define XCTAssertNoThrowSpecific(expression, exception_class, ...) 230 | * Generates a failure when ((\a expression) throws \a exception_class). 231 | * @param expression An expression. 232 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 233 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 234 | */ 235 | #define XCTAssertNoThrowSpecific(expression, exception_class, ...) \ 236 | _XCTPrimitiveAssertNoThrowSpecific(self, expression, @#expression, exception_class, __VA_ARGS__) 237 | 238 | /*! 239 | * @define XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...) 240 | * Generates a failure when ((\a expression) throws \a exception_class with \a exception_name). 241 | * @param expression An expression. 242 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 243 | * @param exception_name The name of the exception. 244 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 245 | */ 246 | #define XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...) \ 247 | _XCTPrimitiveAssertNoThrowSpecificNamed(self, expression, @#expression, exception_class, exception_name, __VA_ARGS__) 248 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestCase+AsynchronousTesting.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2016 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | @class XCTestExpectation; 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /*! 12 | * @category AsynchronousTesting 13 | * 14 | * @discussion 15 | * This category introduces support for asynchronous testing in XCTestCase. The mechanism 16 | * allows you to specify one or more "expectations" that will occur asynchronously 17 | * as a result of actions in the test. Once all expectations have been set, a "wait" 18 | * API is called that will block execution of subsequent test code until all expected 19 | * conditions have been fulfilled or a timeout occurs. 20 | */ 21 | @interface XCTestCase (AsynchronousTesting) 22 | 23 | /*! 24 | * @method -expectationWithDescription: 25 | * 26 | * @param description 27 | * This string will be displayed in the test log to help diagnose failures. 28 | * 29 | * @discussion 30 | * Creates and returns an expectation associated with the test case. 31 | */ 32 | - (XCTestExpectation *)expectationWithDescription:(NSString *)description; 33 | 34 | /*! 35 | * @typedef XCWaitCompletionHandler 36 | * A block to be invoked when a call to -waitForExpectationsWithTimeout:handler: times out or has 37 | * had all associated expectations fulfilled. 38 | * 39 | * @param error 40 | * If the wait timed out or a failure was raised while waiting, the error's code 41 | * will specify the type of failure. Otherwise error will be nil. 42 | */ 43 | typedef void (^XCWaitCompletionHandler)(NSError * __nullable error); 44 | 45 | /*! 46 | * @method -waitForExpectationsWithTimeout:handler: 47 | * 48 | * @param timeout 49 | * The amount of time within which all expectations must be fulfilled. 50 | * 51 | * @param handler 52 | * If provided, the handler will be invoked both on timeout or fulfillment of all 53 | * expectations. Timeout is always treated as a test failure. 54 | * 55 | * @discussion 56 | * -waitForExpectationsWithTimeout:handler: creates a point of synchronization in the flow of a 57 | * test. Only one -waitForExpectationsWithTimeout:handler: can be active at any given time, but 58 | * multiple discrete sequences of { expectations -> wait } can be chained together. 59 | * 60 | * -waitForExpectationsWithTimeout:handler: runs the run loop while handling events until all expectations 61 | * are fulfilled or the timeout is reached. Clients should not manipulate the run 62 | * loop while using this API. 63 | */ 64 | - (void)waitForExpectationsWithTimeout:(NSTimeInterval)timeout handler:(nullable XCWaitCompletionHandler)handler; 65 | 66 | #pragma mark Convenience APIs 67 | 68 | /*! 69 | * @method -keyValueObservingExpectationForObject:keyPath:expectedValue: 70 | * 71 | * @discussion 72 | * A convenience method for asynchronous tests that use Key Value Observing to detect changes 73 | * to values on an object. This variant takes an expected value and observes changes on the object 74 | * until the keyPath's value matches the expected value using -[NSObject isEqual:]. If 75 | * other comparisions are needed, use the variant below that takes a handler block. 76 | * 77 | * @param objectToObserve 78 | * The object to observe. 79 | * 80 | * @param keyPath 81 | * The key path to observe. 82 | * 83 | * @param expectedValue 84 | * Expected value of the keyPath for the object. The expectation will fulfill itself when the 85 | * keyPath is equal, as tested using -[NSObject isEqual:]. If nil, the expectation will be 86 | * fulfilled by the first change to the key path of the observed object. 87 | * 88 | * @return 89 | * Creates and returns an expectation associated with the test case. 90 | */ 91 | - (XCTestExpectation *)keyValueObservingExpectationForObject:(id)objectToObserve keyPath:(NSString *)keyPath expectedValue:(nullable id)expectedValue; 92 | 93 | /*! 94 | * @typedef 95 | * A block to be invoked when a change is observed for the keyPath of the observed object. 96 | * 97 | * @param observedObject 98 | * The observed object, provided to avoid block capture issues. 99 | * 100 | * @param change 101 | * The KVO change dictionary. 102 | * 103 | * @return 104 | * Return YES if the expectation is fulfilled, NO if it is not. 105 | */ 106 | typedef BOOL (^XCKeyValueObservingExpectationHandler)(id observedObject, NSDictionary *change); 107 | 108 | /*! 109 | * @method -keyValueObservingExpectationForObject:keyPath:handler: 110 | * 111 | * @discussion 112 | * Variant of the convenience for tests that use Key Value Observing. Takes a handler 113 | * block instead of an expected value. Every KVO change will run the handler block until 114 | * it returns YES (or the wait times out). Returning YES from the block will fulfill the 115 | * expectation. XCTAssert and related APIs can be used in the block to report a failure. 116 | * 117 | * @param objectToObserve 118 | * The object to observe. 119 | * 120 | * @param keyPath 121 | * The key path to observe. 122 | * 123 | * @param handler 124 | * Optional handler, /see XCKeyValueObservingExpectationHandler. If not provided, the expectation will 125 | * be fulfilled by the first change to the key path of the observed object. 126 | * 127 | * @return 128 | * Creates and returns an expectation associated with the test case. 129 | */ 130 | - (XCTestExpectation *)keyValueObservingExpectationForObject:(id)objectToObserve keyPath:(NSString *)keyPath handler:(nullable XCKeyValueObservingExpectationHandler)handler; 131 | 132 | /*! 133 | * @typedef 134 | * A block to be invoked when a notification matching the specified name is observed 135 | * from the object. 136 | * 137 | * @param notification 138 | * The notification object. 139 | * 140 | * @return 141 | * Return YES if the expectation is fulfilled, NO if it is not. 142 | */ 143 | typedef BOOL (^XCNotificationExpectationHandler)(NSNotification *notification); 144 | 145 | /*! 146 | * @method -expectationForNotification:object:handler: 147 | * 148 | * @discussion 149 | * A convenience method for asynchronous tests that observe NSNotifications. 150 | * 151 | * @param notificationName 152 | * The notification to register for. 153 | * 154 | * @param objectToObserve 155 | * The object to observe. 156 | * 157 | * @param handler 158 | * Optional handler, /see XCNotificationExpectationHandler. If not provided, the expectation 159 | * will be fulfilled by the first notification matching the specified name from the 160 | * observed object. 161 | * 162 | * @return 163 | * Creates and returns an expectation associated with the test case. 164 | */ 165 | - (XCTestExpectation *)expectationForNotification:(NSString *)notificationName object:(nullable id)objectToObserve handler:(nullable XCNotificationExpectationHandler)handler; 166 | 167 | /*! 168 | * @typedef 169 | * Handler called when evaluating the predicate against the object returns true. If the handler is not 170 | * provided the first successful evaluation will fulfill the expectation. If provided, the handler can 171 | * override that behavior which leaves the caller responsible for fulfilling the expectation. 172 | */ 173 | typedef BOOL (^XCPredicateExpectationHandler)(); 174 | 175 | /*! 176 | * @method -expectationForPredicate:evaluatedWithObject:handler: 177 | * Creates an expectation that is fulfilled if the predicate returns true when evaluated with the given 178 | * object. The expectation periodically evaluates the predicate and also may use notifications or other 179 | * events to optimistically re-evaluate. 180 | */ 181 | - (XCTestExpectation *)expectationForPredicate:(NSPredicate *)predicate evaluatedWithObject:(id)object handler:(nullable XCPredicateExpectationHandler)handler; 182 | 183 | @end 184 | 185 | NS_ASSUME_NONNULL_END 186 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestCase.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | #import 34 | 35 | NS_ASSUME_NONNULL_BEGIN 36 | 37 | @class XCTestSuite; 38 | @class XCTestCaseRun; 39 | 40 | #if XCT_UI_TESTING_AVAILABLE 41 | @class XCUIElement; 42 | #endif 43 | 44 | /*! 45 | * @class XCTestCase 46 | * XCTestCase is a concrete subclass of XCTest that should be the override point for 47 | * most developers creating tests for their projects. A test case subclass can have 48 | * multiple test methods and supports setup and tear down that executes for every test 49 | * method as well as class level setup and tear down. 50 | * 51 | * To define a test case: 52 | * 53 | * • Create a subclass of XCTestCase. 54 | * • Implement -test methods. 55 | * • Optionally define instance variables or properties that store the state of the test. 56 | * • Optionally initialize state by overriding -setUp 57 | * • Optionally clean-up after a test by overriding -tearDown. 58 | * 59 | * Test methods are instance methods meeting these requirements: 60 | * • accepting no parameters 61 | * • returning no value 62 | * • prefixed with 'test' 63 | * 64 | * For example: 65 | 66 | - (void)testSomething; 67 | 68 | * Test methods are automatically recognized as test cases by the XCTest framework. 69 | * Each XCTestCase subclass's defaultTestSuite is a XCTestSuite which includes these 70 | * tests. Test method implementations usually contain assertions that must be verified 71 | * for the test to pass, for example: 72 | 73 | @interface MathTest : XCTestCase { 74 | @private 75 | float f1; 76 | float f2; 77 | } 78 | 79 | - (void)testAddition; 80 | 81 | @end 82 | 83 | @implementation MathTest 84 | 85 | - (void)setUp 86 | { 87 | f1 = 2.0; 88 | f2 = 3.0; 89 | } 90 | 91 | - (void)testAddition 92 | { 93 | XCTAssertTrue (f1 + f2 == 5.0); 94 | } 95 | @end 96 | */ 97 | @interface XCTestCase : XCTest { 98 | #ifndef __OBJC2__ 99 | @private 100 | id _internalImplementation; 101 | #endif 102 | } 103 | 104 | /*! 105 | * @method +testCaseWithInvocation: 106 | */ 107 | + (instancetype)testCaseWithInvocation:(nullable NSInvocation *)invocation; 108 | 109 | /*! 110 | * @method -initWithInvocation: 111 | */ 112 | - (instancetype)initWithInvocation:(nullable NSInvocation *)invocation; 113 | 114 | /*! 115 | * @method +testCaseWithSelector: 116 | */ 117 | + (nullable instancetype)testCaseWithSelector:(SEL)selector; 118 | 119 | /*! 120 | * @method -initWithSelector: 121 | */ 122 | - (instancetype)initWithSelector:(SEL)selector; 123 | 124 | /*! 125 | * @property invocation 126 | * The invocation used when this test is run. 127 | */ 128 | @property (strong, nullable) NSInvocation *invocation; 129 | 130 | /*! 131 | * @method -invokeTest 132 | * Invoking a test performs its setUp, invocation, and tearDown. In general this 133 | * should not be called directly. 134 | */ 135 | - (void)invokeTest; 136 | 137 | /*! 138 | * @property continueAfterFailure 139 | * The test case behavior after a failure. Defaults to YES. 140 | */ 141 | @property BOOL continueAfterFailure; 142 | 143 | /*! 144 | * @method -recordFailureWithDescription:inFile:atLine:expected: 145 | * Records a failure in the execution of the test and is used by all test assertions. 146 | * 147 | * @param description The description of the failure being reported. 148 | * 149 | * @param filePath The file path to the source file where the failure being reported 150 | * was encountered. 151 | * 152 | * @param lineNumber The line number in the source file at filePath where the 153 | * failure being reported was encountered. 154 | * 155 | * @param expected YES if the failure being reported was the result of a failed assertion, 156 | * NO if it was the result of an uncaught exception. 157 | * 158 | */ 159 | - (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filePath atLine:(NSUInteger)lineNumber expected:(BOOL)expected; 160 | 161 | /*! 162 | * @method +testInvocations 163 | * Invocations for each test method in the test case. 164 | */ 165 | + (NSArray *)testInvocations; 166 | 167 | #pragma mark - Measuring Performance Metrics 168 | 169 | /*! 170 | * @const XCTPerformanceMetric_WallClockTime 171 | * Records wall clock time in seconds between startMeasuring/stopMeasuring. 172 | */ 173 | XCT_EXPORT NSString * const XCTPerformanceMetric_WallClockTime; 174 | 175 | /*! 176 | * @method +defaultPerformanceMetrics 177 | * The names of the performance metrics to measure when invoking -measureBlock:. Returns XCTPerformanceMetric_WallClockTime by default. Subclasses can override this to change the behavior of -measureBlock: 178 | */ 179 | + (NSArray *)defaultPerformanceMetrics; 180 | 181 | /*! 182 | * @method -measureBlock: 183 | * 184 | * Call from a test method to measure resources (+defaultPerformanceMetrics) used by the 185 | * block in the current process. 186 | 187 | - (void)testPerformanceOfMyFunction { 188 | 189 | [self measureBlock:^{ 190 | // Do that thing you want to measure. 191 | MyFunction(); 192 | }]; 193 | } 194 | 195 | * @param block A block whose performance to measure. 196 | */ 197 | - (void)measureBlock:(void (^)(void))block; 198 | 199 | /*! 200 | * @method -measureMetrics:automaticallyStartMeasuring:forBlock: 201 | * 202 | * Call from a test method to measure resources (XCTPerformanceMetrics) used by the 203 | * block in the current process. Each metric will be measured across calls to the block. 204 | * The number of times the block will be called is undefined and may change in the 205 | * future. For one example of why, as long as the requested performance metrics do 206 | * not interfere with each other the API will measure all metrics across the same 207 | * calls to the block. If the performance metrics may interfere the API will measure 208 | * them separately. 209 | 210 | - (void)testMyFunction2_WallClockTime { 211 | [self measureMetrics:[[self class] defaultPerformanceMetrics] automaticallyStartMeasuring:NO forBlock:^{ 212 | 213 | // Do setup work that needs to be done for every iteration but you don't want to measure before the call to -startMeasuring 214 | SetupSomething(); 215 | [self startMeasuring]; 216 | 217 | // Do that thing you want to measure. 218 | MyFunction(); 219 | [self stopMeasuring]; 220 | 221 | // Do teardown work that needs to be done for every iteration but you don't want to measure after the call to -stopMeasuring 222 | TeardownSomething(); 223 | }]; 224 | } 225 | 226 | * Caveats: 227 | * • If YES was passed for automaticallyStartMeasuring and -startMeasuring is called 228 | * anyway, the test will fail. 229 | * • If NO was passed for automaticallyStartMeasuring then -startMeasuring must be 230 | * called once and only once before the end of the block or the test will fail. 231 | * • If -stopMeasuring is called multiple times during the block the test will fail. 232 | * 233 | * @param metrics An array of NSStrings (XCTPerformanceMetrics) to measure. Providing an unrecognized string is a test failure. 234 | * 235 | * @param automaticallyStartMeasuring If NO, XCTestCase will not take any measurements until -startMeasuring is called. 236 | * 237 | * @param block A block whose performance to measure. 238 | */ 239 | - (void)measureMetrics:(NSArray *)metrics automaticallyStartMeasuring:(BOOL)automaticallyStartMeasuring forBlock:(void (^)(void))block; 240 | 241 | /*! 242 | * @method -startMeasuring 243 | * Call this from within a measure block to set the beginning of the critical section. 244 | * Measurement of metrics will start at this point. 245 | */ 246 | - (void)startMeasuring; 247 | 248 | /*! 249 | * @method -stopMeasuring 250 | * Call this from within a measure block to set the ending of the critical section. 251 | * Measurement of metrics will stop at this point. 252 | */ 253 | - (void)stopMeasuring; 254 | 255 | #pragma mark - UI Testing Support 256 | #if XCT_UI_TESTING_AVAILABLE 257 | 258 | /*! Adds a handler to the current context. Returns a token that can be used to unregister the handler. Handlers are invoked in the reverse order in which they are added until one of the handlers returns true, indicating that it has handled the alert. 259 | @param handlerDescription Explanation of the behavior and purpose of this handler, mainly used for debugging and analysis. 260 | @param handler Handler block for asynchronous UI such as alerts and other dialogs. Handlers should return true if they handled the UI, false if they did not. The handler is passed an XCUIElement representing the top level UI element for the alert. 261 | */ 262 | - (id )addUIInterruptionMonitorWithDescription:(NSString *)handlerDescription handler:(BOOL (^)(XCUIElement *interruptingElement))handler; 263 | 264 | /*! Removes a handler using the token provided when it was added. */ 265 | - (void)removeUIInterruptionMonitor:(id )monitor; 266 | 267 | #endif 268 | 269 | @end 270 | 271 | @interface XCTestCase (XCTestSuiteExtensions) 272 | 273 | /*! 274 | * @method +defaultTestSuite 275 | * Returns a test suite containing test cases for all of the tests in the class. 276 | */ 277 | + (XCTestSuite *)defaultTestSuite; 278 | 279 | /*! 280 | * @method +setUp 281 | * Setup method called before the invocation of any test method in the class. 282 | */ 283 | + (void)setUp; 284 | 285 | /*! 286 | * @method +testDown 287 | * Teardown method called after the invocation of every test method in the class. 288 | */ 289 | + (void)tearDown; 290 | 291 | @end 292 | 293 | NS_ASSUME_NONNULL_END 294 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestCaseRun.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | @class XCTestCase; 37 | 38 | @interface XCTestCaseRun : XCTestRun 39 | 40 | - (void)recordFailureInTest:(XCTestCase *)testCase withDescription:(NSString *)description inFile:(NSString *)filePath atLine:(NSUInteger)lineNumber expected:(BOOL)expected DEPRECATED_ATTRIBUTE; 41 | 42 | @end 43 | 44 | NS_ASSUME_NONNULL_END 45 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestDefines.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | #if defined(__cplusplus) 35 | #define XCT_EXPORT extern "C" 36 | #else 37 | #define XCT_EXPORT extern 38 | #endif 39 | 40 | #if (!defined(__OBJC_GC__) || (defined(__OBJC_GC__) && ! __OBJC_GC__)) && (defined(__OBJC2__) && __OBJC2__) 41 | #ifndef XCT_UI_TESTING_AVAILABLE 42 | #define XCT_UI_TESTING_AVAILABLE 1 43 | #endif 44 | #endif 45 | 46 | #ifndef XCT_UI_TESTING_AVAILABLE 47 | #define XCT_UI_TESTING_AVAILABLE 0 48 | #endif 49 | 50 | #if TARGET_OS_SIMULATOR 51 | #define XCTEST_SIMULATOR_UNAVAILABLE(_msg) __attribute__((availability(ios,unavailable,message=_msg))) 52 | #else 53 | #define XCTEST_SIMULATOR_UNAVAILABLE(_msg) 54 | #endif 55 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestErrors.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | /*! 8 | * @const XCTestErrorDomain 9 | * Domain for errors provided by the XCTest framework. 10 | */ 11 | XCT_EXPORT NSString *const XCTestErrorDomain; 12 | 13 | /*! 14 | * @typedef XCTestErrorCode 15 | * Error codes used with errors in the XCTestErrorDomain. 16 | * 17 | * @constant XCTestErrorCodeTimeoutWhileWaiting Indicates that a call to -waitForExpectationsWithTimeout:handler: timed out. 18 | * @constant XCTestErrorCodeFailureWhileWaiting Indicates that a failure assertion was raised while waiting in -waitForExpectationsWithTimeout:handler:. 19 | */ 20 | typedef NS_ENUM(NSInteger, XCTestErrorCode) { 21 | XCTestErrorCodeTimeoutWhileWaiting, 22 | XCTestErrorCodeFailureWhileWaiting, 23 | }; 24 | 25 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestExpectation.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2016 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /*! 10 | * @class XCTestExpectation 11 | * 12 | * @discussion 13 | * Expectations represent specific conditions in asynchronous testing. 14 | */ 15 | @interface XCTestExpectation : NSObject { 16 | #ifndef __OBJC2__ 17 | id _internalImplementation; 18 | #endif 19 | } 20 | 21 | /*! 22 | * @method -fulfill 23 | * 24 | * @discussion 25 | * Call -fulfill to mark an expectation as having been met. It's an error to call 26 | * -fulfill on an expectation that has already been fulfilled or when the test case 27 | * that vended the expectation has already completed. 28 | */ 29 | - (void)fulfill; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestLog.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | /*! 35 | * XCTestLog is deprecated. 36 | */ 37 | 38 | DEPRECATED_ATTRIBUTE 39 | #pragma clang diagnostic push 40 | #pragma clang diagnostic ignored "-Wdeprecated-declarations" 41 | @interface XCTestLog : XCTestObserver 42 | #pragma clang diagnostic pop 43 | 44 | @property (readonly, strong) NSFileHandle *logFileHandle; 45 | - (void)testLogWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); 46 | - (void)testLogWithFormat:(NSString *)format arguments:(va_list)arguments NS_FORMAT_FUNCTION(1,0); 47 | 48 | @end 49 | 50 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestObservation.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @class XCTestSuite, XCTestCase; 10 | 11 | /*! 12 | * @protocol XCTestObservation 13 | * 14 | * Objects conforming to XCTestObservation can register to be notified of the progress of test runs. See XCTestObservationCenter 15 | * for details on registration. 16 | * 17 | * Progress events are delivered in the following sequence: 18 | * 19 | * -testBundleWillStart: // exactly once per test bundle 20 | * -testSuiteWillStart: // exactly once per test suite 21 | * -testCaseWillStart: // exactly once per test case 22 | * -testCase:didFailWithDescription:... // zero or more times per test case, any time between test case start and finish 23 | * -testCaseDidFinish: // exactly once per test case 24 | * -testSuite:didFailWithDescription:... // zero or more times per test suite, any time between test suite start and finish 25 | * -testSuiteDidFinish: // exactly once per test suite 26 | * -testBundleDidFinish: // exactly once per test bundle 27 | */ 28 | @protocol XCTestObservation 29 | @optional 30 | 31 | /*! 32 | * @method -testBundleWillStart: 33 | * 34 | * Sent immediately before tests begin as a hook for any pre-testing setup. 35 | * 36 | * @param testBundle The bundle containing the tests that were executed. 37 | */ 38 | - (void)testBundleWillStart:(NSBundle *)testBundle; 39 | 40 | /*! 41 | * @method -testBundleDidFinish: 42 | * 43 | * Sent immediately after all tests have finished as a hook for any post-testing activity. The test process will generally 44 | * exit after this method returns, so if there is long running and/or asynchronous work to be done after testing, be sure 45 | * to implement this method in a way that it blocks until all such activity is complete. 46 | * 47 | * @param testBundle The bundle containing the tests that were executed. 48 | */ 49 | - (void)testBundleDidFinish:(NSBundle *)testBundle; 50 | 51 | /*! 52 | * @method -testSuiteWillStart: 53 | * 54 | * Sent when a test suite starts executing. 55 | * 56 | * @param testSuite The test suite that started. Additional information can be retrieved from the associated XCTestRun. 57 | */ 58 | - (void)testSuiteWillStart:(XCTestSuite *)testSuite; 59 | 60 | /*! 61 | * @method -testSuiteDidFail:withDescription:inFile:atLine: 62 | * 63 | * Sent when a test suite reports a failure. Suite failures are most commonly reported during suite-level setup and teardown 64 | * whereas failures during tests are reported for the test case alone and are not reported as suite failures. 65 | * 66 | * @param testSuite The test suite that failed. Additional information can be retrieved from the associated XCTestRun. 67 | * @param description A textual description of the failure. 68 | * @param filePath The path of file where the failure occurred, nil if unknown. 69 | * @param lineNumber The line where the failure was reported. 70 | */ 71 | - (void)testSuite:(XCTestSuite *)testSuite didFailWithDescription:(NSString *)description inFile:(nullable NSString *)filePath atLine:(NSUInteger)lineNumber; 72 | 73 | /*! 74 | * @method -testSuiteDidFinish: 75 | * 76 | * Sent when a test suite finishes executing. 77 | * 78 | * @param testSuite The test suite that finished. Additional information can be retrieved from the associated XCTestRun. 79 | */ 80 | - (void)testSuiteDidFinish:(XCTestSuite *)testSuite; 81 | 82 | /*! 83 | * @method -testCaseWillStart: 84 | * 85 | * Sent when a test case starts executing. 86 | * 87 | * @param testCase The test case that started. Additional information can be retrieved from the associated XCTestRun. 88 | */ 89 | - (void)testCaseWillStart:(XCTestCase *)testCase; 90 | 91 | /*! 92 | * @method -testCaseDidFail:withDescription:inFile:atLine: 93 | * 94 | * Sent when a test case reports a failure. 95 | * 96 | * @param testCase The test case that failed. Additional information can be retrieved from the associated XCTestRun. 97 | * @param description A textual description of the failure. 98 | * @param filePath The path of file where the failure occurred, nil if unknown. 99 | * @param lineNumber The line where the failure was reported. 100 | */ 101 | - (void)testCase:(XCTestCase *)testCase didFailWithDescription:(NSString *)description inFile:(nullable NSString *)filePath atLine:(NSUInteger)lineNumber; 102 | 103 | /*! 104 | * @method -testCaseDidFinish: 105 | * 106 | * Sent when a test case finishes executing. 107 | * 108 | * @param testCase The test case that finished. Additional information can be retrieved from the associated XCTestRun. 109 | */ 110 | - (void)testCaseDidFinish:(XCTestCase *)testCase; 111 | 112 | @end 113 | 114 | NS_ASSUME_NONNULL_END 115 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestObservationCenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #import 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /*! 12 | * @class XCTestObservationCenter 13 | * 14 | * The XCTestObservationCenter distributes information about the progress of test runs to registered 15 | * observers. Observers can be any object conforming to the XCTestObservation protocol. 16 | * 17 | * If an NSPrincipalClass is declared in the test bundle's Info.plist, XCTest automatically creates a 18 | * single instance of that class when the test bundle is loaded. This instance provides a means to register 19 | * observers or do other pretesting global set up. 20 | * 21 | * Observers must be registered manually. The NSPrincipalClass instance is not automatically 22 | * registered as an observer even if the class conforms to . 23 | */ 24 | @interface XCTestObservationCenter : NSObject { 25 | #ifndef __OBJC2__ 26 | @private 27 | id _internalImplementation; 28 | #endif 29 | } 30 | 31 | /*! 32 | * @method +sharedTestObservationCenter 33 | * 34 | * @return The shared XCTestObservationCenter singleton instance. 35 | */ 36 | + (XCTestObservationCenter *)sharedTestObservationCenter; 37 | 38 | /*! 39 | * @method -addTestObserver: 40 | * 41 | * Register an object conforming to XCTestObservation as an observer for the current test session. Observers may be added 42 | * at any time, but will not receive events that occurred before they were registered. The observation center maintains a strong 43 | * reference to observers. 44 | * 45 | * Events may be delivered to observers in any order - given observers A and B, A may be notified of a test failure before 46 | * or after B. Any ordering dependencies or serialization requirements must be managed by clients. 47 | */ 48 | - (void)addTestObserver:(id )testObserver; 49 | 50 | /*! 51 | * @method -removeTestObserver: 52 | * 53 | * Unregister an object conforming to XCTestObservation as an observer for the current test session. 54 | */ 55 | - (void)removeTestObserver:(id )testObserver; 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | @class XCTestRun; 35 | 36 | /*! 37 | * XCTestObserver is deprecated. 38 | */ 39 | DEPRECATED_ATTRIBUTE 40 | @interface XCTestObserver : NSObject 41 | 42 | - (void)startObserving; 43 | - (void)stopObserving; 44 | - (void)testSuiteDidStart:(XCTestRun *)testRun; 45 | - (void)testSuiteDidStop:(XCTestRun *)testRun; 46 | - (void)testCaseDidStart:(XCTestRun *)testRun; 47 | - (void)testCaseDidStop:(XCTestRun *)testRun; 48 | - (void)testCaseDidFail:(XCTestRun *)testRun withDescription:(NSString *)description inFile:(NSString *)filePath atLine:(NSUInteger)lineNumber; 49 | 50 | @end 51 | 52 | /*! 53 | * XCTestObserverClassKey is deprecated and ignored. 54 | */ 55 | XCT_EXPORT NSString * const XCTestObserverClassKey DEPRECATED_ATTRIBUTE; 56 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestProbe.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | #import 35 | 36 | XCT_EXPORT int XCTSelfTestMain(void) DEPRECATED_ATTRIBUTE; 37 | 38 | DEPRECATED_ATTRIBUTE 39 | @interface XCTestProbe : NSObject 40 | 41 | + (BOOL)isTesting; 42 | 43 | @end 44 | 45 | XCT_EXPORT NSString * const XCTestedUnitPath DEPRECATED_ATTRIBUTE; 46 | XCT_EXPORT NSString * const XCTestScopeKey DEPRECATED_ATTRIBUTE; 47 | XCT_EXPORT NSString * const XCTestScopeAll DEPRECATED_ATTRIBUTE; 48 | XCT_EXPORT NSString * const XCTestScopeNone DEPRECATED_ATTRIBUTE; 49 | XCT_EXPORT NSString * const XCTestScopeSelf DEPRECATED_ATTRIBUTE; 50 | XCT_EXPORT NSString * const XCTestToolKey DEPRECATED_ATTRIBUTE; 51 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestRun.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | /*! 37 | * @class XCTestRun 38 | * A test run collects information about the execution of a test. Failures in explicit 39 | * test assertions are classified as "expected", while failures from unrelated or 40 | * uncaught exceptions are classified as "unexpected". 41 | */ 42 | @interface XCTestRun : NSObject { 43 | #ifndef __OBJC2__ 44 | @private 45 | id _internalTestRun; 46 | #endif 47 | } 48 | 49 | /*! 50 | * @method +testRunWithTest: 51 | * Class factory method for the XCTestRun class. 52 | * 53 | * @param test An XCTest instance. 54 | * 55 | * @return A test run for the provided test. 56 | */ 57 | + (instancetype)testRunWithTest:(XCTest *)test; 58 | 59 | /*! 60 | * @method -initWithTest: 61 | * Designated initializer for the XCTestRun class. 62 | * 63 | * @param test An XCTest instance. 64 | * 65 | * @return A test run for the provided test. 66 | */ 67 | - (instancetype)initWithTest:(XCTest *)test NS_DESIGNATED_INITIALIZER; 68 | 69 | /*! 70 | * @property test 71 | * The test instance provided when the test run was initialized. 72 | */ 73 | @property (readonly, strong) XCTest *test; 74 | 75 | /*! 76 | * @method -start 77 | * Start a test run. Must not be called more than once. 78 | */ 79 | - (void)start; 80 | 81 | /*! 82 | * @method -stop 83 | * Stop a test run. Must not be called unless the run has been started. Must not be called more than once. 84 | */ 85 | - (void)stop; 86 | 87 | /*! 88 | * @property startDate 89 | * The time at which the test run was started, or nil. 90 | */ 91 | @property (readonly, copy, nullable) NSDate *startDate; 92 | 93 | /*! 94 | * @property stopDate 95 | * The time at which the test run was stopped, or nil. 96 | */ 97 | @property (readonly, copy, nullable) NSDate *stopDate; 98 | 99 | /*! 100 | * @property totalDuration 101 | * The number of seconds that elapsed between when the run was started and when it was stopped. 102 | */ 103 | @property (readonly) NSTimeInterval totalDuration; 104 | 105 | /*! 106 | * @property testDuration 107 | * The number of seconds that elapsed between when the run was started and when it was stopped. 108 | */ 109 | @property (readonly) NSTimeInterval testDuration; 110 | 111 | /*! 112 | * @property testCaseCount 113 | * The number of tests in the run. 114 | */ 115 | @property (readonly) NSUInteger testCaseCount; 116 | 117 | /*! 118 | * @property executionCount 119 | * The number of test executions recorded during the run. 120 | */ 121 | @property (readonly) NSUInteger executionCount; 122 | 123 | /*! 124 | * @property failureCount 125 | * The number of test failures recorded during the run. 126 | */ 127 | @property (readonly) NSUInteger failureCount; 128 | 129 | /*! 130 | * @property unexpectedExceptionCount 131 | * The number of uncaught exceptions recorded during the run. 132 | */ 133 | @property (readonly) NSUInteger unexpectedExceptionCount; 134 | 135 | /*! 136 | * @property totalFailureCount 137 | * The total number of test failures and uncaught exceptions recorded during the run. 138 | */ 139 | @property (readonly) NSUInteger totalFailureCount; 140 | 141 | /*! 142 | * @property hasSucceeded 143 | * YES if all tests in the run completed their execution without recording any failures, otherwise NO. 144 | */ 145 | @property (readonly) BOOL hasSucceeded; 146 | 147 | /*! 148 | * @method -recordFailureWithDescription:inFile:atLine:expected: 149 | * Records a failure in the execution of the test for this test run. Must not be called 150 | * unless the run has been started. Must not be called if the test run has been stopped. 151 | * 152 | * @param description The description of the failure being reported. 153 | * 154 | * @param filePath The file path to the source file where the failure being reported 155 | * was encountered or nil if unknown. 156 | * 157 | * @param lineNumber The line number in the source file at filePath where the 158 | * failure being reported was encountered. 159 | * 160 | * @param expected YES if the failure being reported was the result of a failed assertion, 161 | * NO if it was the result of an uncaught exception. 162 | * 163 | */ 164 | - (void)recordFailureWithDescription:(NSString *)description inFile:(nullable NSString *)filePath atLine:(NSUInteger)lineNumber expected:(BOOL)expected; 165 | 166 | @end 167 | 168 | NS_ASSUME_NONNULL_END 169 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestSuite.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | /*! 37 | * @class XCTestSuite 38 | * A concrete subclass of XCTest, XCTestSuite is a collection of test cases. Suites 39 | * are usually managed by the IDE, but XCTestSuite also provides API for dynamic test 40 | * and suite management: 41 | 42 | XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"]; 43 | [suite addTest:[MathTest testCaseWithSelector:@selector(testAdd)]]; 44 | [suite addTest:[MathTest testCaseWithSelector:@selector(testDivideByZero)]]; 45 | 46 | * Alternatively, a test suite can extract the tests to be run automatically. To do so, 47 | * pass the class of your test case class to the suite's constructor: 48 | 49 | XCTestSuite *suite = [XCTestSuite testSuiteForTestCaseClass:[MathTest class]]; 50 | 51 | * This creates a suite with all the methods starting with "test" that take no arguments. 52 | * Also, a test suite of all the test cases found in the runtime can be created automatically: 53 | 54 | XCTestSuite *suite = [XCTestSuite defaultTestSuite]; 55 | 56 | * This creates a suite of suites with all the XCTestCase subclasses methods that start 57 | * with "test" and take no arguments. 58 | */ 59 | @interface XCTestSuite : XCTest { 60 | #ifndef __OBJC2__ 61 | @private 62 | id _internalImplementation; 63 | #endif 64 | } 65 | 66 | + (instancetype)defaultTestSuite; 67 | + (instancetype)testSuiteForBundlePath:(NSString *)bundlePath; 68 | + (instancetype)testSuiteForTestCaseWithName:(NSString *)name; 69 | + (instancetype)testSuiteForTestCaseClass:(Class)testCaseClass; 70 | 71 | + (instancetype)testSuiteWithName:(NSString *)name; 72 | - (instancetype)initWithName:(NSString *)name NS_DESIGNATED_INITIALIZER; 73 | 74 | - (void)addTest:(XCTest *)test; 75 | 76 | @property (readonly, copy) NSArray <__kindof XCTest *> *tests; 77 | 78 | @end 79 | 80 | NS_ASSUME_NONNULL_END 81 | 82 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCTestSuiteRun.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | @interface XCTestSuiteRun : XCTestRun { 37 | #ifndef __OBJC2__ 38 | @private 39 | NSMutableArray *_testRuns; 40 | #endif 41 | } 42 | 43 | @property (readonly, copy) NSArray *testRuns; 44 | 45 | - (void)addTestRun:(XCTestRun *)testRun; 46 | 47 | @end 48 | 49 | NS_ASSUME_NONNULL_END 50 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIApplication.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | #if XCT_UI_TESTING_AVAILABLE 11 | 12 | NS_CLASS_AVAILABLE(10_11, 9_0) 13 | 14 | /*! Proxy for an application. The information identifying the application is specified in the Xcode target settings as the "Target Application". */ 15 | @interface XCUIApplication : XCUIElement 16 | 17 | /*! 18 | * Launches the application. This call is synchronous and when it returns the application is launched 19 | * and ready to handle user events. Any failure in the launch sequence is reported as a test failure 20 | * and halts the test at this point. If the application is already running, this call will first 21 | * terminate the existing instance to ensure clean state of the launched instance. 22 | */ 23 | - (void)launch; 24 | 25 | /*! 26 | * Terminates any running instance of the application. If the application has an existing debug session 27 | * via Xcode, the termination is implemented as a halt via that debug connection. Otherwise, a SIGKILL 28 | * is sent to the process. 29 | */ 30 | - (void)terminate; 31 | 32 | /*! 33 | * The arguments that will be passed to the application on launch. If not modified, these are the 34 | * arguments that Xcode will pass on launch. Those arguments can be changed, added to, or removed. 35 | * Unlike NSTask, it is legal to modify these arguments after the application has been launched. These 36 | * changes will not affect the current launch session, but will take effect the next time the application 37 | * is launched. 38 | */ 39 | @property (nonatomic, copy) NSArray *launchArguments; 40 | 41 | /*! 42 | * The environment that will be passed to the application on launch. If not modified, this is the 43 | * environment that Xcode will pass on launch. Those variables can be changed, added to, or removed. 44 | * Unlike NSTask, it is legal to modify the environment after the application has been launched. These 45 | * changes will not affect the current launch session, but will take effect the next time the application 46 | * is launched. 47 | */ 48 | @property (nonatomic, copy) NSDictionary *launchEnvironment; 49 | 50 | @end 51 | 52 | #endif 53 | 54 | NS_ASSUME_NONNULL_END 55 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUICoordinate.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if TARGET_OS_IPHONE 8 | #import 9 | #else 10 | #import 11 | #endif 12 | 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | #if XCT_UI_TESTING_AVAILABLE && !TARGET_OS_TV 17 | 18 | @class XCUIElement; 19 | 20 | NS_CLASS_AVAILABLE(10_11, 9_0) 21 | 22 | /*! A coordinate represents a location on screen, relative to some element. Coordinates are dynamic, just like the elements to which they refer, and may compute different screen locations at different times, or be invalid if the referenced element does not exist. */ 23 | @interface XCUICoordinate : NSObject 24 | 25 | /*! Coordinates are never instantiated directly. Instead, they are created by elements or by other coordinates. */ 26 | - (instancetype)init NS_UNAVAILABLE; 27 | 28 | /*! The element that the coordinate is based on, either directly or via the coordinate from which it was derived. */ 29 | @property (readonly) XCUIElement *referencedElement; 30 | 31 | /*! The dynamically computed value of the coordinate's location on screen. Note that this value is dependent on the current frame of the referenced element; if the element's frame changes, so will the value returned by this property. If the referenced element does exist when this is called, it will fail the test; check the referenced element's exists property if the element may not be present. */ 32 | @property (readonly) CGPoint screenPoint; 33 | 34 | /*! Creates a new coordinate with an absolute offset in points from the original coordinate. */ 35 | - (XCUICoordinate *)coordinateWithOffset:(CGVector)offsetVector; 36 | 37 | @end 38 | 39 | #if TARGET_OS_IPHONE 40 | 41 | @interface XCUICoordinate (XCUICoordinateTouchEvents) 42 | 43 | - (void)tap; 44 | - (void)doubleTap; 45 | - (void)pressForDuration:(NSTimeInterval)duration; 46 | - (void)pressForDuration:(NSTimeInterval)duration thenDragToCoordinate:(XCUICoordinate *)otherCoordinate; 47 | 48 | @end 49 | 50 | #endif // TARGET_OS_IPHONE 51 | 52 | #if TARGET_OS_OSX 53 | 54 | @interface XCUICoordinate (XCUICoordinateMouseEvents) 55 | 56 | - (void)hover; 57 | - (void)click; 58 | - (void)doubleClick; 59 | - (void)rightClick; 60 | - (void)clickForDuration:(NSTimeInterval)duration thenDragToCoordinate:(XCUICoordinate *)otherCoordinate; 61 | - (void)scrollByDeltaX:(CGFloat)deltaX deltaY:(CGFloat)deltaY; 62 | 63 | @end 64 | 65 | @interface XCUICoordinate (XCUICoordinateTouchBarEvents) 66 | 67 | - (void)tap; 68 | - (void)doubleTap; 69 | - (void)pressForDuration:(NSTimeInterval)duration; 70 | - (void)pressForDuration:(NSTimeInterval)duration thenDragToCoordinate:(XCUICoordinate *)otherCoordinate; 71 | 72 | @end 73 | 74 | #endif // TARGET_OS_OSX 75 | 76 | #endif 77 | 78 | NS_ASSUME_NONNULL_END 79 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIDevice.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | #if TARGET_OS_IPHONE 10 | 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | /*! 16 | * @enum XCUIDeviceButton 17 | * 18 | * Represents a physical button on a device. 19 | * 20 | * @note Some buttons are not available in the Simulator, and should not be used in your tests. 21 | * You can use a block like this: 22 | * 23 | * #if !TARGET_OS_SIMULATOR 24 | * // test code that depends on buttons not available in the Simulator 25 | * #endif 26 | * 27 | * in your test code to ensure it does not call unavailable APIs. 28 | */ 29 | typedef NS_ENUM(NSInteger, XCUIDeviceButton) { 30 | XCUIDeviceButtonHome = 1, 31 | XCUIDeviceButtonVolumeUp XCTEST_SIMULATOR_UNAVAILABLE("This API is not available in the Simulator, see the XCUIDeviceButton documentation for details.") = 2, 32 | XCUIDeviceButtonVolumeDown XCTEST_SIMULATOR_UNAVAILABLE("This API is not available in the Simulator, see the XCUIDeviceButton documentation for details.") = 3 33 | }; 34 | 35 | /*! Represents a device, providing an interface for simulating events involving physical buttons and device state. */ 36 | NS_CLASS_AVAILABLE(NA, 9_0) 37 | @interface XCUIDevice : NSObject 38 | 39 | /*! The current device. */ 40 | + (XCUIDevice *)sharedDevice; 41 | 42 | #if TARGET_OS_IOS 43 | /*! The orientation of the device. */ 44 | @property (nonatomic) UIDeviceOrientation orientation; 45 | #endif 46 | 47 | /*! Simulates the user pressing a physical button. */ 48 | - (void)pressButton:(XCUIDeviceButton)button; 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | 54 | #endif 55 | 56 | #endif 57 | 58 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if TARGET_OS_IPHONE 8 | #import 9 | #else 10 | #import 11 | #endif 12 | 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | #if XCT_UI_TESTING_AVAILABLE 19 | 20 | NS_ENUM_AVAILABLE(10_11, 9_0) 21 | typedef NS_OPTIONS(NSUInteger, XCUIKeyModifierFlags) { 22 | XCUIKeyModifierNone = 0, 23 | XCUIKeyModifierAlphaShift = (1UL << 0), 24 | XCUIKeyModifierShift = (1UL << 1), 25 | XCUIKeyModifierControl = (1UL << 2), 26 | XCUIKeyModifierAlternate = (1UL << 3), 27 | XCUIKeyModifierOption = XCUIKeyModifierAlternate, 28 | XCUIKeyModifierCommand = (1UL << 4), 29 | }; 30 | 31 | @class XCUIElementQuery; 32 | @class XCUICoordinate; 33 | 34 | /*! 35 | * @class XCUIElement (/seealso XCUIElementAttributes) 36 | * Elements are objects encapsulating the information needed to dynamically locate a user interface 37 | * element in an application. Elements are described in terms of queries /seealso XCUIElementQuery. 38 | */ 39 | NS_CLASS_AVAILABLE(10_11, 9_0) 40 | @interface XCUIElement : NSObject 41 | 42 | /*! Test to determine if the element exists. */ 43 | @property (readonly) BOOL exists; 44 | 45 | /*! Whether or not a hit point can be computed for the element for the purpose of synthesizing events. */ 46 | @property (readonly, getter = isHittable) BOOL hittable; 47 | 48 | /*! Returns a query for all descendants of the element matching the specified type. */ 49 | - (XCUIElementQuery *)descendantsMatchingType:(XCUIElementType)type; 50 | 51 | /*! Returns a query for direct children of the element matching the specified type. */ 52 | - (XCUIElementQuery *)childrenMatchingType:(XCUIElementType)type; 53 | 54 | #if !TARGET_OS_TV 55 | /*! Creates and returns a new coordinate that will compute its screen point by adding the offset multiplied by the size of the element’s frame to the origin of the element’s frame. */ 56 | - (XCUICoordinate *)coordinateWithNormalizedOffset:(CGVector)normalizedOffset; 57 | #endif 58 | 59 | /*! 60 | @discussion 61 | Provides debugging information about the element. The data in the string will vary based on the 62 | time at which it is captured, but it may include any of the following as well as additional data: 63 | • Values for the elements attributes. 64 | • The entire tree of descendants rooted at the element. 65 | • The element's query. 66 | This data should be used for debugging only - depending on any of the data as part of a test is unsupported. 67 | */ 68 | @property (readonly, copy) NSString *debugDescription; 69 | 70 | @end 71 | 72 | #pragma mark - Event Synthesis 73 | 74 | /*! 75 | * @category Events 76 | * Events that can be synthesized relative to an XCUIElement object. When an event API is called, the element 77 | * will be resolved. If zero or multiple matches are found, an error will be raised. 78 | */ 79 | @interface XCUIElement (XCUIElementKeyboardEvents) 80 | 81 | /*! 82 | * Types a string into the element. The element or a descendant must have keyboard focus; otherwise an 83 | * error is raised. 84 | * 85 | * This API discards any modifiers set in the current context by +performWithKeyModifiers:block: so that 86 | * it strictly interprets the provided text. To input keys with modifier flags, use -typeKey:modifierFlags:. 87 | */ 88 | - (void)typeText:(NSString *)text; 89 | 90 | #if TARGET_OS_OSX 91 | 92 | /*! 93 | * Hold modifier keys while the given block runs. This method pushes and pops the modifiers as global state 94 | * without need for reference to a particular element. Inside the block, elements can be clicked on, dragged 95 | * from, typed into, etc. 96 | */ 97 | + (void)performWithKeyModifiers:(XCUIKeyModifierFlags)flags block:(void (^)(void))block; 98 | 99 | /*! 100 | * Types a single key with the specified modifier flags. Although `key` is a string, it must represent 101 | * a single key on a physical keyboard; strings that resolve to multiple keys will raise an error at runtime. 102 | * In addition to literal string key representations like "a", "6", and "[", keys such as the arrow keys, 103 | * command, control, option, and function keys can be typed using constants defined for them in XCUIKeyboardKeys.h 104 | */ 105 | - (void)typeKey:(NSString *)key modifierFlags:(XCUIKeyModifierFlags)flags; 106 | 107 | #endif // TARGET_OS_OSX 108 | 109 | @end 110 | 111 | #if TARGET_OS_IOS 112 | 113 | @interface XCUIElement (XCUIElementTouchEvents) 114 | 115 | /*! 116 | * Sends a tap event to a hittable point computed for the element. 117 | */ 118 | - (void)tap; 119 | 120 | /*! 121 | * Sends a double tap event to a hittable point computed for the element. 122 | */ 123 | - (void)doubleTap; 124 | 125 | /*! 126 | * Sends a two finger tap event to a hittable point computed for the element. 127 | */ 128 | - (void)twoFingerTap; 129 | 130 | /*! 131 | * Sends one or more taps with one of more touch points. 132 | * 133 | * @param numberOfTaps 134 | * The number of taps. 135 | * 136 | * @param numberOfTouches 137 | * The number of touch points. 138 | */ 139 | - (void)tapWithNumberOfTaps:(NSUInteger)numberOfTaps numberOfTouches:(NSUInteger)numberOfTouches; 140 | 141 | /*! 142 | * Sends a long press gesture to a hittable point computed for the element, holding for the specified duration. 143 | * 144 | * @param duration 145 | * Duration in seconds. 146 | */ 147 | - (void)pressForDuration:(NSTimeInterval)duration; 148 | 149 | /*! 150 | * Initiates a press-and-hold gesture that then drags to another element, suitable for table cell reordering and similar operations. 151 | * @param duration 152 | * Duration of the initial press-and-hold. 153 | * @param otherElement 154 | * The element to finish the drag gesture over. In the example of table cell reordering, this would be the reorder element of the destination row. 155 | */ 156 | - (void)pressForDuration:(NSTimeInterval)duration thenDragToElement:(XCUIElement *)otherElement; 157 | 158 | /*! 159 | * Sends a swipe-up gesture. 160 | */ 161 | - (void)swipeUp; 162 | 163 | /*! 164 | * Sends a swipe-down gesture. 165 | */ 166 | - (void)swipeDown; 167 | 168 | /*! 169 | * Sends a swipe-left gesture. 170 | */ 171 | - (void)swipeLeft; 172 | 173 | /*! 174 | * Sends a swipe-right gesture. 175 | */ 176 | - (void)swipeRight; 177 | 178 | /*! 179 | * Sends a pinching gesture with two touches. 180 | * 181 | * The system makes a best effort to synthesize the requested scale and velocity: absolute accuracy is not guaranteed. 182 | * Some values may not be possible based on the size of the element's frame - these will result in test failures. 183 | * 184 | * @param scale 185 | * The scale of the pinch gesture. Use a scale between 0 and 1 to "pinch close" or zoom out and a scale greater than 1 to "pinch open" or zoom in. 186 | * 187 | * @param velocity 188 | * The velocity of the pinch in scale factor per second. 189 | */ 190 | - (void)pinchWithScale:(CGFloat)scale velocity:(CGFloat)velocity; 191 | 192 | /*! 193 | * Sends a rotation gesture with two touches. 194 | * 195 | * The system makes a best effort to synthesize the requested rotation and velocity: absolute accuracy is not guaranteed. 196 | * Some values may not be possible based on the size of the element's frame - these will result in test failures. 197 | * 198 | * @param rotation 199 | * The rotation of the gesture in radians. 200 | * 201 | * @param velocity 202 | * The velocity of the rotation gesture in radians per second. 203 | */ 204 | - (void)rotate:(CGFloat)rotation withVelocity:(CGFloat)velocity; 205 | 206 | @end 207 | 208 | #endif // TARGET_OS_IOS 209 | 210 | #if TARGET_OS_OSX 211 | 212 | @interface XCUIElement (XCUIElementMouseEvents) 213 | 214 | /*! 215 | * Moves the cursor over the element. 216 | */ 217 | - (void)hover; 218 | 219 | /*! 220 | * Sends a click event to a hittable point computed for the element. 221 | */ 222 | - (void)click; 223 | 224 | /*! 225 | * Sends a double click event to a hittable point computed for the element. 226 | */ 227 | - (void)doubleClick; 228 | 229 | /*! 230 | * Sends a right click event to a hittable point computed for the element. 231 | */ 232 | - (void)rightClick; 233 | 234 | /*! 235 | * Clicks and holds for a specified duration (generally long enough to start a drag operation) then drags 236 | * to the other element. 237 | */ 238 | - (void)clickForDuration:(NSTimeInterval)duration thenDragToElement:(XCUIElement *)otherElement; 239 | 240 | /*! 241 | * Scroll the view the specified pixels, x and y. 242 | */ 243 | - (void)scrollByDeltaX:(CGFloat)deltaX deltaY:(CGFloat)deltaY; 244 | 245 | @end 246 | 247 | /*! This category on XCUIElement provides functionality for automating elements in the Touch Bar. */ 248 | @interface XCUIElement (XCUIElementTouchBarEvents) 249 | 250 | /*! 251 | * Sends a tap event to a central point computed for the element. 252 | */ 253 | - (void)tap; 254 | 255 | /*! 256 | * Sends a double tap event to a central point computed for the element. 257 | */ 258 | - (void)doubleTap; 259 | 260 | /*! 261 | * Sends a long press gesture to a central point computed for the element, holding for the specified duration. 262 | * 263 | * @param duration 264 | * Duration in seconds. 265 | */ 266 | - (void)pressForDuration:(NSTimeInterval)duration; 267 | 268 | /*! 269 | * Initiates a press-and-hold gesture that then drags to another element. 270 | * @param duration 271 | * Duration of the initial press-and-hold. 272 | * @param otherElement 273 | * The element to finish the drag gesture over. 274 | */ 275 | - (void)pressForDuration:(NSTimeInterval)duration thenDragToElement:(XCUIElement *)otherElement; 276 | 277 | @end 278 | 279 | #endif // TARGET_OS_OSX 280 | 281 | /*! This category on XCUIElement provides functionality for automating UISlider and NSSlider. */ 282 | @interface XCUIElement (XCUIElementTypeSlider) 283 | 284 | /*! Manipulates the UI to change the displayed value of the slider to one based on a normalized position. 0 corresponds to the minimum value of the slider, 1 corresponds to its maximum value. The adjustment is a "best effort" to move the indicator to the desired position; absolute fidelity is not guaranteed. */ 285 | - (void)adjustToNormalizedSliderPosition:(CGFloat)normalizedSliderPosition; 286 | 287 | /*! Returns the position of the slider's indicator as a normalized value where 0 corresponds to the minimum value of the slider and 1 corresponds to its maximum value. */ 288 | @property (readonly) CGFloat normalizedSliderPosition; 289 | 290 | @end 291 | 292 | #if TARGET_OS_IOS 293 | 294 | /*! This category on XCUIElement provides functionality for automating the picker wheels of UIPickerViews and UIDatePickers. */ 295 | @interface XCUIElement (XCUIElementTypePickerWheel) 296 | 297 | /*! Changes the displayed value for the picker wheel. Will generate a test failure if the specified value is not available. */ 298 | - (void)adjustToPickerWheelValue:(NSString *)pickerWheelValue; 299 | 300 | @end 301 | 302 | #endif // TARGET_OS_IOS 303 | 304 | #endif 305 | 306 | NS_ASSUME_NONNULL_END 307 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIElementAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | #if XCT_UI_TESTING_AVAILABLE 9 | 10 | #if TARGET_OS_IPHONE 11 | 12 | #import 13 | 14 | typedef NS_ENUM(NSInteger, XCUIUserInterfaceSizeClass) { 15 | XCUIUserInterfaceSizeClassUnspecified = UIUserInterfaceSizeClassUnspecified, 16 | XCUIUserInterfaceSizeClassCompact = UIUserInterfaceSizeClassCompact, 17 | XCUIUserInterfaceSizeClassRegular = UIUserInterfaceSizeClassRegular, 18 | }; 19 | 20 | #else 21 | 22 | #import 23 | 24 | typedef NS_ENUM(NSInteger, XCUIUserInterfaceSizeClass) { 25 | XCUIUserInterfaceSizeClassUnspecified = 0, 26 | }; 27 | 28 | #endif 29 | 30 | NS_ASSUME_NONNULL_BEGIN 31 | 32 | /*! Protocol describing the attributes exposed on user interface elements and available during query matching. These attributes represent data exposed to the Accessibility system. */ 33 | @protocol XCUIElementAttributes 34 | 35 | /*! The accessibility identifier. */ 36 | @property (readonly) NSString *identifier; 37 | 38 | /*! The frame of the element in the screen coordinate space. */ 39 | @property (readonly) CGRect frame; 40 | 41 | /*! The raw value attribute of the element. Depending on the element, the actual type can vary. */ 42 | @property (readonly, nullable) id value; 43 | 44 | /*! The title attribute of the element. */ 45 | @property (readonly, copy) NSString *title; 46 | 47 | /*! The label attribute of the element. */ 48 | @property (readonly, copy) NSString *label; 49 | 50 | /*! The type of the element. /seealso XCUIElementType. */ 51 | @property (readonly) XCUIElementType elementType; 52 | 53 | /*! Whether or not the element is enabled for user interaction. */ 54 | @property (readonly, getter = isEnabled) BOOL enabled; 55 | 56 | /*! The horizontal size class of the element. */ 57 | @property (readonly) XCUIUserInterfaceSizeClass horizontalSizeClass; 58 | 59 | /*! The vertical size class of the element. */ 60 | @property (readonly) XCUIUserInterfaceSizeClass verticalSizeClass; 61 | 62 | /*! The value that is displayed when the element has no value. */ 63 | @property (readonly, nullable) NSString *placeholderValue; 64 | 65 | /*! Whether or not the element is selected. */ 66 | @property (readonly, getter = isSelected) BOOL selected; 67 | 68 | #if TARGET_OS_TV 69 | /*! Whether or not the elment has UI focus. */ 70 | @property (readonly) BOOL hasFocus; 71 | #endif 72 | 73 | @end 74 | 75 | NS_ASSUME_NONNULL_END 76 | 77 | #endif 78 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIElementQuery.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | XCT_EXPORT NSString *XCUIIdentifierCloseWindow; 15 | XCT_EXPORT NSString *XCUIIdentifierMinimizeWindow; 16 | XCT_EXPORT NSString *XCUIIdentifierZoomWindow; 17 | XCT_EXPORT NSString *XCUIIdentifierFullScreenWindow; 18 | 19 | @class XCUIElement; 20 | 21 | /*! Object for locating elements that can be chained with other queries. */ 22 | NS_CLASS_AVAILABLE(10_11, 9_0) 23 | @interface XCUIElementQuery : NSObject 24 | 25 | /*! Returns an element that will use the query for resolution. */ 26 | @property (readonly) XCUIElement *element; 27 | 28 | /*! Evaluates the query at the time it is called and returns the number of matches found. */ 29 | @property (readonly) NSUInteger count; 30 | 31 | /*! Returns an element that will resolve to the index into the query's result set. */ 32 | - (XCUIElement *)elementAtIndex:(NSUInteger)index NS_DEPRECATED(10_11, 10_11, 9_0, 9_0, "Use elementBoundByIndex instead."); 33 | 34 | /*! Returns an element that will use the index into the query's results to determine which underlying accessibility element it is matched with. */ 35 | - (XCUIElement *)elementBoundByIndex:(NSUInteger)index; 36 | 37 | /*! Returns an element that matches the predicate. The predicate will be evaluated against objects of type id. */ 38 | - (XCUIElement *)elementMatchingPredicate:(NSPredicate *)predicate; 39 | 40 | /*! Returns an element that matches the type and identifier. */ 41 | - (XCUIElement *)elementMatchingType:(XCUIElementType)elementType identifier:(nullable NSString *)identifier; 42 | 43 | /*! Keyed subscripting is implemented as a shortcut for matching an identifier only. For example, app.descendants["Foo"] -> XCUIElement. */ 44 | - (XCUIElement *)objectForKeyedSubscript:(NSString *)key; 45 | 46 | /*! Immediately evaluates the query and returns an array of elements bound to the resulting accessibility elements. */ 47 | @property (readonly, copy) NSArray *allElementsBoundByAccessibilityElement; 48 | 49 | /*! Immediately evaluates the query and returns an array of elements bound by the index of each result. */ 50 | @property (readonly, copy) NSArray *allElementsBoundByIndex; 51 | 52 | /*! Returns a new query that finds the descendants of all the elements found by the receiver. */ 53 | - (XCUIElementQuery *)descendantsMatchingType:(XCUIElementType)type; 54 | 55 | /*! Returns a new query that finds the direct children of all the elements found by the receiver. */ 56 | - (XCUIElementQuery *)childrenMatchingType:(XCUIElementType)type; 57 | 58 | /*! Returns a new query that applies the specified attributes or predicate to the receiver. The predicate will be evaluated against objects of type id. */ 59 | - (XCUIElementQuery *)matchingPredicate:(NSPredicate *)predicate; 60 | - (XCUIElementQuery *)matchingType:(XCUIElementType)elementType identifier:(nullable NSString *)identifier; 61 | - (XCUIElementQuery *)matchingIdentifier:(NSString *)identifier; 62 | 63 | /*! Returns a new query for finding elements that contain a descendant matching the specification. The predicate will be evaluated against objects of type id. */ 64 | - (XCUIElementQuery *)containingPredicate:(NSPredicate *)predicate; 65 | - (XCUIElementQuery *)containingType:(XCUIElementType)elementType identifier:(nullable NSString *)identifier; 66 | 67 | /*! 68 | @discussion 69 | Provides debugging information about the query. The data in the string will vary based on the time 70 | at which it is captured, but it may include any of the following as well as additional data: 71 | • A description of each step of the query. 72 | • Information about the inputs and matched outputs of each step of the query. 73 | This data should be used for debugging only - depending on any of the data as part of a test is unsupported. 74 | */ 75 | @property (readonly, copy) NSString *debugDescription; 76 | 77 | @end 78 | 79 | NS_ASSUME_NONNULL_END 80 | 81 | #endif 82 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIElementTypeQueryProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @class XCUIElementQuery; 12 | 13 | @protocol XCUIElementTypeQueryProvider 14 | 15 | @property (readonly, copy) XCUIElementQuery *touchBars; 16 | @property (readonly, copy) XCUIElementQuery *groups; 17 | @property (readonly, copy) XCUIElementQuery *windows; 18 | @property (readonly, copy) XCUIElementQuery *sheets; 19 | @property (readonly, copy) XCUIElementQuery *drawers; 20 | @property (readonly, copy) XCUIElementQuery *alerts; 21 | @property (readonly, copy) XCUIElementQuery *dialogs; 22 | @property (readonly, copy) XCUIElementQuery *buttons; 23 | @property (readonly, copy) XCUIElementQuery *radioButtons; 24 | @property (readonly, copy) XCUIElementQuery *radioGroups; 25 | @property (readonly, copy) XCUIElementQuery *checkBoxes; 26 | @property (readonly, copy) XCUIElementQuery *disclosureTriangles; 27 | @property (readonly, copy) XCUIElementQuery *popUpButtons; 28 | @property (readonly, copy) XCUIElementQuery *comboBoxes; 29 | @property (readonly, copy) XCUIElementQuery *menuButtons; 30 | @property (readonly, copy) XCUIElementQuery *toolbarButtons; 31 | @property (readonly, copy) XCUIElementQuery *popovers; 32 | @property (readonly, copy) XCUIElementQuery *keyboards; 33 | @property (readonly, copy) XCUIElementQuery *keys; 34 | @property (readonly, copy) XCUIElementQuery *navigationBars; 35 | @property (readonly, copy) XCUIElementQuery *tabBars; 36 | @property (readonly, copy) XCUIElementQuery *tabGroups; 37 | @property (readonly, copy) XCUIElementQuery *toolbars; 38 | @property (readonly, copy) XCUIElementQuery *statusBars; 39 | @property (readonly, copy) XCUIElementQuery *tables; 40 | @property (readonly, copy) XCUIElementQuery *tableRows; 41 | @property (readonly, copy) XCUIElementQuery *tableColumns; 42 | @property (readonly, copy) XCUIElementQuery *outlines; 43 | @property (readonly, copy) XCUIElementQuery *outlineRows; 44 | @property (readonly, copy) XCUIElementQuery *browsers; 45 | @property (readonly, copy) XCUIElementQuery *collectionViews; 46 | @property (readonly, copy) XCUIElementQuery *sliders; 47 | @property (readonly, copy) XCUIElementQuery *pageIndicators; 48 | @property (readonly, copy) XCUIElementQuery *progressIndicators; 49 | @property (readonly, copy) XCUIElementQuery *activityIndicators; 50 | @property (readonly, copy) XCUIElementQuery *segmentedControls; 51 | @property (readonly, copy) XCUIElementQuery *pickers; 52 | @property (readonly, copy) XCUIElementQuery *pickerWheels; 53 | @property (readonly, copy) XCUIElementQuery *switches; 54 | @property (readonly, copy) XCUIElementQuery *toggles; 55 | @property (readonly, copy) XCUIElementQuery *links; 56 | @property (readonly, copy) XCUIElementQuery *images; 57 | @property (readonly, copy) XCUIElementQuery *icons; 58 | @property (readonly, copy) XCUIElementQuery *searchFields; 59 | @property (readonly, copy) XCUIElementQuery *scrollViews; 60 | @property (readonly, copy) XCUIElementQuery *scrollBars; 61 | @property (readonly, copy) XCUIElementQuery *staticTexts; 62 | @property (readonly, copy) XCUIElementQuery *textFields; 63 | @property (readonly, copy) XCUIElementQuery *secureTextFields; 64 | @property (readonly, copy) XCUIElementQuery *datePickers; 65 | @property (readonly, copy) XCUIElementQuery *textViews; 66 | @property (readonly, copy) XCUIElementQuery *menus; 67 | @property (readonly, copy) XCUIElementQuery *menuItems; 68 | @property (readonly, copy) XCUIElementQuery *menuBars; 69 | @property (readonly, copy) XCUIElementQuery *menuBarItems; 70 | @property (readonly, copy) XCUIElementQuery *maps; 71 | @property (readonly, copy) XCUIElementQuery *webViews; 72 | @property (readonly, copy) XCUIElementQuery *steppers; 73 | @property (readonly, copy) XCUIElementQuery *incrementArrows; 74 | @property (readonly, copy) XCUIElementQuery *decrementArrows; 75 | @property (readonly, copy) XCUIElementQuery *tabs; 76 | @property (readonly, copy) XCUIElementQuery *timelines; 77 | @property (readonly, copy) XCUIElementQuery *ratingIndicators; 78 | @property (readonly, copy) XCUIElementQuery *valueIndicators; 79 | @property (readonly, copy) XCUIElementQuery *splitGroups; 80 | @property (readonly, copy) XCUIElementQuery *splitters; 81 | @property (readonly, copy) XCUIElementQuery *relevanceIndicators; 82 | @property (readonly, copy) XCUIElementQuery *colorWells; 83 | @property (readonly, copy) XCUIElementQuery *helpTags; 84 | @property (readonly, copy) XCUIElementQuery *mattes; 85 | @property (readonly, copy) XCUIElementQuery *dockItems; 86 | @property (readonly, copy) XCUIElementQuery *rulers; 87 | @property (readonly, copy) XCUIElementQuery *rulerMarkers; 88 | @property (readonly, copy) XCUIElementQuery *grids; 89 | @property (readonly, copy) XCUIElementQuery *levelIndicators; 90 | @property (readonly, copy) XCUIElementQuery *cells; 91 | @property (readonly, copy) XCUIElementQuery *layoutAreas; 92 | @property (readonly, copy) XCUIElementQuery *layoutItems; 93 | @property (readonly, copy) XCUIElementQuery *handles; 94 | @property (readonly, copy) XCUIElementQuery *otherElements; 95 | 96 | @end 97 | 98 | NS_ASSUME_NONNULL_END 99 | 100 | #endif 101 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIElementTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | NS_ENUM_AVAILABLE(10_11, 9_0) 10 | typedef NS_ENUM(NSUInteger, XCUIElementType) { 11 | XCUIElementTypeAny = 0, 12 | XCUIElementTypeOther = 1, 13 | XCUIElementTypeApplication = 2, 14 | XCUIElementTypeGroup = 3, 15 | XCUIElementTypeWindow = 4, 16 | XCUIElementTypeSheet = 5, 17 | XCUIElementTypeDrawer = 6, 18 | XCUIElementTypeAlert = 7, 19 | XCUIElementTypeDialog = 8, 20 | XCUIElementTypeButton = 9, 21 | XCUIElementTypeRadioButton = 10, 22 | XCUIElementTypeRadioGroup = 11, 23 | XCUIElementTypeCheckBox = 12, 24 | XCUIElementTypeDisclosureTriangle = 13, 25 | XCUIElementTypePopUpButton = 14, 26 | XCUIElementTypeComboBox = 15, 27 | XCUIElementTypeMenuButton = 16, 28 | XCUIElementTypeToolbarButton = 17, 29 | XCUIElementTypePopover = 18, 30 | XCUIElementTypeKeyboard = 19, 31 | XCUIElementTypeKey = 20, 32 | XCUIElementTypeNavigationBar = 21, 33 | XCUIElementTypeTabBar = 22, 34 | XCUIElementTypeTabGroup = 23, 35 | XCUIElementTypeToolbar = 24, 36 | XCUIElementTypeStatusBar = 25, 37 | XCUIElementTypeTable = 26, 38 | XCUIElementTypeTableRow = 27, 39 | XCUIElementTypeTableColumn = 28, 40 | XCUIElementTypeOutline = 29, 41 | XCUIElementTypeOutlineRow = 30, 42 | XCUIElementTypeBrowser = 31, 43 | XCUIElementTypeCollectionView = 32, 44 | XCUIElementTypeSlider = 33, 45 | XCUIElementTypePageIndicator = 34, 46 | XCUIElementTypeProgressIndicator = 35, 47 | XCUIElementTypeActivityIndicator = 36, 48 | XCUIElementTypeSegmentedControl = 37, 49 | XCUIElementTypePicker = 38, 50 | XCUIElementTypePickerWheel = 39, 51 | XCUIElementTypeSwitch = 40, 52 | XCUIElementTypeToggle = 41, 53 | XCUIElementTypeLink = 42, 54 | XCUIElementTypeImage = 43, 55 | XCUIElementTypeIcon = 44, 56 | XCUIElementTypeSearchField = 45, 57 | XCUIElementTypeScrollView = 46, 58 | XCUIElementTypeScrollBar = 47, 59 | XCUIElementTypeStaticText = 48, 60 | XCUIElementTypeTextField = 49, 61 | XCUIElementTypeSecureTextField = 50, 62 | XCUIElementTypeDatePicker = 51, 63 | XCUIElementTypeTextView = 52, 64 | XCUIElementTypeMenu = 53, 65 | XCUIElementTypeMenuItem = 54, 66 | XCUIElementTypeMenuBar = 55, 67 | XCUIElementTypeMenuBarItem = 56, 68 | XCUIElementTypeMap = 57, 69 | XCUIElementTypeWebView = 58, 70 | XCUIElementTypeIncrementArrow = 59, 71 | XCUIElementTypeDecrementArrow = 60, 72 | XCUIElementTypeTimeline = 61, 73 | XCUIElementTypeRatingIndicator = 62, 74 | XCUIElementTypeValueIndicator = 63, 75 | XCUIElementTypeSplitGroup = 64, 76 | XCUIElementTypeSplitter = 65, 77 | XCUIElementTypeRelevanceIndicator = 66, 78 | XCUIElementTypeColorWell = 67, 79 | XCUIElementTypeHelpTag = 68, 80 | XCUIElementTypeMatte = 69, 81 | XCUIElementTypeDockItem = 70, 82 | XCUIElementTypeRuler = 71, 83 | XCUIElementTypeRulerMarker = 72, 84 | XCUIElementTypeGrid = 73, 85 | XCUIElementTypeLevelIndicator = 74, 86 | XCUIElementTypeCell = 75, 87 | XCUIElementTypeLayoutArea = 76, 88 | XCUIElementTypeLayoutItem = 77, 89 | XCUIElementTypeHandle = 78, 90 | XCUIElementTypeStepper = 79, 91 | XCUIElementTypeTab = 80, 92 | XCUIElementTypeTouchBar = 81 93 | }; 94 | 95 | #endif 96 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIKeyboardKeys.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | #if XCT_UI_TESTING_AVAILABLE 9 | 10 | /*! 11 | Constants for use with -[XCUIElement typeKey:modifierFlags:], 12 | representing keys that have no textual representation. These comprise 13 | the set of control, function, and modifier keys found on most keyboards. 14 | */ 15 | 16 | extern NSString *const XCUIKeyboardKeyDelete; 17 | extern NSString *const XCUIKeyboardKeyReturn; 18 | extern NSString *const XCUIKeyboardKeyEnter; 19 | extern NSString *const XCUIKeyboardKeyTab; 20 | extern NSString *const XCUIKeyboardKeySpace; 21 | extern NSString *const XCUIKeyboardKeyEscape; 22 | 23 | extern NSString *const XCUIKeyboardKeyUpArrow; 24 | extern NSString *const XCUIKeyboardKeyDownArrow; 25 | extern NSString *const XCUIKeyboardKeyLeftArrow; 26 | extern NSString *const XCUIKeyboardKeyRightArrow; 27 | 28 | extern NSString *const XCUIKeyboardKeyF1; 29 | extern NSString *const XCUIKeyboardKeyF2; 30 | extern NSString *const XCUIKeyboardKeyF3; 31 | extern NSString *const XCUIKeyboardKeyF4; 32 | extern NSString *const XCUIKeyboardKeyF5; 33 | extern NSString *const XCUIKeyboardKeyF6; 34 | extern NSString *const XCUIKeyboardKeyF7; 35 | extern NSString *const XCUIKeyboardKeyF8; 36 | extern NSString *const XCUIKeyboardKeyF9; 37 | extern NSString *const XCUIKeyboardKeyF10; 38 | extern NSString *const XCUIKeyboardKeyF11; 39 | extern NSString *const XCUIKeyboardKeyF12; 40 | extern NSString *const XCUIKeyboardKeyF13; 41 | extern NSString *const XCUIKeyboardKeyF14; 42 | extern NSString *const XCUIKeyboardKeyF15; 43 | extern NSString *const XCUIKeyboardKeyF16; 44 | extern NSString *const XCUIKeyboardKeyF17; 45 | extern NSString *const XCUIKeyboardKeyF18; 46 | extern NSString *const XCUIKeyboardKeyF19; 47 | 48 | extern NSString *const XCUIKeyboardKeyForwardDelete; 49 | extern NSString *const XCUIKeyboardKeyHome; 50 | extern NSString *const XCUIKeyboardKeyEnd; 51 | extern NSString *const XCUIKeyboardKeyPageUp; 52 | extern NSString *const XCUIKeyboardKeyPageDown; 53 | extern NSString *const XCUIKeyboardKeyClear; 54 | extern NSString *const XCUIKeyboardKeyHelp; 55 | 56 | extern NSString *const XCUIKeyboardKeyCapsLock; 57 | extern NSString *const XCUIKeyboardKeyShift; 58 | extern NSString *const XCUIKeyboardKeyControl; 59 | extern NSString *const XCUIKeyboardKeyOption; 60 | extern NSString *const XCUIKeyboardKeyCommand; 61 | extern NSString *const XCUIKeyboardKeyRightShift; 62 | extern NSString *const XCUIKeyboardKeyRightControl; 63 | extern NSString *const XCUIKeyboardKeyRightOption; 64 | extern NSString *const XCUIKeyboardKeyRightCommand; 65 | extern NSString *const XCUIKeyboardKeySecondaryFn; 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Headers/XCUIRemote.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | #if XCT_UI_TESTING_AVAILABLE 11 | 12 | /*! 13 | * @enum XCUIRemoteButton 14 | * 15 | * A button on a physical remote control. 16 | */ 17 | typedef NS_ENUM(NSUInteger, XCUIRemoteButton) { 18 | XCUIRemoteButtonUp = 0, 19 | XCUIRemoteButtonDown = 1, 20 | XCUIRemoteButtonLeft = 2, 21 | XCUIRemoteButtonRight = 3, 22 | 23 | XCUIRemoteButtonSelect = 4, 24 | XCUIRemoteButtonMenu = 5, 25 | XCUIRemoteButtonPlayPause = 6, 26 | }; 27 | 28 | #if TARGET_OS_TV 29 | 30 | /*! 31 | * @class XCUIRemote 32 | * 33 | * Simulates interaction with a physical remote control. 34 | */ 35 | NS_CLASS_AVAILABLE_IOS(9_0) 36 | @interface XCUIRemote : NSObject 37 | 38 | /*! 39 | * The simulated physical remote control. 40 | */ 41 | + (instancetype)sharedRemote; 42 | 43 | /*! 44 | * Sends a momentary press of a button on a physical remote control. 45 | * 46 | * @param remoteButton 47 | * The button on the physical remote control for which to synthesize a press. 48 | */ 49 | - (void)pressButton:(XCUIRemoteButton)remoteButton; 50 | 51 | /*! 52 | * Sends a press and hold of a button on a physical remote control, holding for the specified duration. 53 | * 54 | * @param remoteButton 55 | * The button on the physical remote control for which to synthesize a press. 56 | * 57 | * @param duration 58 | * Duration in seconds. 59 | */ 60 | - (void)pressButton:(XCUIRemoteButton)remoteButton forDuration:(NSTimeInterval)duration; 61 | 62 | @end 63 | 64 | #endif 65 | 66 | #endif 67 | 68 | NS_ASSUME_NONNULL_END 69 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/Info.plist -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module XCTest { 2 | umbrella header "XCTest.h" 3 | requires objc 4 | export * 5 | } 6 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/TextBasedStubs/XCTest.tbd: -------------------------------------------------------------------------------- 1 | --- !tapi-tbd-v2 2 | archs: [ i386, x86_64 ] 3 | uuids: [ 'i386: 3C6E14E1-3408-3782-BB75-3CDC60174D45', 'x86_64: 14D068AE-3D33-3D18-BAFE-2EF9A4537EA1' ] 4 | platform: ios 5 | flags: [ not_app_extension_safe ] 6 | install-name: '@rpath/XCTest.framework/XCTest' 7 | current-version: 11753.0 8 | objc-constraint: none 9 | exports: 10 | - archs: [ i386, x86_64 ] 11 | symbols: [ '_OBJC_EHTYPE_$__XCTestCaseInterruptionException', _XCCGPointDistanceToPoint, 12 | _XCCGRectMinimumDistanceToPoint, _XCSourceCodeTreeNode_PrefixDelimiter, 13 | _XCSourceCodeTreeNode_SuffixDelimiter, _XCTPerformanceMetric_HighWaterMarkForHeapAllocations, 14 | _XCTPerformanceMetric_HighWaterMarkForVMAllocations, _XCTPerformanceMetric_PersistentHeapAllocations, 15 | _XCTPerformanceMetric_PersistentHeapAllocationsNodes, _XCTPerformanceMetric_PersistentVMAllocations, 16 | _XCTPerformanceMetric_RunTime, _XCTPerformanceMetric_SystemTime, 17 | _XCTPerformanceMetric_TemporaryHeapAllocationsKilobytes, _XCTPerformanceMetric_TemporaryHeapAllocationsNodes, 18 | _XCTPerformanceMetric_TemporaryVMAllocationsKilobytes, _XCTPerformanceMetric_TotalHeapAllocationsKilobytes, 19 | _XCTPerformanceMetric_TransientHeapAllocationsKilobytes, _XCTPerformanceMetric_TransientHeapAllocationsNodes, 20 | _XCTPerformanceMetric_TransientVMAllocationsKilobytes, _XCTPerformanceMetric_UserTime, 21 | _XCTPerformanceMetric_WallClockTime, _XCTSelfTestMain, _XCTestErrorDomain, 22 | _XCTestObserverClassKey, _XCTestScopeAll, _XCTestScopeKey, 23 | _XCTestScopeNone, _XCTestScopeSelf, _XCTestToolKey, _XCTestedUnitPath, 24 | _XCUIIdentifierCloseWindow, _XCUIIdentifierFullScreenWindow, 25 | _XCUIIdentifierMinimizeWindow, _XCUIIdentifierZoomWindow, 26 | _XCUIKeyModifierFlagsFromUIKeyModifierFlags, _XCUIKeyModifierFlagsToDisplayString, 27 | _XCUIKeyModifierFlagsToUIKeyModifierFlags, _XCUIKeyModifiersMaskAll, 28 | _XCUIKeyboardKeyCapsLock, _XCUIKeyboardKeyClear, _XCUIKeyboardKeyCommand, 29 | _XCUIKeyboardKeyControl, _XCUIKeyboardKeyDelete, _XCUIKeyboardKeyDownArrow, 30 | _XCUIKeyboardKeyEnd, _XCUIKeyboardKeyEnter, _XCUIKeyboardKeyEscape, 31 | _XCUIKeyboardKeyF1, _XCUIKeyboardKeyF10, _XCUIKeyboardKeyF11, 32 | _XCUIKeyboardKeyF12, _XCUIKeyboardKeyF13, _XCUIKeyboardKeyF14, 33 | _XCUIKeyboardKeyF15, _XCUIKeyboardKeyF16, _XCUIKeyboardKeyF17, 34 | _XCUIKeyboardKeyF18, _XCUIKeyboardKeyF19, _XCUIKeyboardKeyF2, 35 | _XCUIKeyboardKeyF3, _XCUIKeyboardKeyF4, _XCUIKeyboardKeyF5, 36 | _XCUIKeyboardKeyF6, _XCUIKeyboardKeyF7, _XCUIKeyboardKeyF8, 37 | _XCUIKeyboardKeyF9, _XCUIKeyboardKeyForwardDelete, _XCUIKeyboardKeyHelp, 38 | _XCUIKeyboardKeyHome, _XCUIKeyboardKeyLeftArrow, _XCUIKeyboardKeyOption, 39 | _XCUIKeyboardKeyPageDown, _XCUIKeyboardKeyPageUp, _XCUIKeyboardKeyReturn, 40 | _XCUIKeyboardKeyRightArrow, _XCUIKeyboardKeyRightCommand, 41 | _XCUIKeyboardKeyRightControl, _XCUIKeyboardKeyRightOption, 42 | _XCUIKeyboardKeyRightShift, _XCUIKeyboardKeySecondaryFn, _XCUIKeyboardKeyShift, 43 | _XCUIKeyboardKeySpace, _XCUIKeyboardKeyTab, _XCUIKeyboardKeyUpArrow, 44 | _XCUIMatchingPointAlignment, _XCUIMatchingPointIgnoreFrame, 45 | _XCUIMatchingPointIgnoringFrames, _XCUIMatchingPointInFrame, 46 | _XCUIMatchingPointSuggestedPoints, _XCUnoccludedSubrects, 47 | __XCINFLog, __XCLog, __XCTAXMessagingTimeout, __XCTAXResponseTimeout, 48 | __XCTApplicationStateTimeout, __XCTCurrentTestCase, __XCTDaemonConfirmationTimeout, 49 | __XCTDescriptionForValue, __XCTEventConfirmationTimeout, __XCTFailInCurrentTest, 50 | __XCTFailureFormat, __XCTFailureHandler, __XCTPreformattedFailureHandler, 51 | __XCTSetAXMessagingTimeout, __XCTSetAXResponseTimeout, __XCTSetApplicationStateTimeout, 52 | __XCTSetDaemonConfirmationTimeout, __XCTSetEventConfirmationTimeout, 53 | __XCTestMain, __XCWaitLoopIsValid ] 54 | objc-classes: [ _XCAXClient_iOS, _XCAccessibilityElement, _XCActivityRecord, 55 | _XCApplicationMonitor, _XCElementSnapshot, _XCEventGenerator, 56 | _XCPointerEvent, _XCPointerEventPath, _XCSourceCodeRecording, 57 | _XCSourceCodeTreeNode, _XCSymbolicationRecord, _XCSynthesizedEventRecord, 58 | _XCTest, _XCTestCase, _XCTestCaseRun, _XCTestConfiguration, 59 | _XCTestContext, _XCTestDriver, _XCTestExpectation, _XCTestExpectationWaiter, 60 | _XCTestLog, _XCTestObservationCenter, _XCTestObserver, _XCTestProbe, 61 | _XCTestRun, _XCTestSuite, _XCTestSuiteRun, _XCUIApplication, 62 | _XCUIApplicationImpl, _XCUIApplicationProcess, _XCUICoordinate, 63 | _XCUIDevice, _XCUIElement, _XCUIElementQuery, _XCUIRecorderUtilities, 64 | __XCTestCaseImplementation, __XCTestCaseInterruptionException ] 65 | objc-ivars: [ _XCAXClient_iOS._alertNotificationCounter, _XCAXClient_iOS._cacheAccessibilityLoadedValuesForPIDs, 66 | _XCAXClient_iOS._userTestingNotificationHandlers, _XCApplicationMonitor._applicationImplementations, 67 | _XCApplicationMonitor._applicationProcessesForPID, _XCApplicationMonitor._applicationProcessesForToken, 68 | _XCApplicationMonitor._launchedApplications, _XCEventGenerator._eventQueue, 69 | _XCEventGenerator._generation, _XCEventGenerator._generationObserver, 70 | _XCTestConfiguration._absolutePath, _XCTestConfiguration._aggregateStatisticsBeforeCrash, 71 | _XCTestConfiguration._baselineFileRelativePath, _XCTestConfiguration._baselineFileURL, 72 | _XCTestConfiguration._disablePerformanceMetrics, _XCTestConfiguration._initializeForUITesting, 73 | _XCTestConfiguration._pathToXcodeReportingSocket, _XCTestConfiguration._productModuleName, 74 | _XCTestConfiguration._reportActivities, _XCTestConfiguration._reportResultsToIDE, 75 | _XCTestConfiguration._sessionIdentifier, _XCTestConfiguration._targetApplicationBundleID, 76 | _XCTestConfiguration._targetApplicationPath, _XCTestConfiguration._testBundleRelativePath, 77 | _XCTestConfiguration._testBundleURL, _XCTestConfiguration._testsMustRunOnMainThread, 78 | _XCTestConfiguration._testsToRun, _XCTestConfiguration._testsToSkip, 79 | _XCTestConfiguration._treatMissingBaselinesAsFailures ] 80 | ... 81 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XCTest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/XCTest -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XCTest.tbd: -------------------------------------------------------------------------------- 1 | --- !tapi-tbd-v2 2 | archs: [ i386, x86_64 ] 3 | uuids: [ 'i386: 3C6E14E1-3408-3782-BB75-3CDC60174D45', 'x86_64: 14D068AE-3D33-3D18-BAFE-2EF9A4537EA1' ] 4 | platform: ios 5 | flags: [ not_app_extension_safe ] 6 | install-name: '@rpath/XCTest.framework/XCTest' 7 | current-version: 11753.0 8 | objc-constraint: none 9 | exports: 10 | - archs: [ i386, x86_64 ] 11 | symbols: [ '_OBJC_EHTYPE_$__XCTestCaseInterruptionException', _XCCGPointDistanceToPoint, 12 | _XCCGRectMinimumDistanceToPoint, _XCSourceCodeTreeNode_PrefixDelimiter, 13 | _XCSourceCodeTreeNode_SuffixDelimiter, _XCTPerformanceMetric_HighWaterMarkForHeapAllocations, 14 | _XCTPerformanceMetric_HighWaterMarkForVMAllocations, _XCTPerformanceMetric_PersistentHeapAllocations, 15 | _XCTPerformanceMetric_PersistentHeapAllocationsNodes, _XCTPerformanceMetric_PersistentVMAllocations, 16 | _XCTPerformanceMetric_RunTime, _XCTPerformanceMetric_SystemTime, 17 | _XCTPerformanceMetric_TemporaryHeapAllocationsKilobytes, _XCTPerformanceMetric_TemporaryHeapAllocationsNodes, 18 | _XCTPerformanceMetric_TemporaryVMAllocationsKilobytes, _XCTPerformanceMetric_TotalHeapAllocationsKilobytes, 19 | _XCTPerformanceMetric_TransientHeapAllocationsKilobytes, _XCTPerformanceMetric_TransientHeapAllocationsNodes, 20 | _XCTPerformanceMetric_TransientVMAllocationsKilobytes, _XCTPerformanceMetric_UserTime, 21 | _XCTPerformanceMetric_WallClockTime, _XCTSelfTestMain, _XCTestErrorDomain, 22 | _XCTestObserverClassKey, _XCTestScopeAll, _XCTestScopeKey, 23 | _XCTestScopeNone, _XCTestScopeSelf, _XCTestToolKey, _XCTestedUnitPath, 24 | _XCUIIdentifierCloseWindow, _XCUIIdentifierFullScreenWindow, 25 | _XCUIIdentifierMinimizeWindow, _XCUIIdentifierZoomWindow, 26 | _XCUIKeyModifierFlagsFromUIKeyModifierFlags, _XCUIKeyModifierFlagsToDisplayString, 27 | _XCUIKeyModifierFlagsToUIKeyModifierFlags, _XCUIKeyModifiersMaskAll, 28 | _XCUIKeyboardKeyCapsLock, _XCUIKeyboardKeyClear, _XCUIKeyboardKeyCommand, 29 | _XCUIKeyboardKeyControl, _XCUIKeyboardKeyDelete, _XCUIKeyboardKeyDownArrow, 30 | _XCUIKeyboardKeyEnd, _XCUIKeyboardKeyEnter, _XCUIKeyboardKeyEscape, 31 | _XCUIKeyboardKeyF1, _XCUIKeyboardKeyF10, _XCUIKeyboardKeyF11, 32 | _XCUIKeyboardKeyF12, _XCUIKeyboardKeyF13, _XCUIKeyboardKeyF14, 33 | _XCUIKeyboardKeyF15, _XCUIKeyboardKeyF16, _XCUIKeyboardKeyF17, 34 | _XCUIKeyboardKeyF18, _XCUIKeyboardKeyF19, _XCUIKeyboardKeyF2, 35 | _XCUIKeyboardKeyF3, _XCUIKeyboardKeyF4, _XCUIKeyboardKeyF5, 36 | _XCUIKeyboardKeyF6, _XCUIKeyboardKeyF7, _XCUIKeyboardKeyF8, 37 | _XCUIKeyboardKeyF9, _XCUIKeyboardKeyForwardDelete, _XCUIKeyboardKeyHelp, 38 | _XCUIKeyboardKeyHome, _XCUIKeyboardKeyLeftArrow, _XCUIKeyboardKeyOption, 39 | _XCUIKeyboardKeyPageDown, _XCUIKeyboardKeyPageUp, _XCUIKeyboardKeyReturn, 40 | _XCUIKeyboardKeyRightArrow, _XCUIKeyboardKeyRightCommand, 41 | _XCUIKeyboardKeyRightControl, _XCUIKeyboardKeyRightOption, 42 | _XCUIKeyboardKeyRightShift, _XCUIKeyboardKeySecondaryFn, _XCUIKeyboardKeyShift, 43 | _XCUIKeyboardKeySpace, _XCUIKeyboardKeyTab, _XCUIKeyboardKeyUpArrow, 44 | _XCUIMatchingPointAlignment, _XCUIMatchingPointIgnoreFrame, 45 | _XCUIMatchingPointIgnoringFrames, _XCUIMatchingPointInFrame, 46 | _XCUIMatchingPointSuggestedPoints, _XCUnoccludedSubrects, 47 | __XCINFLog, __XCLog, __XCTAXMessagingTimeout, __XCTAXResponseTimeout, 48 | __XCTApplicationStateTimeout, __XCTCurrentTestCase, __XCTDaemonConfirmationTimeout, 49 | __XCTDescriptionForValue, __XCTEventConfirmationTimeout, __XCTFailInCurrentTest, 50 | __XCTFailureFormat, __XCTFailureHandler, __XCTPreformattedFailureHandler, 51 | __XCTSetAXMessagingTimeout, __XCTSetAXResponseTimeout, __XCTSetApplicationStateTimeout, 52 | __XCTSetDaemonConfirmationTimeout, __XCTSetEventConfirmationTimeout, 53 | __XCTestMain, __XCWaitLoopIsValid ] 54 | objc-classes: [ _XCAXClient_iOS, _XCAccessibilityElement, _XCActivityRecord, 55 | _XCApplicationMonitor, _XCElementSnapshot, _XCEventGenerator, 56 | _XCPointerEvent, _XCPointerEventPath, _XCSourceCodeRecording, 57 | _XCSourceCodeTreeNode, _XCSymbolicationRecord, _XCSynthesizedEventRecord, 58 | _XCTest, _XCTestCase, _XCTestCaseRun, _XCTestConfiguration, 59 | _XCTestContext, _XCTestDriver, _XCTestExpectation, _XCTestExpectationWaiter, 60 | _XCTestLog, _XCTestObservationCenter, _XCTestObserver, _XCTestProbe, 61 | _XCTestRun, _XCTestSuite, _XCTestSuiteRun, _XCUIApplication, 62 | _XCUIApplicationImpl, _XCUIApplicationProcess, _XCUICoordinate, 63 | _XCUIDevice, _XCUIElement, _XCUIElementQuery, _XCUIRecorderUtilities, 64 | __XCTestCaseImplementation, __XCTestCaseInterruptionException ] 65 | objc-ivars: [ _XCAXClient_iOS._alertNotificationCounter, _XCAXClient_iOS._cacheAccessibilityLoadedValuesForPIDs, 66 | _XCAXClient_iOS._userTestingNotificationHandlers, _XCApplicationMonitor._applicationImplementations, 67 | _XCApplicationMonitor._applicationProcessesForPID, _XCApplicationMonitor._applicationProcessesForToken, 68 | _XCApplicationMonitor._launchedApplications, _XCEventGenerator._eventQueue, 69 | _XCEventGenerator._generation, _XCEventGenerator._generationObserver, 70 | _XCTestConfiguration._absolutePath, _XCTestConfiguration._aggregateStatisticsBeforeCrash, 71 | _XCTestConfiguration._baselineFileRelativePath, _XCTestConfiguration._baselineFileURL, 72 | _XCTestConfiguration._disablePerformanceMetrics, _XCTestConfiguration._initializeForUITesting, 73 | _XCTestConfiguration._pathToXcodeReportingSocket, _XCTestConfiguration._productModuleName, 74 | _XCTestConfiguration._reportActivities, _XCTestConfiguration._reportResultsToIDE, 75 | _XCTestConfiguration._sessionIdentifier, _XCTestConfiguration._targetApplicationBundleID, 76 | _XCTestConfiguration._targetApplicationPath, _XCTestConfiguration._testBundleRelativePath, 77 | _XCTestConfiguration._testBundleURL, _XCTestConfiguration._testsMustRunOnMainThread, 78 | _XCTestConfiguration._testsToRun, _XCTestConfiguration._testsToSkip, 79 | _XCTestConfiguration._treatMissingBaselinesAsFailures ] 80 | ... 81 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/Info.plist -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/XCUIRecorderService: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/XCUIRecorderService -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | kyL3MKt/Hh8S9COPUG40xFkWaoQ= 10 | 11 | version.plist 12 | 13 | xrAWmlwsl7/ygiScJZnSfbwgffI= 14 | 15 | 16 | files2 17 | 18 | version.plist 19 | 20 | xrAWmlwsl7/ygiScJZnSfbwgffI= 21 | 22 | 23 | rules 24 | 25 | ^ 26 | 27 | ^.*\.lproj/ 28 | 29 | optional 30 | 31 | weight 32 | 1000 33 | 34 | ^.*\.lproj/locversion.plist$ 35 | 36 | omit 37 | 38 | weight 39 | 1100 40 | 41 | ^version.plist$ 42 | 43 | 44 | rules2 45 | 46 | .*\.dSYM($|/) 47 | 48 | weight 49 | 11 50 | 51 | ^ 52 | 53 | weight 54 | 20 55 | 56 | ^(.*/)?\.DS_Store$ 57 | 58 | omit 59 | 60 | weight 61 | 2000 62 | 63 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 64 | 65 | nested 66 | 67 | weight 68 | 10 69 | 70 | ^.* 71 | 72 | ^.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^Info\.plist$ 87 | 88 | omit 89 | 90 | weight 91 | 20 92 | 93 | ^PkgInfo$ 94 | 95 | omit 96 | 97 | weight 98 | 20 99 | 100 | ^[^/]+$ 101 | 102 | nested 103 | 104 | weight 105 | 10 106 | 107 | ^embedded\.provisionprofile$ 108 | 109 | weight 110 | 20 111 | 112 | ^version\.plist$ 113 | 114 | weight 115 | 20 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | XCTest 7 | BuildVersion 8 | 4 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | ProjectName 14 | XCTest_Sim 15 | SourceVersion 16 | 11753000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/Info.plist -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | i1ilUYSCt6kbw9IUS/EVTKdd4Dg= 10 | 11 | version.plist 12 | 13 | xrAWmlwsl7/ygiScJZnSfbwgffI= 14 | 15 | 16 | files2 17 | 18 | version.plist 19 | 20 | xrAWmlwsl7/ygiScJZnSfbwgffI= 21 | 22 | 23 | rules 24 | 25 | ^ 26 | 27 | ^.*\.lproj/ 28 | 29 | optional 30 | 31 | weight 32 | 1000 33 | 34 | ^.*\.lproj/locversion.plist$ 35 | 36 | omit 37 | 38 | weight 39 | 1100 40 | 41 | ^version.plist$ 42 | 43 | 44 | rules2 45 | 46 | .*\.dSYM($|/) 47 | 48 | weight 49 | 11 50 | 51 | ^ 52 | 53 | weight 54 | 20 55 | 56 | ^(.*/)?\.DS_Store$ 57 | 58 | omit 59 | 60 | weight 61 | 2000 62 | 63 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 64 | 65 | nested 66 | 67 | weight 68 | 10 69 | 70 | ^.* 71 | 72 | ^.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^Info\.plist$ 87 | 88 | omit 89 | 90 | weight 91 | 20 92 | 93 | ^PkgInfo$ 94 | 95 | omit 96 | 97 | weight 98 | 20 99 | 100 | ^[^/]+$ 101 | 102 | nested 103 | 104 | weight 105 | 10 106 | 107 | ^embedded\.provisionprofile$ 108 | 109 | weight 110 | 20 111 | 112 | ^version\.plist$ 113 | 114 | weight 115 | 20 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | XCTest 7 | BuildVersion 8 | 4 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | ProjectName 14 | XCTest_Sim 15 | SourceVersion 16 | 11753000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/xctestSymbolicator: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/xctestSymbolicator -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Headers/XCAbstractTest.h 8 | 9 | glimZR9g23UWmtfTfpa3DtRU32o= 10 | 11 | Headers/XCTest.h 12 | 13 | FeItRoIRWX9yeukRVtg0l8vKWu0= 14 | 15 | Headers/XCTestAssertions.h 16 | 17 | t430vwqgq3wiAocVV386i0N+lOY= 18 | 19 | Headers/XCTestAssertionsImpl.h 20 | 21 | ZbDVHohdSHIPtEqmg7zN34qa0T4= 22 | 23 | Headers/XCTestCase+AsynchronousTesting.h 24 | 25 | PL1ZOdDhdZzPNjCxecLsCysb3OQ= 26 | 27 | Headers/XCTestCase.h 28 | 29 | YzjVm663E0vT+P6c0ORX46w/zQ0= 30 | 31 | Headers/XCTestCaseRun.h 32 | 33 | /XUqDHA/BFdQDUxQU8Ft5LXo/Ps= 34 | 35 | Headers/XCTestDefines.h 36 | 37 | Dz7Tri4hztdVrwGfOLzpE53H3kk= 38 | 39 | Headers/XCTestErrors.h 40 | 41 | oZFqJmcKHuKZIgeKOwsFDxhfEEc= 42 | 43 | Headers/XCTestExpectation.h 44 | 45 | dwE0LefMLJ+L/tF8PwAW0Adc7I0= 46 | 47 | Headers/XCTestLog.h 48 | 49 | 9BU/gwbaKcfn2L9dfo2dHRFN6Bc= 50 | 51 | Headers/XCTestObservation.h 52 | 53 | 24hjfD82jAN7/PhxU8RiEWTo5gs= 54 | 55 | Headers/XCTestObservationCenter.h 56 | 57 | 0rP5BQIIjFP/HdaM97/A9mUteRg= 58 | 59 | Headers/XCTestObserver.h 60 | 61 | DV3Cjdd1CAe6nYFEzmUrCtnzxQg= 62 | 63 | Headers/XCTestProbe.h 64 | 65 | fIVR0xRsxMAabrJmeGX3hPDwL0Y= 66 | 67 | Headers/XCTestRun.h 68 | 69 | LAZ8VzMsuBB9pLfqrrnltc7bl1E= 70 | 71 | Headers/XCTestSuite.h 72 | 73 | 8I97NjqsYFEmiGVB5ZkFAdtT3ic= 74 | 75 | Headers/XCTestSuiteRun.h 76 | 77 | OX+g52bOAnhjLVDKkweTKM8jTHQ= 78 | 79 | Headers/XCUIApplication.h 80 | 81 | Dck9MbhtVGBeWIgQiEVEpTDtrTw= 82 | 83 | Headers/XCUICoordinate.h 84 | 85 | h93xArf56RHLG0oQUpJsVrR2esg= 86 | 87 | Headers/XCUIDevice.h 88 | 89 | 9pxehhPyrWb03igVA7PwEtgkzLM= 90 | 91 | Headers/XCUIElement.h 92 | 93 | lCooSq4totv00z9Cpjsf3qZk1fw= 94 | 95 | Headers/XCUIElementAttributes.h 96 | 97 | kWitRD0ClLa1hUvctZ6Jw2DmOW8= 98 | 99 | Headers/XCUIElementQuery.h 100 | 101 | owQe3VU8ucSdoJ7QiOvOS/rHAww= 102 | 103 | Headers/XCUIElementTypeQueryProvider.h 104 | 105 | hRIiU4QCL7DtuacVXjl7A5M0MNo= 106 | 107 | Headers/XCUIElementTypes.h 108 | 109 | U3yZ50UN++NXOpSMIy49comcTwc= 110 | 111 | Headers/XCUIKeyboardKeys.h 112 | 113 | RE/yMpRDrcsUljcKW/YgNGkt5Oc= 114 | 115 | Headers/XCUIRemote.h 116 | 117 | GuQMu1KdZMJO3/yRBQHEbrVVv38= 118 | 119 | Info.plist 120 | 121 | zUEJesmFI6/+tEAh5MVteZyrRHQ= 122 | 123 | Modules/module.modulemap 124 | 125 | 0hPLcrGRiL8HEYGWbYL+qhcqBZI= 126 | 127 | TextBasedStubs/XCTest.tbd 128 | 129 | a88XIbyyK4c/LWXFfuMspfqry7g= 130 | 131 | XPCServices/XCUIRecorderService.xpc/Info.plist 132 | 133 | kyL3MKt/Hh8S9COPUG40xFkWaoQ= 134 | 135 | XPCServices/XCUIRecorderService.xpc/XCUIRecorderService 136 | 137 | Vt88WAlPf+8RECv5LdNqJk5Vc+4= 138 | 139 | XPCServices/XCUIRecorderService.xpc/_CodeSignature/CodeResources 140 | 141 | NXvlk2GusNV3KfxdNqqvTQCctx0= 142 | 143 | XPCServices/XCUIRecorderService.xpc/version.plist 144 | 145 | xrAWmlwsl7/ygiScJZnSfbwgffI= 146 | 147 | XPCServices/xctestSymbolicator.xpc/Info.plist 148 | 149 | i1ilUYSCt6kbw9IUS/EVTKdd4Dg= 150 | 151 | XPCServices/xctestSymbolicator.xpc/_CodeSignature/CodeResources 152 | 153 | ihFdkvXv9V89Ad9iVO8ZcjkANi4= 154 | 155 | XPCServices/xctestSymbolicator.xpc/version.plist 156 | 157 | xrAWmlwsl7/ygiScJZnSfbwgffI= 158 | 159 | XPCServices/xctestSymbolicator.xpc/xctestSymbolicator 160 | 161 | xdIaL9B4tgZhOSKveOJN39oxA0A= 162 | 163 | en.lproj/InfoPlist.strings 164 | 165 | hash 166 | 167 | WbY3O0G7IBs11w3Ll/yYYaDQvo8= 168 | 169 | optional 170 | 171 | 172 | version.plist 173 | 174 | vHbX6lUB887dP9NbQ5tEl5TRRKU= 175 | 176 | 177 | files2 178 | 179 | Headers/XCAbstractTest.h 180 | 181 | glimZR9g23UWmtfTfpa3DtRU32o= 182 | 183 | Headers/XCTest.h 184 | 185 | FeItRoIRWX9yeukRVtg0l8vKWu0= 186 | 187 | Headers/XCTestAssertions.h 188 | 189 | t430vwqgq3wiAocVV386i0N+lOY= 190 | 191 | Headers/XCTestAssertionsImpl.h 192 | 193 | ZbDVHohdSHIPtEqmg7zN34qa0T4= 194 | 195 | Headers/XCTestCase+AsynchronousTesting.h 196 | 197 | PL1ZOdDhdZzPNjCxecLsCysb3OQ= 198 | 199 | Headers/XCTestCase.h 200 | 201 | YzjVm663E0vT+P6c0ORX46w/zQ0= 202 | 203 | Headers/XCTestCaseRun.h 204 | 205 | /XUqDHA/BFdQDUxQU8Ft5LXo/Ps= 206 | 207 | Headers/XCTestDefines.h 208 | 209 | Dz7Tri4hztdVrwGfOLzpE53H3kk= 210 | 211 | Headers/XCTestErrors.h 212 | 213 | oZFqJmcKHuKZIgeKOwsFDxhfEEc= 214 | 215 | Headers/XCTestExpectation.h 216 | 217 | dwE0LefMLJ+L/tF8PwAW0Adc7I0= 218 | 219 | Headers/XCTestLog.h 220 | 221 | 9BU/gwbaKcfn2L9dfo2dHRFN6Bc= 222 | 223 | Headers/XCTestObservation.h 224 | 225 | 24hjfD82jAN7/PhxU8RiEWTo5gs= 226 | 227 | Headers/XCTestObservationCenter.h 228 | 229 | 0rP5BQIIjFP/HdaM97/A9mUteRg= 230 | 231 | Headers/XCTestObserver.h 232 | 233 | DV3Cjdd1CAe6nYFEzmUrCtnzxQg= 234 | 235 | Headers/XCTestProbe.h 236 | 237 | fIVR0xRsxMAabrJmeGX3hPDwL0Y= 238 | 239 | Headers/XCTestRun.h 240 | 241 | LAZ8VzMsuBB9pLfqrrnltc7bl1E= 242 | 243 | Headers/XCTestSuite.h 244 | 245 | 8I97NjqsYFEmiGVB5ZkFAdtT3ic= 246 | 247 | Headers/XCTestSuiteRun.h 248 | 249 | OX+g52bOAnhjLVDKkweTKM8jTHQ= 250 | 251 | Headers/XCUIApplication.h 252 | 253 | Dck9MbhtVGBeWIgQiEVEpTDtrTw= 254 | 255 | Headers/XCUICoordinate.h 256 | 257 | h93xArf56RHLG0oQUpJsVrR2esg= 258 | 259 | Headers/XCUIDevice.h 260 | 261 | 9pxehhPyrWb03igVA7PwEtgkzLM= 262 | 263 | Headers/XCUIElement.h 264 | 265 | lCooSq4totv00z9Cpjsf3qZk1fw= 266 | 267 | Headers/XCUIElementAttributes.h 268 | 269 | kWitRD0ClLa1hUvctZ6Jw2DmOW8= 270 | 271 | Headers/XCUIElementQuery.h 272 | 273 | owQe3VU8ucSdoJ7QiOvOS/rHAww= 274 | 275 | Headers/XCUIElementTypeQueryProvider.h 276 | 277 | hRIiU4QCL7DtuacVXjl7A5M0MNo= 278 | 279 | Headers/XCUIElementTypes.h 280 | 281 | U3yZ50UN++NXOpSMIy49comcTwc= 282 | 283 | Headers/XCUIKeyboardKeys.h 284 | 285 | RE/yMpRDrcsUljcKW/YgNGkt5Oc= 286 | 287 | Headers/XCUIRemote.h 288 | 289 | GuQMu1KdZMJO3/yRBQHEbrVVv38= 290 | 291 | Modules/module.modulemap 292 | 293 | 0hPLcrGRiL8HEYGWbYL+qhcqBZI= 294 | 295 | TextBasedStubs/XCTest.tbd 296 | 297 | a88XIbyyK4c/LWXFfuMspfqry7g= 298 | 299 | XCTest.tbd 300 | 301 | symlink 302 | TextBasedStubs/XCTest.tbd 303 | 304 | XPCServices/XCUIRecorderService.xpc/Info.plist 305 | 306 | kyL3MKt/Hh8S9COPUG40xFkWaoQ= 307 | 308 | XPCServices/XCUIRecorderService.xpc/XCUIRecorderService 309 | 310 | Vt88WAlPf+8RECv5LdNqJk5Vc+4= 311 | 312 | XPCServices/XCUIRecorderService.xpc/_CodeSignature/CodeResources 313 | 314 | NXvlk2GusNV3KfxdNqqvTQCctx0= 315 | 316 | XPCServices/XCUIRecorderService.xpc/version.plist 317 | 318 | xrAWmlwsl7/ygiScJZnSfbwgffI= 319 | 320 | XPCServices/xctestSymbolicator.xpc/Info.plist 321 | 322 | i1ilUYSCt6kbw9IUS/EVTKdd4Dg= 323 | 324 | XPCServices/xctestSymbolicator.xpc/_CodeSignature/CodeResources 325 | 326 | ihFdkvXv9V89Ad9iVO8ZcjkANi4= 327 | 328 | XPCServices/xctestSymbolicator.xpc/version.plist 329 | 330 | xrAWmlwsl7/ygiScJZnSfbwgffI= 331 | 332 | XPCServices/xctestSymbolicator.xpc/xctestSymbolicator 333 | 334 | xdIaL9B4tgZhOSKveOJN39oxA0A= 335 | 336 | en.lproj/InfoPlist.strings 337 | 338 | hash 339 | 340 | WbY3O0G7IBs11w3Ll/yYYaDQvo8= 341 | 342 | optional 343 | 344 | 345 | version.plist 346 | 347 | vHbX6lUB887dP9NbQ5tEl5TRRKU= 348 | 349 | 350 | rules 351 | 352 | ^ 353 | 354 | ^.*\.lproj/ 355 | 356 | optional 357 | 358 | weight 359 | 1000 360 | 361 | ^.*\.lproj/locversion.plist$ 362 | 363 | omit 364 | 365 | weight 366 | 1100 367 | 368 | ^version.plist$ 369 | 370 | 371 | rules2 372 | 373 | .*\.dSYM($|/) 374 | 375 | weight 376 | 11 377 | 378 | ^ 379 | 380 | weight 381 | 20 382 | 383 | ^(.*/)?\.DS_Store$ 384 | 385 | omit 386 | 387 | weight 388 | 2000 389 | 390 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 391 | 392 | nested 393 | 394 | weight 395 | 10 396 | 397 | ^.* 398 | 399 | ^.*\.lproj/ 400 | 401 | optional 402 | 403 | weight 404 | 1000 405 | 406 | ^.*\.lproj/locversion.plist$ 407 | 408 | omit 409 | 410 | weight 411 | 1100 412 | 413 | ^Info\.plist$ 414 | 415 | omit 416 | 417 | weight 418 | 20 419 | 420 | ^PkgInfo$ 421 | 422 | omit 423 | 424 | weight 425 | 20 426 | 427 | ^[^/]+$ 428 | 429 | nested 430 | 431 | weight 432 | 10 433 | 434 | ^embedded\.provisionprofile$ 435 | 436 | weight 437 | 20 438 | 439 | ^version\.plist$ 440 | 441 | weight 442 | 20 443 | 444 | 445 | 446 | 447 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Frameworks/XCTest.framework/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /VodQAReactNative.app/Frameworks/XCTest.framework/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | XCTest 7 | BuildVersion 8 | 4 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 11753 13 | ProjectName 14 | XCTest_Sim 15 | SourceVersion 16 | 11753000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /VodQAReactNative.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/Info.plist -------------------------------------------------------------------------------- /VodQAReactNative.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /VodQAReactNative.app/PlugIns/VodQAReactNativeTests.xctest/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/PlugIns/VodQAReactNativeTests.xctest/Info.plist -------------------------------------------------------------------------------- /VodQAReactNative.app/PlugIns/VodQAReactNativeTests.xctest/VodQAReactNativeTests: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/PlugIns/VodQAReactNativeTests.xctest/VodQAReactNativeTests -------------------------------------------------------------------------------- /VodQAReactNative.app/PlugIns/VodQAReactNativeTests.xctest/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | OtPSl+cby9T52VG3pXYOvc12CEE= 10 | 11 | 12 | files2 13 | 14 | rules 15 | 16 | ^ 17 | 18 | ^.*\.lproj/ 19 | 20 | optional 21 | 22 | weight 23 | 1000 24 | 25 | ^.*\.lproj/locversion.plist$ 26 | 27 | omit 28 | 29 | weight 30 | 1100 31 | 32 | ^version.plist$ 33 | 34 | 35 | rules2 36 | 37 | .*\.dSYM($|/) 38 | 39 | weight 40 | 11 41 | 42 | ^ 43 | 44 | weight 45 | 20 46 | 47 | ^(.*/)?\.DS_Store$ 48 | 49 | omit 50 | 51 | weight 52 | 2000 53 | 54 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 55 | 56 | nested 57 | 58 | weight 59 | 10 60 | 61 | ^.* 62 | 63 | ^.*\.lproj/ 64 | 65 | optional 66 | 67 | weight 68 | 1000 69 | 70 | ^.*\.lproj/locversion.plist$ 71 | 72 | omit 73 | 74 | weight 75 | 1100 76 | 77 | ^Info\.plist$ 78 | 79 | omit 80 | 81 | weight 82 | 20 83 | 84 | ^PkgInfo$ 85 | 86 | omit 87 | 88 | weight 89 | 20 90 | 91 | ^[^/]+$ 92 | 93 | nested 94 | 95 | weight 96 | 10 97 | 98 | ^embedded\.provisionprofile$ 99 | 100 | weight 101 | 20 102 | 103 | ^version\.plist$ 104 | 105 | weight 106 | 20 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /VodQAReactNative.app/VodQAReactNative: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/VodQAReactNative -------------------------------------------------------------------------------- /VodQAReactNative.app/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Base.lproj/LaunchScreen.nib 8 | 9 | hash 10 | 11 | OeYtoDYL/i6QiKywUcfIoQu3oqY= 12 | 13 | optional 14 | 15 | 16 | Info.plist 17 | 18 | /vbj0zqxjpr4i73E2OQrB319FYU= 19 | 20 | PkgInfo 21 | 22 | n57qDP4tZfLD1rCS43W0B4LQjzE= 23 | 24 | assets/assets/vodqa.png 25 | 26 | X+SEyPbOImSKnuGZWjmgc4jnyoU= 27 | 28 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon.png 29 | 30 | HQQuB4amjtwGUXBLceBrWJNimVs= 31 | 32 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@1.5x.png 33 | 34 | fyhAnrjV5JZ0o7tt89t5OIcPTLk= 35 | 36 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@2x.png 37 | 38 | YQmWVwhekbk+X2RKpCPehMO0Ldk= 39 | 40 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@3x.png 41 | 42 | QKLfEeBLZVOc0niKWvbIrcWyxuM= 43 | 44 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@4x.png 45 | 46 | h6iaRr2yULlW7VdhK/SZVFO7UBM= 47 | 48 | main.jsbundle 49 | 50 | uRHptVCkqR5OD8oo09rZcdMPLZk= 51 | 52 | main.jsbundle.meta 53 | 54 | ppNnpZRgzMYkxofBjrbOvgfV52A= 55 | 56 | 57 | files2 58 | 59 | Base.lproj/LaunchScreen.nib 60 | 61 | hash 62 | 63 | OeYtoDYL/i6QiKywUcfIoQu3oqY= 64 | 65 | hash2 66 | 67 | 5yviA1Wha90zH/lvFOLOeOpTCDpv4LBNv53H9ohT4wU= 68 | 69 | optional 70 | 71 | 72 | assets/assets/vodqa.png 73 | 74 | hash 75 | 76 | X+SEyPbOImSKnuGZWjmgc4jnyoU= 77 | 78 | hash2 79 | 80 | gO0dq/+jnRXuaiJt+OocBk6GuSglAOt46nSLQkGk1tw= 81 | 82 | 83 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon.png 84 | 85 | hash 86 | 87 | HQQuB4amjtwGUXBLceBrWJNimVs= 88 | 89 | hash2 90 | 91 | ZRmGSaJTHS3L1geJPCTsy3ta28sYsD/gSOfZHsq95eA= 92 | 93 | 94 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@1.5x.png 95 | 96 | hash 97 | 98 | fyhAnrjV5JZ0o7tt89t5OIcPTLk= 99 | 100 | hash2 101 | 102 | sy0MsvX5EG4qN5eyCJTMmuBXN1YgSb0fT1H6KD3Xkj8= 103 | 104 | 105 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@2x.png 106 | 107 | hash 108 | 109 | YQmWVwhekbk+X2RKpCPehMO0Ldk= 110 | 111 | hash2 112 | 113 | xeXoDgmh6mz50dLBF7YNRharVPyFToLffO76MoOETlg= 114 | 115 | 116 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@3x.png 117 | 118 | hash 119 | 120 | QKLfEeBLZVOc0niKWvbIrcWyxuM= 121 | 122 | hash2 123 | 124 | GrXKevPCf+AB3RpyQfVtjn5ladOg7y5vToH8KQfVcMg= 125 | 126 | 127 | assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@4x.png 128 | 129 | hash 130 | 131 | h6iaRr2yULlW7VdhK/SZVFO7UBM= 132 | 133 | hash2 134 | 135 | yxFa1GbJewG0cdCqfhCkFthTjRQEENRWSwgGsiXcyFQ= 136 | 137 | 138 | main.jsbundle 139 | 140 | hash 141 | 142 | uRHptVCkqR5OD8oo09rZcdMPLZk= 143 | 144 | hash2 145 | 146 | 1wNuH+jVwK/+jPnAd5zmrAwT8pG2jnae4aVipWGlnvc= 147 | 148 | 149 | main.jsbundle.meta 150 | 151 | hash 152 | 153 | ppNnpZRgzMYkxofBjrbOvgfV52A= 154 | 155 | hash2 156 | 157 | knr6Z3ZHBZNFQqrWIv/ASRSwZqicyMMx6T2+aP3TzWQ= 158 | 159 | 160 | 161 | rules 162 | 163 | ^ 164 | 165 | ^.*\.lproj/ 166 | 167 | optional 168 | 169 | weight 170 | 1000 171 | 172 | ^.*\.lproj/locversion.plist$ 173 | 174 | omit 175 | 176 | weight 177 | 1100 178 | 179 | ^version.plist$ 180 | 181 | 182 | rules2 183 | 184 | .*\.dSYM($|/) 185 | 186 | weight 187 | 11 188 | 189 | ^ 190 | 191 | weight 192 | 20 193 | 194 | ^(.*/)?\.DS_Store$ 195 | 196 | omit 197 | 198 | weight 199 | 2000 200 | 201 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 202 | 203 | nested 204 | 205 | weight 206 | 10 207 | 208 | ^.* 209 | 210 | ^.*\.lproj/ 211 | 212 | optional 213 | 214 | weight 215 | 1000 216 | 217 | ^.*\.lproj/locversion.plist$ 218 | 219 | omit 220 | 221 | weight 222 | 1100 223 | 224 | ^Info\.plist$ 225 | 226 | omit 227 | 228 | weight 229 | 20 230 | 231 | ^PkgInfo$ 232 | 233 | omit 234 | 235 | weight 236 | 20 237 | 238 | ^[^/]+$ 239 | 240 | nested 241 | 242 | weight 243 | 10 244 | 245 | ^embedded\.provisionprofile$ 246 | 247 | weight 248 | 20 249 | 250 | ^version\.plist$ 251 | 252 | weight 253 | 20 254 | 255 | 256 | 257 | 258 | -------------------------------------------------------------------------------- /VodQAReactNative.app/assets/assets/vodqa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/assets/assets/vodqa.png -------------------------------------------------------------------------------- /VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon.png -------------------------------------------------------------------------------- /VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@1.5x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@1.5x.png -------------------------------------------------------------------------------- /VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@2x.png -------------------------------------------------------------------------------- /VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@3x.png -------------------------------------------------------------------------------- /VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/assets/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/assets/back-icon@4x.png -------------------------------------------------------------------------------- /VodQAReactNative.app/main.jsbundle.meta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AppiumTestDistribution/DeviceManager/4b03e430606a23e6de9501f22185662b2dd2fe44/VodQAReactNative.app/main.jsbundle.meta -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | com.github.appiumtestdistribution 7 | devicemanager 8 | 3.1 9 | DeviceManager 10 | "Utility to Manage Connected iOS and Android Devices (Including iOS Simulators and Android Emulators)" 11 | https://github.com/AppiumTestDistribution/DeviceManager 12 | 13 | https://github.com/AppiumTestDistribution/DeviceManager.git 14 | scm:git:git@github.com:AppiumTestDistribution/DeviceManager.git 15 | scm:git:git@github.com:AppiumTestDistribution/DeviceManager.git 16 | 17 | 18 | 19 | GNU Public License version 3.0 20 | http://www.gnu.org/licenses/gpl-3.0.txt 21 | 22 | 23 | 24 | 25 | Sai Krishna 26 | saikrishna321@yahoo.com 27 | 28 | owner 29 | 30 | 31 | 32 | Srinivasan Sekar 33 | srinivasan.sekar1990@gmail.com 34 | 35 | 36 | 37 | 38 | junit 39 | junit 40 | 4.12 41 | 42 | 43 | org.projectlombok 44 | lombok 45 | 1.18.8 46 | 47 | 48 | org.apache.logging.log4j 49 | log4j-core 50 | 2.20.0 51 | 52 | 53 | 54 | org.json 55 | json 56 | 20170516 57 | 58 | 59 | 60 | 61 | ossrh 62 | https://oss.sonatype.org/content/repositories/snapshots 63 | 64 | 65 | ossrh 66 | https://oss.sonatype.org/service/local/staging/deploy/maven2/ 67 | 68 | 69 | 70 | 71 | 72 | 73 | org.apache.maven.plugins 74 | maven-surefire-plugin 75 | 2.22.2 76 | 77 | 78 | org.apache.maven.plugins 79 | maven-source-plugin 80 | 3.1.0 81 | 82 | 83 | attach-sources 84 | 85 | jar 86 | 87 | 88 | 89 | 90 | 91 | org.apache.maven.plugins 92 | maven-gpg-plugin 93 | 1.6 94 | 95 | 96 | sign-artifacts 97 | verify 98 | 99 | sign 100 | 101 | 102 | 103 | 104 | 105 | maven-assembly-plugin 106 | 3.1.1 107 | 108 | 109 | jar-with-dependencies 110 | 111 | 112 | 113 | 114 | package 115 | 116 | single 117 | 118 | 119 | 120 | 121 | 122 | org.apache.maven.plugins 123 | maven-javadoc-plugin 124 | 125 | 126 | attach-javadocs 127 | 128 | jar 129 | 130 | 131 | 132 | 133 | 134 | org.apache.maven.plugins 135 | maven-compiler-plugin 136 | 137 | 1.8 138 | 1.8 139 | 140 | 141 | 142 | 143 | 144 | 145 | disable-java8-doclint 146 | 147 | [1.8,) 148 | 149 | 150 | -Xdoclint:none 151 | 152 | 153 | 154 | 155 | -------------------------------------------------------------------------------- /src/main/java/com/github/android/AndroidManager.java: -------------------------------------------------------------------------------- 1 | package com.github.android; 2 | 3 | import com.github.device.Device; 4 | import com.github.interfaces.Manager; 5 | import com.github.utils.CommandPromptUtil; 6 | import org.json.JSONObject; 7 | 8 | import java.io.IOException; 9 | import java.lang.reflect.Field; 10 | import java.util.*; 11 | 12 | public class AndroidManager implements Manager { 13 | 14 | private CommandPromptUtil cmd; 15 | private JSONObject adbDevices; 16 | private static Map processUDIDs = new HashMap<>(); 17 | Process process; 18 | 19 | public AndroidManager() { 20 | cmd = new CommandPromptUtil(); 21 | adbDevices = new JSONObject(); 22 | } 23 | 24 | 25 | public void startADB() throws Exception { 26 | String output = cmd.runCommandThruProcess("adb start-server"); 27 | String[] lines = output.split("\n"); 28 | if (lines[0].contains("internal or external command")) { 29 | System.out.println("Please set ANDROID_HOME in your system variables"); 30 | } 31 | } 32 | 33 | public JSONObject getDeviceInfo(String deviceID) throws InterruptedException, IOException { 34 | String model = 35 | cmd.runCommandThruProcess("adb -s " + deviceID 36 | + " shell getprop ro.product.model"); 37 | String brand = 38 | cmd.runCommandThruProcess("adb -s " + deviceID 39 | + " shell getprop ro.product.brand") 40 | .replaceAll("\\s+", ""); 41 | String osVersion = cmd.runCommandThruProcess( 42 | "adb -s " + deviceID + " shell getprop ro.build.version.release") 43 | .replaceAll("\\s+", ""); 44 | String deviceName = brand + " " + model; 45 | String apiLevel = 46 | cmd.runCommandThruProcess("adb -s " + deviceID 47 | + " shell getprop ro.build.version.sdk") 48 | .replaceAll("\n", ""); 49 | String deviceOrEmulator = cmd.runCommandThruProcess("adb -s " + 50 | deviceID + 51 | " shell getprop ro.product.manufacturer"); 52 | String getScreenResolution = cmd.runCommandThruProcess("adb -s " + deviceID 53 | + " shell wm size").split(":")[1].replace("\n", ""); 54 | 55 | boolean isDevice = true; 56 | if (deviceOrEmulator.contains("Genymotion") 57 | || deviceOrEmulator.contains("unknown")) { 58 | isDevice = false; 59 | } 60 | 61 | String deviceModel = cmd.runCommandThruProcess("adb -s " + deviceID 62 | + " shell getprop ro.product.model"); 63 | adbDevices.put("name", deviceName); 64 | adbDevices.put("osVersion", osVersion); 65 | adbDevices.put("apiLevel", apiLevel); 66 | adbDevices.put("brand", brand); 67 | adbDevices.put("udid", deviceID); 68 | adbDevices.put("isDevice", isDevice); 69 | adbDevices.put("deviceModel", deviceModel); 70 | adbDevices.put("screenSize", getScreenResolution); 71 | adbDevices.put("deviceManufacturer",deviceOrEmulator); 72 | adbDevices.put("os", "android"); 73 | return adbDevices; 74 | } 75 | 76 | 77 | public List getDevices() throws Exception { 78 | List devices = new ArrayList<>(); 79 | startADB(); // start adb service 80 | String output = cmd.runCommandThruProcess("adb devices"); 81 | String[] lines = output.split("\n"); 82 | 83 | if (lines.length <= 1) { 84 | //stopADB(); 85 | } else { 86 | for (int i = 1; i < lines.length; i++) { 87 | lines[i] = lines[i].replaceAll("\\s+", ""); 88 | 89 | if (lines[i].contains("device")) { 90 | lines[i] = lines[i].replaceAll("device", ""); 91 | String deviceID = lines[i]; 92 | JSONObject deviceInfo = getDeviceInfo(deviceID); 93 | devices.add(new Device(deviceInfo)); 94 | } 95 | } 96 | } 97 | return devices; 98 | } 99 | 100 | @Override 101 | public Device getDevice(String udid) throws Exception { 102 | Optional device = getDevices().stream().filter(d -> 103 | udid.equals(d.getUdid())).findFirst(); 104 | return device.orElseThrow(() -> 105 | new RuntimeException("Provided DeviceUDID " + udid 106 | + " is not found on the machine") 107 | ); 108 | } 109 | 110 | public String startADBLog(String udid, String filePath) throws Exception { 111 | cmd.execForProcessToExecute("adb -s " + udid + " logcat -b all -c"); 112 | process = cmd.execForProcessToExecute("adb -s " + udid + " logcat > " + filePath); 113 | processUDIDs.put(udid, process); 114 | return "Collecting ADB logs for device " + udid + " in file " + filePath; 115 | } 116 | 117 | public String startADBLogWithPackage(String udid, String packageName, String filePath) throws Exception { 118 | cmd.execForProcessToExecute("adb -s " + udid + " logcat -b all -c"); 119 | process = cmd.execForProcessToExecute("adb -s " + udid 120 | + " logcat | grep -F \"`adb shell ps | grep " + packageName + " | cut -c10-15`\"" + " > " + filePath); 121 | processUDIDs.put(udid, process); 122 | return "Collecting ADB logs for device " + udid + " for package " + packageName + " in file " + filePath; 123 | } 124 | 125 | public String stopADBLog(String udid) throws Exception { 126 | Process p = processUDIDs.get(udid); 127 | if (getPid(p) > 0) { 128 | cmd.runCommandThruProcess("kill -9 " + getPid(p)); 129 | return "Stopped collecting ADB logs " + udid; 130 | } else 131 | return "No process found to kill"; 132 | 133 | } 134 | 135 | public int getPid(Process process) { 136 | try { 137 | Class cProcessImpl = process.getClass(); 138 | Field fPid = cProcessImpl.getDeclaredField("pid"); 139 | if (!fPid.isAccessible()) { 140 | fPid.setAccessible(true); 141 | } 142 | return fPid.getInt(process); 143 | } catch (Exception e) { 144 | return -1; 145 | } 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /src/main/java/com/github/device/Device.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | import lombok.Data; 4 | import org.json.JSONObject; 5 | 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | @Data 10 | public class Device { 11 | 12 | private String udid; 13 | private String name; 14 | private String state = "Not Supported"; 15 | private boolean isAvailable; 16 | private String osVersion; 17 | private String os = "Not Supported"; 18 | private String deviceType = "Not Supported"; 19 | private String brand = "Not Supported"; 20 | private String apiLevel = "Not Supported"; 21 | private boolean isDevice; 22 | private String deviceModel = "Not Supported"; 23 | private String screenSize; 24 | private String deviceManufacturer; 25 | private boolean isCloud = false; 26 | 27 | private static Map deviceIdentifier = new HashMap<>(); 28 | 29 | static { 30 | deviceIdentifier.put("iPhone 5s", "iPhone6,1"); 31 | deviceIdentifier.put("iPhone 6", "iPhone7,2"); 32 | deviceIdentifier.put("iPhone 6 Plus", "iPhone7,1"); 33 | deviceIdentifier.put("iPhone 6s", "iPhone8,1"); 34 | deviceIdentifier.put("iPhone 6s Plus", "iPhone8,2"); 35 | deviceIdentifier.put("iPhone 7", "iPhone9,1"); 36 | deviceIdentifier.put("iPhone 7 Plus", "iPhone9,2"); 37 | deviceIdentifier.put("iPhone 8", "iPhone10,1"); 38 | deviceIdentifier.put("iPhone 8 Plus", "iPhone10,2"); 39 | deviceIdentifier.put("iPhone SE", "iPhone8,4"); 40 | deviceIdentifier.put("iPhone X", "iPhone10,3"); 41 | } 42 | 43 | public Device(JSONObject deviceJson, String deviceType) { 44 | this.udid = deviceJson.getString("udid"); 45 | this.name = deviceJson.getString("name"); 46 | this.state = deviceJson.getString("state"); 47 | this.isAvailable = deviceJson.getBoolean("isAvailable"); 48 | this.deviceType = deviceType; 49 | getOSAndVersion(deviceType); 50 | this.deviceModel = deviceIdentifier.getOrDefault(this.name, "Not Supported"); 51 | this.deviceManufacturer= "apple"; 52 | } 53 | 54 | private void getOSAndVersion(String deviceType) { 55 | String[] osAndVersion = deviceType.split(" "); 56 | if (osAndVersion.length == 2) { 57 | this.os = osAndVersion[0]; 58 | this.osVersion = osAndVersion[1]; 59 | } else { 60 | String[] splitDeviceType = deviceType.split("\\."); 61 | if (splitDeviceType.length == 5) { 62 | osAndVersion = splitDeviceType[splitDeviceType.length - 1].split("-"); 63 | if (osAndVersion.length == 3) { 64 | this.os = osAndVersion[0]; 65 | this.osVersion = osAndVersion[1] + "." + osAndVersion[2]; 66 | } 67 | } 68 | } 69 | 70 | } 71 | 72 | 73 | public Device(JSONObject deviceJson) { 74 | this.udid = deviceJson.getString("udid"); 75 | this.name = deviceJson.getString("name"); 76 | this.osVersion = deviceJson.getString("osVersion"); 77 | this.brand = deviceJson.getString("brand"); 78 | this.apiLevel = deviceJson.getString("apiLevel"); 79 | this.isDevice = deviceJson.getBoolean("isDevice"); 80 | this.deviceModel = deviceJson.getString("deviceModel"); 81 | this.screenSize = deviceJson.getString("screenSize"); 82 | this.os = deviceJson.getString("os"); 83 | this.deviceManufacturer=deviceJson.getString("deviceManufacturer"); 84 | } 85 | 86 | public Device() { 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/main/java/com/github/device/DeviceManager.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | 4 | import com.github.android.AndroidManager; 5 | import com.github.iOS.IOSManager; 6 | import com.github.interfaces.Manager; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | import java.util.Optional; 11 | import java.util.stream.Stream; 12 | 13 | public class DeviceManager implements Manager { 14 | 15 | @Override 16 | public Device getDevice(String udid) throws Exception { 17 | Optional device = new AndroidManager().getDevices().stream().filter(d -> 18 | udid.equals(d.getUdid())).findFirst(); 19 | Optional simulator = new SimulatorManager().getAllAvailableSimulators().stream().filter(sim -> 20 | udid.equals(sim.getUdid())).findFirst(); 21 | Optional realDevice = new IOSManager().getDevices().stream().filter(sim -> 22 | udid.equals(sim.getUdid())).findFirst(); 23 | Optional finalDeviceList = Optional.of(device 24 | .orElseGet(() -> simulator 25 | .orElseGet(() -> realDevice 26 | .orElseThrow(() -> new RuntimeException("No Results found"))))); 27 | return finalDeviceList.get(); 28 | } 29 | 30 | public List getDevices() throws Exception { 31 | List allDevice = new ArrayList<>(); 32 | List androidDevice = new AndroidManager().getDevices(); 33 | if(System.getProperty("os.name").contains("Mac")) { 34 | List iOSSimulators = new SimulatorManager().getAllBootedSimulators("iOS"); 35 | List iOSRealDevice = new IOSManager().getDevices(); 36 | Stream.of(androidDevice, iOSSimulators, iOSRealDevice).forEach(allDevice::addAll); 37 | } else { 38 | Stream.of(androidDevice).forEach(allDevice::addAll); 39 | } 40 | return allDevice; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/github/device/DeviceType.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class DeviceType { 7 | private String name; 8 | private String identifier; 9 | 10 | public DeviceType(String name, String identifier) { 11 | this.name = name; 12 | this.identifier = identifier; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/github/device/IOSRuntime.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | import lombok.Data; 4 | import org.json.JSONObject; 5 | 6 | @Data 7 | public class IOSRuntime { 8 | private final String buildversion; 9 | private final boolean isAvailable; 10 | private final String name; 11 | private final String identifier; 12 | private final String version; 13 | private final String os; 14 | 15 | public IOSRuntime(JSONObject runtimeJSON) { 16 | buildversion = runtimeJSON.getString("buildversion"); 17 | name = runtimeJSON.getString("name"); 18 | version = runtimeJSON.getString("version"); 19 | identifier = runtimeJSON.getString("identifier"); 20 | isAvailable = runtimeJSON.getString("availability").equals("(available)"); 21 | os = name.split(" ")[0]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/github/device/SimulatorManager.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | import com.github.interfaces.ISimulatorManager; 4 | import com.github.utils.CommandPromptUtil; 5 | import org.apache.logging.log4j.LogManager; 6 | import org.apache.logging.log4j.Logger; 7 | import org.json.JSONArray; 8 | import org.json.JSONObject; 9 | 10 | import java.io.IOException; 11 | import java.lang.reflect.Field; 12 | import java.util.ArrayList; 13 | import java.util.Iterator; 14 | import java.util.List; 15 | import java.util.Optional; 16 | import java.util.stream.Collector; 17 | import java.util.stream.Collectors; 18 | 19 | public class SimulatorManager implements ISimulatorManager { 20 | 21 | final static Logger logger = LogManager.getLogger(SimulatorManager.class); 22 | private CommandPromptUtil commandPromptUtil; 23 | String ANSI_RED_BACKGROUND = "\u001B[41m"; 24 | Process screenRecordProcess; 25 | 26 | public SimulatorManager() { 27 | commandPromptUtil = new CommandPromptUtil(); 28 | } 29 | 30 | @Override 31 | public List getAllSimulators(String osType) 32 | throws InterruptedException, IOException { 33 | List devices = getAllAvailableSimulators(); 34 | List deviceListForOS = devices.stream().filter(device -> osType.equals(device.getOs())).collect(toList()); 35 | return deviceListForOS; 36 | } 37 | 38 | @Override 39 | public Device getDevice(String deviceName, String osVersion, String osType) throws InterruptedException, IOException { 40 | List allSimulators = getAllSimulators(osType); 41 | Optional device = allSimulators.stream().filter(d -> 42 | deviceName.equals(d.getName()) && 43 | osVersion.equals(d.getOsVersion()) && 44 | osType.equals(d.getOs())).findFirst(); 45 | return device.orElseThrow(() -> 46 | new RuntimeException("Device Not found with deviceName-" + deviceName + " osVersion-" + osVersion + " osType-" + osType) 47 | ); 48 | } 49 | 50 | @Override 51 | public String getSimulatorUDID(String deviceName, String osVersion, String osType) 52 | throws Throwable { 53 | Device device = getDevice(deviceName, osVersion, osType); 54 | return device.getUdid(); 55 | } 56 | 57 | @Override 58 | public String getSimulatorState(String deviceName, String osVersion, String osType) 59 | throws Throwable { 60 | Device device = getDevice(deviceName, osVersion, osType); 61 | return device.getState(); 62 | } 63 | 64 | @Override 65 | public void bootSimulator(String deviceName, String osVersion, String osType) 66 | throws Throwable { 67 | String simulatorUDID = getSimulatorUDID(deviceName, osVersion, osType); 68 | commandPromptUtil.runCommandThruProcess("xcrun simctl boot " + simulatorUDID); 69 | logger.debug(ANSI_RED_BACKGROUND + "Waiting for Simulator to Boot Completely....."); 70 | commandPromptUtil.runCommandThruProcess("xcrun simctl launch booted com.apple.springboard"); 71 | commandPromptUtil.runCommandThruProcess("open -a Simulator --args -CurrentDeviceUDID " 72 | + simulatorUDID); 73 | } 74 | 75 | @Override 76 | public Device getSimulatorDetailsFromUDID(String UDID){ 77 | List allSimulators = null; 78 | try { 79 | allSimulators = getAllAvailableSimulators(); 80 | } catch (IOException e) { 81 | e.printStackTrace(); 82 | } catch (InterruptedException e) { 83 | e.printStackTrace(); 84 | } 85 | Optional device = allSimulators.stream().filter(d -> 86 | UDID.equals(d.getUdid())).findFirst(); 87 | return device.orElseThrow(() -> 88 | new RuntimeException("Device Not found") 89 | ); 90 | } 91 | 92 | @Override 93 | public void captureScreenshot(String UDID, String fileName, String fileDestination, String format) throws IOException, InterruptedException { 94 | String xcodeVersion = commandPromptUtil.runCommandThruProcess("xcodebuild -version").split("(\\n)|(Xcode)")[1].trim(); 95 | if (Float.valueOf(xcodeVersion) < 8.2 ) { 96 | new RuntimeException("Screenshot capture is only supported with xcode version 8.2 and above"); 97 | } else { 98 | commandPromptUtil.runCommandThruProcess("xcrun simctl io " + UDID + " screenshot " 99 | + fileDestination + "/" + fileName + "." + format); 100 | } 101 | } 102 | 103 | @Override 104 | public boolean shutDownAllBootedSimulators() throws IOException, InterruptedException { 105 | List bootedDevices = commandPromptUtil.runCommand("xcrun simctl list | grep Booted"); 106 | bootedDevices 107 | .forEach(bootedUDID -> { 108 | try { 109 | commandPromptUtil.runCommandThruProcess("xcrun simctl shutdown " + bootedUDID); 110 | } catch (InterruptedException e) { 111 | e.printStackTrace(); 112 | } catch (IOException e) { 113 | e.printStackTrace(); 114 | } 115 | }); 116 | String bootedDeviceCountAfterShutDown = commandPromptUtil. 117 | runCommandThruProcess("xcrun simctl list | grep Booted | wc -l"); 118 | if (Integer.valueOf(bootedDeviceCountAfterShutDown.trim()) == 0 ) { 119 | logger.debug(ANSI_RED_BACKGROUND + "All Booted Simulators Shut..."); 120 | return true; 121 | } else { 122 | logger.debug(ANSI_RED_BACKGROUND + "Simulators that needs to be ShutDown are" 123 | + commandPromptUtil.runCommand("xcrun simctl list | grep Booted")); 124 | return false; 125 | } 126 | } 127 | 128 | @Override 129 | public List getAllBootedSimulators(String osType) throws InterruptedException, IOException { 130 | List allSimulators = getAllSimulators(osType); 131 | List bootedSim = allSimulators.stream().filter( device -> 132 | device.getState().equalsIgnoreCase("Booted")).collect(Collectors.toList()); 133 | return bootedSim; 134 | } 135 | 136 | @Override 137 | public void uploadMediaToSimulator(String deviceName, String osVersion, String osType, String filePath) throws Throwable { 138 | String simulatorUDID = getSimulatorUDID(deviceName, osVersion, osType); 139 | String execute = "xcrun simctl addmedia " + simulatorUDID 140 | + " " + filePath; 141 | commandPromptUtil.execForProcessToExecute(execute).waitFor(); 142 | } 143 | 144 | @Override 145 | public void startScreenRecording(String pathWithFileName) throws IOException { 146 | System.out.println("xcrun simctl io booted recordVideo " + pathWithFileName); 147 | screenRecordProcess = commandPromptUtil 148 | .execForProcessToExecute("xcrun simctl io booted recordVideo " + pathWithFileName); 149 | System.out.println(screenRecordProcess); 150 | } 151 | 152 | @Override 153 | public Process startScreenRecording(String UDID, String pathWithFileName) throws IOException { 154 | System.out.println("xcrun simctl io " + UDID + " recordVideo " + pathWithFileName); 155 | screenRecordProcess = commandPromptUtil 156 | .execForProcessToExecute("xcrun simctl io " + UDID + " recordVideo " + pathWithFileName); 157 | System.out.println(screenRecordProcess); 158 | return screenRecordProcess; 159 | } 160 | 161 | @Override 162 | public void stopScreenRecording() throws IOException, InterruptedException { 163 | Integer processId = getPid(screenRecordProcess); 164 | String command = "kill -9 " + processId; 165 | System.out.println("Stopping Video Recording" + command); 166 | commandPromptUtil.execForProcessToExecute(command); 167 | } 168 | 169 | @Override 170 | public void installAppOnSimulator(String deviceName, String osVersion, 171 | String osType, String appPath) throws Throwable { 172 | String simulatorUDID = getSimulatorUDID(deviceName, osVersion, osType); 173 | String execute = "xcrun simctl install " + simulatorUDID 174 | + " " + appPath; 175 | commandPromptUtil.execForProcessToExecute(execute).waitFor(); 176 | } 177 | 178 | @Override 179 | public void uninstallAppFromSimulator(String deviceName, String osVersion, 180 | String osType, String bundleID) throws Throwable { 181 | String simulatorUDID = getSimulatorUDID(deviceName, osVersion, osType); 182 | String execute = "xcrun simctl uninstall " + simulatorUDID 183 | + " " + bundleID; 184 | commandPromptUtil.execForProcessToExecute(execute).waitFor(); 185 | } 186 | 187 | @Override 188 | public void createSimulator(String simName, String deviceName, String osVersion, String osType) 189 | throws Throwable { 190 | List deviceTypes = getAllDeviceTypes(); 191 | DeviceType deviceType = deviceTypes.stream().filter(d -> deviceName.equals(d.getName())).findFirst().get(); 192 | List deviceIOSRuntimes = getAllRuntimes(); 193 | IOSRuntime IOSRuntime = deviceIOSRuntimes.stream().filter(r -> 194 | osType.equals(r.getOs()) && osVersion.equals(r.getVersion()) 195 | ).findFirst().get(); 196 | 197 | commandPromptUtil.runCommandThruProcess("xcrun simctl create " + simName + " " + deviceType.getIdentifier() + " " + 198 | IOSRuntime.getIdentifier()); 199 | } 200 | 201 | @Override 202 | public void deleteSimulator(String deviceName, String osVersion, String osType) 203 | throws Throwable { 204 | String simulatorUDID = getSimulatorUDID(deviceName, osVersion, osType); 205 | commandPromptUtil.runCommandThruProcess("xcrun simctl delete " + simulatorUDID); 206 | } 207 | 208 | 209 | public List getAllAvailableSimulators() throws IOException, InterruptedException { 210 | CommandPromptUtil commandPromptUtil = new CommandPromptUtil(); 211 | String simulatorJsonString = commandPromptUtil.runCommandThruProcess("xcrun simctl list -j devices"); 212 | 213 | JSONObject simulatorsJson = new JSONObject(simulatorJsonString); 214 | JSONObject devicesByTypeJson = (JSONObject) simulatorsJson.get("devices"); 215 | Iterator keys = devicesByTypeJson.keys(); 216 | List deviceList = new ArrayList<>(); 217 | while (keys.hasNext()) { 218 | String key = keys.next(); 219 | JSONArray devicesJson = (JSONArray) devicesByTypeJson.get(key); 220 | devicesJson.forEach(deviceJson -> { 221 | deviceList.add(new Device((JSONObject) deviceJson, key)); 222 | }); 223 | } 224 | return deviceList; 225 | } 226 | 227 | 228 | private List getAllDeviceTypes() throws IOException, InterruptedException { 229 | CommandPromptUtil commandPromptUtil = new CommandPromptUtil(); 230 | String deviceTypesJSONString = commandPromptUtil.runCommandThruProcess("xcrun simctl list -j devicetypes"); 231 | 232 | JSONObject devicesTypesJSON = new JSONObject(deviceTypesJSONString); 233 | JSONArray devicesTypes = devicesTypesJSON.getJSONArray("devicetypes"); 234 | List deviceTypes = new ArrayList<>(); 235 | devicesTypes.forEach(deviceType -> { 236 | String name = ((JSONObject) deviceType).getString("name"); 237 | String identifier = ((JSONObject) deviceType).getString("identifier"); 238 | deviceTypes.add(new DeviceType(name, identifier)); 239 | }); 240 | return deviceTypes; 241 | } 242 | 243 | 244 | private List getAllRuntimes() throws IOException, InterruptedException { 245 | CommandPromptUtil commandPromptUtil = new CommandPromptUtil(); 246 | String runtimesJSONString = commandPromptUtil.runCommandThruProcess("xcrun simctl list -j runtimes"); 247 | 248 | JSONArray runtimesJSON = new JSONObject(runtimesJSONString).getJSONArray("runtimes"); 249 | List IOSRuntimes = new ArrayList<>(); 250 | runtimesJSON.forEach(runtime -> { 251 | IOSRuntimes.add(new IOSRuntime((JSONObject) runtime)); 252 | }); 253 | return IOSRuntimes; 254 | } 255 | 256 | public int getPid(Process process) { 257 | try { 258 | Class cProcessImpl = process.getClass(); 259 | Field fPid = cProcessImpl.getDeclaredField("pid"); 260 | if (!fPid.isAccessible()) { 261 | fPid.setAccessible(true); 262 | } 263 | return fPid.getInt(process); 264 | } catch (Exception e) { 265 | return -1; 266 | } 267 | } 268 | 269 | private static Collector> toList() { 270 | return Collectors.toCollection(ArrayList::new); 271 | } 272 | } 273 | -------------------------------------------------------------------------------- /src/main/java/com/github/iOS/IOSManager.java: -------------------------------------------------------------------------------- 1 | package com.github.iOS; 2 | 3 | import com.github.device.Device; 4 | import com.github.interfaces.Manager; 5 | import com.github.utils.CommandPromptUtil; 6 | import org.json.JSONObject; 7 | 8 | import java.io.IOException; 9 | import java.util.ArrayList; 10 | import java.util.Arrays; 11 | import java.util.List; 12 | import java.util.Optional; 13 | 14 | public class IOSManager implements Manager { 15 | 16 | private CommandPromptUtil cmd; 17 | private final static int IOS_UDID_LENGTH = 40; 18 | private final static int SIM_UDID_LENGTH = 36; 19 | JSONObject iOSDevices; 20 | String profile = "system_profiler SPUSBDataType | sed -n -E -e '/(iPhone|iPad|iPod)/" 21 | + ",/Serial/s/ *Serial Number: *(.+)/\\1/p'"; 22 | 23 | /*String profile = "idevice_id --list";*/ 24 | 25 | public IOSManager() { 26 | cmd = new CommandPromptUtil(); 27 | iOSDevices = new JSONObject(); 28 | } 29 | 30 | @Override 31 | public Device getDevice(String udid) { 32 | Optional device = getDevices().stream().filter(d -> 33 | udid.equals(d.getUdid())).findFirst(); 34 | return device.orElseThrow(() -> 35 | new RuntimeException("Provided DeviceUDID " + udid 36 | + " is not found on the machine") 37 | ); 38 | } 39 | 40 | public List getDevices() { 41 | List device = new ArrayList<>(); 42 | getIOSUDID().forEach(udid -> { 43 | try { 44 | device.add(new Device(getDeviceInfo(udid))); 45 | } catch (InterruptedException e) { 46 | e.printStackTrace(); 47 | } catch (IOException e) { 48 | e.printStackTrace(); 49 | } 50 | }); 51 | return device; 52 | } 53 | 54 | public JSONObject getDeviceInfo(String udid) throws InterruptedException, IOException { 55 | 56 | String model = cmd.runProcessCommandToGetDeviceID("ideviceinfo -u " 57 | + udid + " | grep ProductType").replace("\n", ""); 58 | 59 | String name = cmd.runProcessCommandToGetDeviceID("idevicename --udid " + udid); 60 | String osVersion = cmd.runProcessCommandToGetDeviceID("ideviceinfo --udid " 61 | + udid 62 | + " | grep ProductVersion").replace("ProductVersion:", "") 63 | .replace("\n", "").trim(); 64 | 65 | iOSDevices.put("deviceModel", model); 66 | iOSDevices.put("udid", udid); 67 | iOSDevices.put("name", name); 68 | iOSDevices.put("brand", "Apple"); 69 | iOSDevices.put("isDevice", "true"); 70 | iOSDevices.put("screenSize", "Not Supported"); 71 | iOSDevices.put("apiLevel", ""); 72 | iOSDevices.put("osVersion", osVersion); 73 | iOSDevices.put("os", "iOS"); 74 | iOSDevices.put("deviceManufacturer", "apple"); 75 | return iOSDevices; 76 | } 77 | 78 | 79 | private List getIOSUDID() { 80 | ArrayList iosDeviceUDIDS = new ArrayList<>(); 81 | try { 82 | Optional getIOSDeviceID = Optional.of(cmd.runProcessCommandToGetDeviceID(profile)); 83 | String[] iosDevices = getIOSDeviceID.get().split("\n"); 84 | for (String iosDevice : iosDevices) { 85 | if (iosDevice.length() == 24) { 86 | iosDeviceUDIDS.add(addChar(iosDevice, '-', 8)); 87 | } else { 88 | iosDeviceUDIDS.add(iosDevice); 89 | } 90 | } 91 | return iosDeviceUDIDS; 92 | } catch (IOException e) { 93 | e.printStackTrace(); 94 | throw new IllegalStateException("Failed to fetch iOS device connected"); 95 | } 96 | 97 | } 98 | 99 | private String addChar(String str, char ch, int position) { 100 | return str.substring(0, position) + ch + str.substring(position); 101 | } 102 | } -------------------------------------------------------------------------------- /src/main/java/com/github/interfaces/ISimulatorManager.java: -------------------------------------------------------------------------------- 1 | package com.github.interfaces; 2 | 3 | import com.github.device.Device; 4 | 5 | import java.io.IOException; 6 | import java.util.List; 7 | 8 | public interface ISimulatorManager { 9 | 10 | String getSimulatorState(String deviceName, String osVersion, String osType) throws Throwable; 11 | 12 | Device getDevice(String deviceName, String osVersion, String osType) throws InterruptedException, IOException; 13 | 14 | String getSimulatorUDID(String deviceName, String osVersion, String osType) throws Throwable; 15 | 16 | List getAllSimulators(String osType) throws InterruptedException, IOException; 17 | 18 | void deleteSimulator(String deviceName, String osVersion, String osType) throws Throwable; 19 | 20 | void createSimulator(String simName, String deviceName, String osVersion, String osType) throws Throwable; 21 | 22 | void uninstallAppFromSimulator(String deviceName, String osVersion, String osType, String bundleID) throws Throwable; 23 | 24 | void installAppOnSimulator(String deviceName, String osVersion, String osType, String appPath) throws Throwable; 25 | 26 | void bootSimulator(String deviceName, String osVersion, String osType) throws Throwable; 27 | 28 | Device getSimulatorDetailsFromUDID(String UDID) throws IOException, InterruptedException; 29 | 30 | void captureScreenshot(String UDID, String fileName,String fileDestination, String format) throws IOException, InterruptedException; 31 | 32 | boolean shutDownAllBootedSimulators() throws IOException, InterruptedException; 33 | 34 | List getAllBootedSimulators(String osType) throws InterruptedException, IOException; 35 | 36 | void uploadMediaToSimulator(String deviceName, String osVersion, String osType, String filePath) throws Throwable; 37 | 38 | void startScreenRecording(String pathWithFileName) throws IOException; 39 | 40 | void stopScreenRecording() throws IOException, InterruptedException; 41 | 42 | Process startScreenRecording(String UDID, String pathWithFileName) throws IOException; 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/github/interfaces/Manager.java: -------------------------------------------------------------------------------- 1 | package com.github.interfaces; 2 | 3 | 4 | import com.github.device.Device; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface Manager { 10 | 11 | Device getDevice(String udid) throws Exception; 12 | 13 | List getDevices() throws Exception; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/github/utils/CommandPromptUtil.java: -------------------------------------------------------------------------------- 1 | package com.github.utils; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.io.InputStreamReader; 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | 11 | public class CommandPromptUtil { 12 | String OSType =null; 13 | public CommandPromptUtil() 14 | { 15 | OSType = System.getProperty("os.name"); 16 | } 17 | 18 | public String runCommandThruProcess(String command) 19 | throws InterruptedException, IOException { 20 | BufferedReader br = getBufferedReader(command); 21 | String line; 22 | String allLine = ""; 23 | while ((line = br.readLine()) != null) { 24 | allLine = allLine + "" + line + "\n"; 25 | } 26 | return allLine; 27 | } 28 | 29 | public List runCommand(String command) 30 | throws InterruptedException, IOException { 31 | BufferedReader br = getBufferedReader(command); 32 | String line; 33 | List allLine = new ArrayList<>(); 34 | while ((line = br.readLine()) != null) { 35 | allLine.add(line.replaceAll("[\\[\\](){}]","_").split("_")[1]); 36 | } 37 | return allLine; 38 | } 39 | 40 | private BufferedReader getBufferedReader(String command) throws IOException { 41 | List commands = new ArrayList<>(); 42 | if(OSType.contains("Windows")) 43 | { 44 | commands.add("cmd"); 45 | commands.add("/c"); 46 | } 47 | else 48 | { 49 | commands.add("/bin/sh"); 50 | commands.add("-c"); 51 | } 52 | commands.add(command); 53 | ProcessBuilder builder = new ProcessBuilder(commands); 54 | final Process process = builder.start(); 55 | InputStream is = process.getInputStream(); 56 | InputStreamReader isr = new InputStreamReader(is); 57 | return new BufferedReader(isr); 58 | } 59 | 60 | public Process execForProcessToExecute(String cmd) throws IOException { 61 | Process pr = null; 62 | List commands = new ArrayList<>(); 63 | 64 | if(OSType.contains("Windows")) 65 | { 66 | commands.add("cmd"); 67 | commands.add("/c"); 68 | } 69 | else { 70 | commands.add("/bin/sh"); 71 | commands.add("-c"); 72 | } 73 | commands.add(cmd); 74 | ProcessBuilder builder = new ProcessBuilder(commands); 75 | pr = builder.start(); 76 | return pr; 77 | } 78 | 79 | public String runProcessCommandToGetDeviceID(String command) 80 | throws IOException { 81 | BufferedReader br = getBufferedReader(command); 82 | String line; 83 | String allLine = ""; 84 | while ((line = br.readLine()) != null) { 85 | allLine = allLine + "" + line.trim() + "\n"; 86 | } 87 | return allLine.trim(); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/test/java/com/github/device/AndroidTest.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | 4 | import com.github.android.AndroidManager; 5 | import org.junit.Test; 6 | 7 | public class AndroidTest { 8 | 9 | AndroidManager deviceManager; 10 | 11 | 12 | @Test 13 | public void getDetails() throws Exception { 14 | deviceManager = new AndroidManager(); 15 | Device deviceProperties = deviceManager.getDevice("192.168.58.101:5555"); 16 | System.out.println(deviceProperties.isDevice()); 17 | System.out.println(deviceProperties.getScreenSize()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/test/java/com/github/device/IOSDeviceTest.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | import com.github.iOS.IOSManager; 4 | import org.junit.Test; 5 | 6 | import java.util.List; 7 | 8 | import static org.junit.Assert.assertTrue; 9 | 10 | public class IOSDeviceTest { 11 | 12 | @Test 13 | public void getDevices() { 14 | IOSManager ios = new IOSManager(); 15 | List devices = ios.getDevices(); 16 | assertTrue(devices.size() > 0); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/test/java/com/github/device/SimulatorTest.java: -------------------------------------------------------------------------------- 1 | package com.github.device; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | import java.io.File; 7 | import java.io.IOException; 8 | import java.util.List; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | public class SimulatorTest { 13 | 14 | SimulatorManager simulatorManager; 15 | 16 | @Test 17 | public void getAllSimulatorsTest() throws IOException, InterruptedException { 18 | simulatorManager = new SimulatorManager(); 19 | List allSimulators = simulatorManager.getAllSimulators("iOS"); 20 | assertTrue(allSimulators.size() > 0); 21 | } 22 | 23 | 24 | @Test 25 | public void getSimulatorUDID() throws Throwable { 26 | simulatorManager = new SimulatorManager(); 27 | String simulatorUDID = simulatorManager.getSimulatorUDID 28 | ("iPhone 14", "11.4", "iOS"); 29 | assertTrue(simulatorUDID.length() == 36); 30 | } 31 | 32 | @Test 33 | public void throwExceptionWhenInvalidOSVersionIsGiven() throws Throwable { 34 | simulatorManager = new SimulatorManager(); 35 | try { 36 | simulatorManager.getSimulatorUDID 37 | ("iPhone 14", "9.99" , "iOS"); 38 | } catch (RuntimeException e) { 39 | assertEquals(e.getMessage(),"Device Not found with deviceName-iPhone 14 osVersion-9.99 osType-iOS"); 40 | } 41 | } 42 | 43 | @Test 44 | public void throwExceptionWhenInvalidDeviceNameVersionIsGiven() throws Throwable { 45 | simulatorManager = new SimulatorManager(); 46 | try { 47 | simulatorManager.getSimulatorUDID 48 | ("iPhone 14", "16.4", "iOS"); 49 | } catch (RuntimeException e) { 50 | assertEquals(e.getMessage(),"Device Not found with deviceName-iPhone 14 osVersion-16.4 osType-iOS"); 51 | } 52 | } 53 | 54 | @Test 55 | public void getSimulatorStateTest() throws Throwable { 56 | simulatorManager = new SimulatorManager(); 57 | String simulatorState = simulatorManager.getSimulatorState( 58 | "iPhone 14", "16.4", "iOS"); 59 | assertNotNull(simulatorState); 60 | } 61 | 62 | @Test 63 | public void bootSimulatorAndCheckStatus() throws Throwable { 64 | simulatorManager = new SimulatorManager(); 65 | simulatorManager.bootSimulator( 66 | "iPhone 14", "16.4", "iOS"); 67 | String deviceState = simulatorManager.getSimulatorState("iPhone 14", 68 | "16.4", "iOS"); 69 | assertEquals(deviceState,"Booted"); 70 | } 71 | 72 | @Test 73 | public void installApp() throws Throwable { 74 | simulatorManager = new SimulatorManager(); 75 | simulatorManager.installAppOnSimulator("iPhone 14", "16.4", "iOS" 76 | ,System.getProperty("user.dir") + "/VodQAReactNative.app"); 77 | } 78 | 79 | @Test 80 | public void uninstallApp() throws Throwable { 81 | simulatorManager = new SimulatorManager(); 82 | simulatorManager.uninstallAppFromSimulator("iPhone 14", "16.4", "iOS" 83 | , "com.hariharanweb"); 84 | } 85 | 86 | @Test 87 | public void createAndDeleteSimulatorTest() throws Throwable { 88 | simulatorManager = new SimulatorManager(); 89 | long randomNumber = System.currentTimeMillis(); 90 | String deviceName = "srini" + randomNumber; 91 | 92 | simulatorManager.createSimulator(deviceName, "iPhone 14", "16.4","iOS"); 93 | assertNotNull(simulatorManager.getSimulatorState(deviceName, "16.4", "iOS")); 94 | simulatorManager.deleteSimulator(deviceName, "16.4", "iOS"); 95 | try { 96 | simulatorManager.deleteSimulator(deviceName, "16.4", "iOS"); 97 | } catch (Exception e){ 98 | assertEquals("Device Not found with deviceName-" + deviceName + " osVersion-16.4 osType-iOS", e.getMessage()); 99 | } 100 | } 101 | 102 | @Test 103 | public void getDeviceDetails() throws Throwable { 104 | simulatorManager = new SimulatorManager(); 105 | String iOSUDID = simulatorManager.getSimulatorUDID 106 | ("iPhone 14", "11.3", "iOS"); 107 | Device deviceDetails = simulatorManager.getSimulatorDetailsFromUDID(iOSUDID); 108 | assertEquals(deviceDetails.getName(),"iPhone 14"); 109 | assertEquals(deviceDetails.getDeviceModel(),"iPhone8,1"); 110 | } 111 | 112 | @Test 113 | public void captureScreenshot() throws Throwable { 114 | simulatorManager = new SimulatorManager(); 115 | simulatorManager.bootSimulator( 116 | "iPhone 14", "16.4", "iOS"); 117 | String iOSUDID = simulatorManager.getSimulatorUDID 118 | ("iPhone 14", "16.4", "iOS"); 119 | simulatorManager.captureScreenshot(iOSUDID,"simulator", 120 | System.getProperty("user.dir") + "/target/", "jpeg"); 121 | assertTrue(new File(System.getProperty("user.dir") 122 | + "/target/simulator.jpeg").exists()); 123 | } 124 | 125 | @Test 126 | public void simulatorShutDown() throws IOException, InterruptedException { 127 | simulatorManager = new SimulatorManager(); 128 | assertTrue(simulatorManager.shutDownAllBootedSimulators()); 129 | } 130 | 131 | @Test 132 | public void getAllBootedSimulatorsTest() throws IOException, InterruptedException { 133 | simulatorManager = new SimulatorManager(); 134 | assertEquals(simulatorManager.getAllBootedSimulators("iOS").get(0).getState(), "Booted"); 135 | } 136 | 137 | @Test 138 | public void uploadMediaToSimulatorTest() throws Throwable { 139 | simulatorManager = new SimulatorManager(); 140 | simulatorManager.uploadMediaToSimulator("iPhone 14", "16.4", "iOS", 141 | "/Users/ssekar/Desktop/GC_BCPage.png"); 142 | } 143 | 144 | @Test 145 | public void getPropertiesTest() throws Exception { 146 | Device deviceProperties = new DeviceManager().getDevice("E2C34EB6-E91E-4148-8E95-73D53143E9EF"); 147 | System.out.println(deviceProperties.getDeviceManufacturer()); 148 | } 149 | 150 | @Test 151 | public void getDevicePropertiesTest() throws Exception { 152 | // List deviceProperties = new DeviceManager().getDevices(); 153 | // System.out.println(deviceProperties.get(0).getName()); 154 | new DeviceManager().getDevices(); 155 | } 156 | 157 | @Test 158 | public void screenRecording() throws Exception { 159 | SimulatorManager simulatorManager = new SimulatorManager(); 160 | simulatorManager.startScreenRecording("D97F6677-C9CE-45C5-87A1-B7C4B77C1D25","sample.mp4"); 161 | Thread.sleep(10000); 162 | simulatorManager.stopScreenRecording(); 163 | Assert.assertTrue(new File(System.getProperty("user.dir") + "/sample.mp4").exists()); 164 | } 165 | 166 | @Test 167 | public void getOSandVersionLatest() throws Throwable { 168 | simulatorManager = new SimulatorManager(); 169 | String iOSUDID = simulatorManager.getSimulatorUDID 170 | ("iPhone 14", "16.4", "iOS"); 171 | Device deviceDetails = simulatorManager.getSimulatorDetailsFromUDID(iOSUDID); 172 | assertEquals(deviceDetails.getOsVersion(),"16.4"); 173 | assertEquals(deviceDetails.getOs(),"iOS"); 174 | } 175 | 176 | } 177 | -------------------------------------------------------------------------------- /src/test/java/com/test/SampleTest.java: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------