[platform_view]use cmd to uninstall the app (#111139)

This commit is contained in:
hellohuanlin 2022-09-07 15:45:26 -07:00 committed by GitHub
parent c10164c4b2
commit 8e2333dcc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 39 deletions

View file

@ -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');

View file

@ -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];
}