12a38a11eSExponent GitHub Bot// Copyright 2015-present 650 Industries. All rights reserved. 22a38a11eSExponent GitHub Bot 3d5e9e21bSBen Roth#import "ExpoKit.h" 4d5e9e21bSBen Roth#import "EXRootViewController.h" 5*9aa11ec8SBen Roth#import "EXTest.h" 6d5e9e21bSBen Roth 7d5e9e21bSBen Roth#import <React/RCTAssert.h> 8d5e9e21bSBen Roth#import <React/RCTUtils.h> 92a38a11eSExponent GitHub Bot 102a38a11eSExponent GitHub Bot#import <XCTest/XCTest.h> 112a38a11eSExponent GitHub Bot 12abac2b0cSBen Roth#define TEST_ENVIRONMENT 1 13abac2b0cSBen Roth 142a38a11eSExponent GitHub Bot@interface ExponentIntegrationTests : XCTestCase 152a38a11eSExponent GitHub Bot 16d5e9e21bSBen Roth@property (nonatomic, strong) EXRootViewController *rootViewController; 17*9aa11ec8SBen Roth@property (nonatomic, strong) NSDictionary *jsTestSuiteResult; 18d5e9e21bSBen Roth 192a38a11eSExponent GitHub Bot@end 202a38a11eSExponent GitHub Bot 212a38a11eSExponent GitHub Bot@implementation ExponentIntegrationTests 222a38a11eSExponent GitHub Bot 232a38a11eSExponent GitHub Bot- (void)setUp 242a38a11eSExponent GitHub Bot{ 252a38a11eSExponent GitHub Bot [super setUp]; 26*9aa11ec8SBen Roth 27*9aa11ec8SBen Roth _jsTestSuiteResult = nil; 28d5e9e21bSBen Roth _rootViewController = (EXRootViewController *)[ExpoKit sharedInstance].rootViewController; 29*9aa11ec8SBen Roth [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_onTestSuiteCompleted:) name:EXTestSuiteCompletedNotification object:nil]; 302a38a11eSExponent GitHub Bot} 312a38a11eSExponent GitHub Bot 32d5e9e21bSBen Roth- (void)testDoesTestSuiteAppPassAllJSTests 332a38a11eSExponent GitHub Bot{ 34d5e9e21bSBen Roth [_rootViewController applicationWillEnterForeground]; 352a38a11eSExponent GitHub Bot 36*9aa11ec8SBen Roth // wait for JS 37*9aa11ec8SBen Roth NSDate *dateToTimeOut = [NSDate dateWithTimeIntervalSinceNow:60]; 38*9aa11ec8SBen Roth while (dateToTimeOut.timeIntervalSinceNow > 0 && _jsTestSuiteResult == nil) { 39d5e9e21bSBen Roth [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 40d5e9e21bSBen Roth [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 41d5e9e21bSBen Roth } 42*9aa11ec8SBen Roth XCTAssert((_jsTestSuiteResult), @"Test suite timed out"); 43*9aa11ec8SBen Roth XCTAssert(([_jsTestSuiteResult[@"failed"] integerValue] == 0), @"Test suite failed: %@", _jsTestSuiteResult); 44*9aa11ec8SBen Roth} 45*9aa11ec8SBen Roth 46*9aa11ec8SBen Roth#pragma mark - internal 47*9aa11ec8SBen Roth 48*9aa11ec8SBen Roth- (void)_onTestSuiteCompleted:(NSNotification *)notif 49*9aa11ec8SBen Roth{ 50*9aa11ec8SBen Roth _jsTestSuiteResult = notif.userInfo; 512a38a11eSExponent GitHub Bot} 522a38a11eSExponent GitHub Bot 532a38a11eSExponent GitHub Bot@end 54