/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ #import #import "FBIntegrationTestCase.h" #import "XCUIElement.h" #import "XCUIApplication+FBTouchAction.h" #import "FBTestMacros.h" #import "XCUIDevice+FBRotation.h" #import "FBRunLoopSpinner.h" @interface FBW3CMultiTouchActionsIntegrationTests : FBIntegrationTestCase @end @implementation FBW3CMultiTouchActionsIntegrationTests - (void)verifyGesture:(NSArray *> *)gesture orientation:(UIDeviceOrientation)orientation { [[XCUIDevice sharedDevice] fb_setDeviceInterfaceOrientation:orientation]; NSError *error; XCTAssertTrue([self.testedApplication fb_performW3CActions:gesture elementCache:nil error:&error]); FBAssertWaitTillBecomesTrue(self.testedApplication.alerts.count > 0); } - (void)setUp { [super setUp]; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [self launchApplication]; [self goToAlertsPage]; }); [self clearAlert]; } - (void)tearDown { [self clearAlert]; [self resetOrientation]; [super tearDown]; } - (void)testErroneousGestures { NSArray *> *> *invalidGestures = @[ // One of the chains has duplicated id @[ @{ @"type": @"pointer", @"id": @"finger1", @"parameters": @{@"pointerType": @"touch"}, @"actions": @[ @{@"type": @"pointerMove", @"duration": @0, @"x": @1, @"y": @1}, @{@"type": @"pointerDown"}, @{@"type": @"pause", @"duration": @100}, @{@"type": @"pointerUp"}, ], }, @{ @"type": @"pointer", @"id": @"finger1", @"parameters": @{@"pointerType": @"touch"}, @"actions": @[ @{@"type": @"pointerMove", @"duration": @0, @"x": @1, @"y": @1}, @{@"type": @"pointerDown"}, @{@"type": @"pause", @"duration": @100}, @{@"type": @"pointerUp"}, ], }, ], ]; for (NSArray *> *invalidGesture in invalidGestures) { NSError *error; XCTAssertFalse([self.testedApplication fb_performW3CActions:invalidGesture elementCache:nil error:&error]); XCTAssertNotNil(error); } } - (void)testSymmetricTwoFingersTap { XCUIElement *element = self.testedApplication.buttons[FBShowAlertButtonName]; NSArray *> *gesture = @[ @{ @"type": @"pointer", @"id": @"finger1", @"parameters": @{@"pointerType": @"touch"}, @"actions": @[ @{@"type": @"pointerMove", @"duration": @0, @"origin": element, @"x": @0, @"y": @0}, @{@"type": @"pointerDown"}, @{@"type": @"pause", @"duration": @100}, @{@"type": @"pointerUp"}, ], }, @{ @"type": @"pointer", @"id": @"finger2", @"parameters": @{@"pointerType": @"touch"}, @"actions": @[ @{@"type": @"pointerMove", @"duration": @0, @"origin": element, @"x": @0, @"y": @0}, @{@"type": @"pointerDown"}, @{@"type": @"pause", @"duration": @100}, @{@"type": @"pointerUp"}, ], }, ]; [self verifyGesture:gesture orientation:UIDeviceOrientationPortrait]; } @end