You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.7 KiB
65 lines
1.7 KiB
#import <UIKit/UIKit.h> |
|
#import <XCTest/XCTest.h> |
|
|
|
#import <React/RCTLog.h> |
|
#import <React/RCTRootView.h> |
|
|
|
#define TIMEOUT_SECONDS 600 |
|
#define TEXT_TO_LOOK_FOR @"Welcome to React" |
|
|
|
@interface RnDanovinTests : XCTestCase |
|
|
|
@end |
|
|
|
@implementation RnDanovinTests |
|
|
|
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test |
|
{ |
|
if (test(view)) { |
|
return YES; |
|
} |
|
for (UIView *subview in [view subviews]) { |
|
if ([self findSubviewInView:subview matching:test]) { |
|
return YES; |
|
} |
|
} |
|
return NO; |
|
} |
|
|
|
- (void)testRendersWelcomeScreen |
|
{ |
|
UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; |
|
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; |
|
BOOL foundElement = NO; |
|
|
|
__block NSString *redboxError = nil; |
|
#ifdef DEBUG |
|
RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { |
|
if (level >= RCTLogLevelError) { |
|
redboxError = message; |
|
} |
|
}); |
|
#endif |
|
|
|
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { |
|
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; |
|
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; |
|
|
|
foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { |
|
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { |
|
return YES; |
|
} |
|
return NO; |
|
}]; |
|
} |
|
|
|
#ifdef DEBUG |
|
RCTSetLogFunction(RCTDefaultLogFunction); |
|
#endif |
|
|
|
XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); |
|
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); |
|
} |
|
|
|
|
|
@end
|
|
|