diff options
author | Husam Salhab <47015061+hsalhab@users.noreply.github.com> | 2020-06-24 20:01:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-24 20:01:35 -0400 |
commit | c301252081ef31fe24160713d801722fc73e703b (patch) | |
tree | 86f4d47d56a3945ab8f763e132b81aaaa5b2e2f8 /ios/FrontendTests/FrontendTests.m | |
parent | 4efe926122873adf8a598bb18b3eaf5d5a077cb4 (diff) | |
parent | d9e0cde89b1e2c2483f91c656d6000f3b806181d (diff) |
Merge pull request #3 from leonyjiang/master
[TMA-55] - Add react-native/typescript template
Diffstat (limited to 'ios/FrontendTests/FrontendTests.m')
-rw-r--r-- | ios/FrontendTests/FrontendTests.m | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/ios/FrontendTests/FrontendTests.m b/ios/FrontendTests/FrontendTests.m new file mode 100644 index 00000000..af1c8342 --- /dev/null +++ b/ios/FrontendTests/FrontendTests.m @@ -0,0 +1,65 @@ +#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 FrontendTests : XCTestCase + +@end + +@implementation FrontendTests + +- (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 |