mirror of
https://github.com/flutter/flutter
synced 2024-08-25 11:07:06 +00:00
[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';
|
||||
|
||||
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');
|
||||
|
||||
await flutter('clean');
|
||||
|
|
|
@ -26,45 +26,6 @@ static const CGFloat kStandardTimeOut = 60.0;
|
|||
[super setUp];
|
||||
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 launch];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue