[platform_view]use cmd to uninstall the app (#111139)
This commit is contained in:
parent
c10164c4b2
commit
8e2333dcc7
@ -15,6 +15,17 @@ Future<void> main() async {
|
|||||||
final String projectDirectory = '${flutterDirectory.path}/dev/integration_tests/ios_platform_view_tests';
|
final String projectDirectory = '${flutterDirectory.path}/dev/integration_tests/ios_platform_view_tests';
|
||||||
|
|
||||||
await inDirectory(projectDirectory, () async {
|
await inDirectory(projectDirectory, () async {
|
||||||
|
|
||||||
|
// To address "Failed to terminate" failure.
|
||||||
|
section('Uninstall previously installed app');
|
||||||
|
|
||||||
|
await flutter(
|
||||||
|
'install',
|
||||||
|
options: <String>[
|
||||||
|
'--uninstall-only',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
section('Build clean');
|
section('Build clean');
|
||||||
|
|
||||||
await flutter('clean');
|
await flutter('clean');
|
||||||
|
@ -26,45 +26,6 @@ static const CGFloat kStandardTimeOut = 60.0;
|
|||||||
[super setUp];
|
[super setUp];
|
||||||
self.continueAfterFailure = NO;
|
self.continueAfterFailure = NO;
|
||||||
|
|
||||||
// Delete the previously installed app if needed before running.
|
|
||||||
// This is to address "Failed to terminate" failure.
|
|
||||||
// The solution is based on https://stackoverflow.com/questions/50016018/uitest-failed-to-terminate-com-test-abc3708-after-60-0s-state-is-still-runnin
|
|
||||||
XCUIApplication *springboard = [[XCUIApplication alloc] initWithBundleIdentifier:@"com.apple.springboard"];
|
|
||||||
[springboard activate];
|
|
||||||
XCUIElement *appIcon = springboard.icons[@"ios_platform_view_tests"];
|
|
||||||
|
|
||||||
if ([appIcon waitForExistenceWithTimeout:kStandardTimeOut]) {
|
|
||||||
NSLog(@"Deleting previously installed app.");
|
|
||||||
|
|
||||||
// It's possible that app icon is not hittable yet.
|
|
||||||
NSPredicate *hittable = [NSPredicate predicateWithFormat:@"exists == YES AND hittable == YES"];
|
|
||||||
[self expectationForPredicate:hittable evaluatedWithObject:appIcon handler:nil];
|
|
||||||
[self waitForExpectationsWithTimeout:kStandardTimeOut handler:nil];
|
|
||||||
|
|
||||||
// Pressing for 2 seconds will bring up context menu.
|
|
||||||
// Pressing for 3 seconds will dismiss the context menu and make icons wiggle.
|
|
||||||
[appIcon pressForDuration:2];
|
|
||||||
|
|
||||||
// The "Remove App" button in context menu.
|
|
||||||
XCUIElement *contextMenuRemoveButton = springboard.buttons[@"Remove App"];
|
|
||||||
XCTAssert([contextMenuRemoveButton waitForExistenceWithTimeout:kStandardTimeOut], @"The context menu remove app button must appear.");
|
|
||||||
[contextMenuRemoveButton tap];
|
|
||||||
|
|
||||||
// Tap the delete confirmation
|
|
||||||
XCUIElement *deleteConfirmationButton = springboard.alerts.buttons[@"Delete App"];
|
|
||||||
XCTAssert([deleteConfirmationButton waitForExistenceWithTimeout:kStandardTimeOut], @"The first delete confirmation button must appear.");
|
|
||||||
[deleteConfirmationButton tap];
|
|
||||||
|
|
||||||
// Tap the second delete confirmation
|
|
||||||
XCUIElement *secondDeleteConfirmationButton = springboard.alerts.buttons[@"Delete"];
|
|
||||||
XCTAssert([secondDeleteConfirmationButton waitForExistenceWithTimeout:kStandardTimeOut], @"The second delete confirmation button must appear.");
|
|
||||||
[secondDeleteConfirmationButton tap];
|
|
||||||
|
|
||||||
[NSThread sleepForTimeInterval:3];
|
|
||||||
} else {
|
|
||||||
NSLog(@"No previously installed app found.");
|
|
||||||
}
|
|
||||||
|
|
||||||
self.app = [[XCUIApplication alloc] init];
|
self.app = [[XCUIApplication alloc] init];
|
||||||
[self.app launch];
|
[self.app launch];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user