初始化提交
This commit is contained in:
220
WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m
Normal file
220
WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m
Normal file
@@ -0,0 +1,220 @@
|
||||
/**
|
||||
* 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 <XCTest/XCTest.h>
|
||||
|
||||
#import "FBIntegrationTestCase.h"
|
||||
#import "FBImageUtils.h"
|
||||
#import "FBMacros.h"
|
||||
#import "FBTestMacros.h"
|
||||
#import "XCUIApplication.h"
|
||||
#import "XCUIApplication+FBHelpers.h"
|
||||
#import "XCUIDevice+FBHelpers.h"
|
||||
#import "XCUIDevice+FBRotation.h"
|
||||
#import "XCUIScreen.h"
|
||||
|
||||
@interface XCUIDeviceHelperTests : FBIntegrationTestCase
|
||||
@end
|
||||
|
||||
@implementation XCUIDeviceHelperTests
|
||||
|
||||
- (void)restorePortraitOrientation
|
||||
{
|
||||
if ([XCUIDevice sharedDevice].orientation != UIDeviceOrientationPortrait) {
|
||||
[[XCUIDevice sharedDevice] fb_setDeviceInterfaceOrientation:UIDeviceOrientationPortrait];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
[self launchApplication];
|
||||
[self restorePortraitOrientation];
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
[self restorePortraitOrientation];
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testScreenshot
|
||||
{
|
||||
NSError *error = nil;
|
||||
NSData *screenshotData = [[XCUIDevice sharedDevice] fb_screenshotWithError:&error];
|
||||
XCTAssertNotNil(screenshotData);
|
||||
XCTAssertNil(error);
|
||||
XCTAssertTrue(FBIsPngImage(screenshotData));
|
||||
|
||||
UIImage *screenshot = [UIImage imageWithData:screenshotData];
|
||||
XCTAssertNotNil(screenshot);
|
||||
|
||||
XCUIScreen *mainScreen = XCUIScreen.mainScreen;
|
||||
UIImage *screenshotExact = ((XCUIScreenshot *)mainScreen.screenshot).image;
|
||||
XCTAssertEqualWithAccuracy(screenshotExact.size.height * mainScreen.scale,
|
||||
screenshot.size.height,
|
||||
FLT_EPSILON);
|
||||
XCTAssertEqualWithAccuracy(screenshotExact.size.width * mainScreen.scale,
|
||||
screenshot.size.width,
|
||||
FLT_EPSILON);
|
||||
}
|
||||
|
||||
- (void)testLandscapeScreenshot
|
||||
{
|
||||
XCTAssertTrue([[XCUIDevice sharedDevice] fb_setDeviceInterfaceOrientation:UIDeviceOrientationLandscapeLeft]);
|
||||
NSError *error = nil;
|
||||
NSData *screenshotData = [[XCUIDevice sharedDevice] fb_screenshotWithError:&error];
|
||||
XCTAssertNotNil(screenshotData);
|
||||
XCTAssertTrue(FBIsPngImage(screenshotData));
|
||||
XCTAssertNil(error);
|
||||
|
||||
UIImage *screenshot = [UIImage imageWithData:screenshotData];
|
||||
XCTAssertNotNil(screenshot);
|
||||
XCTAssertTrue(screenshot.size.width > screenshot.size.height);
|
||||
|
||||
XCUIScreen *mainScreen = XCUIScreen.mainScreen;
|
||||
UIImage *screenshotExact = ((XCUIScreenshot *)mainScreen.screenshot).image;
|
||||
CGSize realMainScreenSize = screenshotExact.size.height > screenshot.size.width
|
||||
? CGSizeMake(screenshotExact.size.height * mainScreen.scale, screenshotExact.size.width * mainScreen.scale)
|
||||
: CGSizeMake(screenshotExact.size.width * mainScreen.scale, screenshotExact.size.height * mainScreen.scale);
|
||||
XCTAssertEqualWithAccuracy(realMainScreenSize.height, screenshot.size.height, FLT_EPSILON);
|
||||
XCTAssertEqualWithAccuracy(realMainScreenSize.width, screenshot.size.width, FLT_EPSILON);
|
||||
}
|
||||
|
||||
- (void)testWifiAddress
|
||||
{
|
||||
NSString *adderss = [XCUIDevice sharedDevice].fb_wifiIPAddress;
|
||||
if (!adderss) {
|
||||
return;
|
||||
}
|
||||
NSRange range = [adderss rangeOfString:@"^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})" options:NSRegularExpressionSearch];
|
||||
XCTAssertTrue(range.location != NSNotFound);
|
||||
}
|
||||
|
||||
- (void)testGoToHomeScreen
|
||||
{
|
||||
NSError *error;
|
||||
XCTAssertTrue([[XCUIDevice sharedDevice] fb_goToHomescreenWithError:&error]);
|
||||
XCTAssertNil(error);
|
||||
FBAssertWaitTillBecomesTrue([XCUIApplication fb_activeApplication].icons[@"Safari"].exists);
|
||||
}
|
||||
|
||||
- (void)testLockUnlockScreen
|
||||
{
|
||||
XCTAssertFalse([[XCUIDevice sharedDevice] fb_isScreenLocked]);
|
||||
NSError *error;
|
||||
XCTAssertTrue([[XCUIDevice sharedDevice] fb_lockScreen:&error]);
|
||||
XCTAssertTrue([[XCUIDevice sharedDevice] fb_isScreenLocked]);
|
||||
XCTAssertNil(error);
|
||||
XCTAssertTrue([[XCUIDevice sharedDevice] fb_unlockScreen:&error]);
|
||||
XCTAssertFalse([[XCUIDevice sharedDevice] fb_isScreenLocked]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
- (void)testUrlSchemeActivation
|
||||
{
|
||||
if (SYSTEM_VERSION_LESS_THAN(@"16.4")) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSError *error;
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_openUrl:@"https://apple.com" error:&error]);
|
||||
FBAssertWaitTillBecomesTrue([XCUIApplication.fb_activeApplication.bundleID isEqualToString:@"com.apple.mobilesafari"]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
- (void)testUrlSchemeActivationWithApp
|
||||
{
|
||||
if (SYSTEM_VERSION_LESS_THAN(@"16.4")) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSError *error;
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_openUrl:@"https://apple.com"
|
||||
withApplication:@"com.apple.mobilesafari"
|
||||
error:&error]);
|
||||
FBAssertWaitTillBecomesTrue([XCUIApplication.fb_activeApplication.bundleID isEqualToString:@"com.apple.mobilesafari"]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
#if !TARGET_OS_TV
|
||||
- (void)testSimulatedLocationSetup
|
||||
{
|
||||
if (SYSTEM_VERSION_LESS_THAN(@"16.4")) {
|
||||
return;
|
||||
}
|
||||
|
||||
CLLocation *simulatedLocation = [[CLLocation alloc] initWithLatitude:50 longitude:50];
|
||||
NSError *error;
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_setSimulatedLocation:simulatedLocation error:&error]);
|
||||
XCTAssertNil(error);
|
||||
CLLocation *currentLocation = [XCUIDevice.sharedDevice fb_getSimulatedLocation:&error];
|
||||
XCTAssertNil(error);
|
||||
XCTAssertNotNil(currentLocation);
|
||||
XCTAssertEqualWithAccuracy(simulatedLocation.coordinate.latitude, currentLocation.coordinate.latitude, 0.1);
|
||||
XCTAssertEqualWithAccuracy(simulatedLocation.coordinate.longitude, currentLocation.coordinate.longitude, 0.1);
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_clearSimulatedLocation:&error]);
|
||||
XCTAssertNil(error);
|
||||
currentLocation = [XCUIDevice.sharedDevice fb_getSimulatedLocation:&error];
|
||||
XCTAssertNil(error);
|
||||
XCTAssertNotEqualWithAccuracy(simulatedLocation.coordinate.latitude, currentLocation.coordinate.latitude, 0.1);
|
||||
XCTAssertNotEqualWithAccuracy(simulatedLocation.coordinate.longitude, currentLocation.coordinate.longitude, 0.1);
|
||||
}
|
||||
#endif
|
||||
|
||||
- (void)testPressingUnsupportedButton
|
||||
{
|
||||
NSError *error;
|
||||
NSNumber *duration = nil;
|
||||
XCTAssertFalse([XCUIDevice.sharedDevice fb_pressButton:@"volumeUpp"
|
||||
forDuration:duration
|
||||
error:&error]);
|
||||
XCTAssertNotNil(error);
|
||||
}
|
||||
|
||||
- (void)testPressingSupportedButton
|
||||
{
|
||||
NSError *error;
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_pressButton:@"home"
|
||||
forDuration:nil
|
||||
error:&error]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
- (void)testPressingSupportedButtonNumber
|
||||
{
|
||||
NSError *error;
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_pressButton:@"home"
|
||||
forDuration:[NSNumber numberWithDouble:1.0]
|
||||
error:&error]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
- (void)testLongPressHomeButton
|
||||
{
|
||||
NSError *error;
|
||||
// kHIDPage_Consumer = 0x0C
|
||||
// kHIDUsage_Csmr_Menu = 0x40
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_performIOHIDEventWithPage:0x0C
|
||||
usage:0x40
|
||||
duration:1.0
|
||||
error:&error]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
- (void)testAppearance
|
||||
{
|
||||
if (SYSTEM_VERSION_LESS_THAN(@"15.0")) {
|
||||
return;
|
||||
}
|
||||
NSError *error;
|
||||
XCTAssertTrue([XCUIDevice.sharedDevice fb_setAppearance:FBUIInterfaceAppearanceDark error:&error]);
|
||||
XCTAssertNil(error);
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user