aboutsummaryrefslogtreecommitdiff
path: root/ios/FrontendTests/FrontendTests.m
diff options
context:
space:
mode:
authorLeon Jiang <leon.jiangy@gmail.com>2020-06-24 00:23:26 -0700
committerLeon Jiang <leon.jiangy@gmail.com>2020-06-24 00:23:26 -0700
commita642f52d519543d9ece4bb525e99ebc281fa6887 (patch)
tree6da0fa559714a95535e445ed9bffbdb37c70d0c6 /ios/FrontendTests/FrontendTests.m
parent1bcb2049f80bfdbf23dc45fe6b7e3a66608b6ba7 (diff)
initial commit, add react-native/typescript boilerplate
Diffstat (limited to 'ios/FrontendTests/FrontendTests.m')
-rw-r--r--ios/FrontendTests/FrontendTests.m65
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