XCUIApplicationHelperTests.m 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * Copyright (c) 2015-present, Facebook, Inc.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the BSD-style license found in the
  6. * LICENSE file in the root directory of this source tree. An additional grant
  7. * of patent rights can be found in the PATENTS file in the same directory.
  8. */
  9. #import <XCTest/XCTest.h>
  10. #import <mach/mach_time.h>
  11. #import "FBIntegrationTestCase.h"
  12. #import "FBElement.h"
  13. #import "FBMacros.h"
  14. #import "FBTestMacros.h"
  15. #import "XCUIApplication.h"
  16. #import "XCUIApplication+FBHelpers.h"
  17. #import "XCUIElement+FBIsVisible.h"
  18. #import "FBXCodeCompatibility.h"
  19. @interface XCUIApplicationHelperTests : FBIntegrationTestCase
  20. @end
  21. @implementation XCUIApplicationHelperTests
  22. - (void)setUp
  23. {
  24. [super setUp];
  25. [self launchApplication];
  26. }
  27. - (void)testQueringSpringboard
  28. {
  29. [self goToSpringBoardFirstPage];
  30. XCTAssertTrue(XCUIApplication.fb_systemApplication.icons[@"Safari"].exists);
  31. XCTAssertTrue(XCUIApplication.fb_systemApplication.icons[@"Calendar"].firstMatch.exists);
  32. }
  33. - (void)testApplicationTree
  34. {
  35. XCTAssertNotNil(self.testedApplication.fb_tree);
  36. XCTAssertNotNil(self.testedApplication.fb_accessibilityTree);
  37. }
  38. - (void)testDeactivateApplication
  39. {
  40. NSError *error;
  41. uint64_t timeStarted = clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW);
  42. NSTimeInterval backgroundDuration = 5.0;
  43. XCTAssertTrue([self.testedApplication fb_deactivateWithDuration:backgroundDuration error:&error]);
  44. NSTimeInterval timeElapsed = (clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW) - timeStarted) / NSEC_PER_SEC;
  45. XCTAssertNil(error);
  46. XCTAssertEqualWithAccuracy(timeElapsed, backgroundDuration, 3.0);
  47. XCTAssertTrue(self.testedApplication.buttons[@"Alerts"].exists);
  48. }
  49. - (void)testActiveApplication
  50. {
  51. XCUIApplication *systemApp = XCUIApplication.fb_systemApplication;
  52. XCTAssertTrue([XCUIApplication fb_activeApplication].buttons[@"Alerts"].fb_isVisible);
  53. [self goToSpringBoardFirstPage];
  54. XCTAssertEqualObjects([XCUIApplication fb_activeApplication].bundleID, systemApp.bundleID);
  55. XCTAssertTrue(systemApp.icons[@"Safari"].fb_isVisible);
  56. }
  57. - (void)testActiveElement
  58. {
  59. [self goToAttributesPage];
  60. XCTAssertNil(self.testedApplication.fb_activeElement);
  61. XCUIElement *textField = self.testedApplication.textFields[@"aIdentifier"];
  62. [textField tap];
  63. FBAssertWaitTillBecomesTrue(nil != self.testedApplication.fb_activeElement);
  64. XCTAssertEqualObjects(((id<FBElement>)self.testedApplication.fb_activeElement).wdUID,
  65. ((id<FBElement>)textField).wdUID);
  66. }
  67. - (void)testActiveApplicationsInfo
  68. {
  69. NSArray *appsInfo = [XCUIApplication fb_activeAppsInfo];
  70. XCTAssertTrue(appsInfo.count > 0);
  71. BOOL isAppActive = NO;
  72. for (NSDictionary *appInfo in appsInfo) {
  73. if ([appInfo[@"bundleId"] isEqualToString:self.testedApplication.bundleID]) {
  74. isAppActive = YES;
  75. break;
  76. }
  77. }
  78. XCTAssertTrue(isAppActive);
  79. }
  80. - (void)testTestmanagerdVersion
  81. {
  82. XCTAssertGreaterThan(FBTestmanagerdVersion(), 0);
  83. }
  84. - (void)testAccessbilityAudit
  85. {
  86. if (SYSTEM_VERSION_LESS_THAN(@"17.0")) {
  87. return;
  88. }
  89. NSError *error;
  90. NSArray *auditIssues1 = [XCUIApplication.fb_activeApplication fb_performAccessibilityAuditWithAuditTypes:~0UL
  91. error:&error];
  92. XCTAssertNotNil(auditIssues1);
  93. XCTAssertNil(error);
  94. NSMutableSet *set = [NSMutableSet new];
  95. [set addObject:@"XCUIAccessibilityAuditTypeAll"];
  96. NSArray *auditIssues2 = [XCUIApplication.fb_activeApplication fb_performAccessibilityAuditWithAuditTypesSet:set.copy
  97. error:&error];
  98. XCTAssertEqualObjects(auditIssues1, auditIssues2);
  99. XCTAssertNil(error);
  100. }
  101. @end