diff --git a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj index cc4462541c2d5..4bfcde3cbe62a 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj +++ b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 0A02E8F724EFAD27002D54E5 /* BogusFontTextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A02E8F624EFAD27002D54E5 /* BogusFontTextTest.m */; }; + 0A02E8F924EFB1F5002D54E5 /* golden_bogus_font_text_iPhone 8_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 0A02E8F824EFB1F5002D54E5 /* golden_bogus_font_text_iPhone 8_simulator.png */; }; 0A42BFB42447E179007E212E /* TextSemanticsFocusTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A42BFB32447E179007E212E /* TextSemanticsFocusTest.m */; }; 0A57B3BD2323C4BD00DD9521 /* ScreenBeforeFlutter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A57B3BC2323C4BD00DD9521 /* ScreenBeforeFlutter.m */; }; 0A57B3BF2323C74200DD9521 /* FlutterEngine+ScenariosTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A57B3BE2323C74200DD9521 /* FlutterEngine+ScenariosTest.m */; }; @@ -32,7 +34,6 @@ 248D76EF22E388380012F0C1 /* PlatformViewUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 248D76EE22E388380012F0C1 /* PlatformViewUITests.m */; }; 248FDFC422FE7CD0009CC7CD /* FlutterEngineTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 248FDFC322FE7CD0009CC7CD /* FlutterEngineTest.m */; }; 24D47D1B230C79840069DD5E /* golden_platform_view_D211AP.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D47D1A230C79840069DD5E /* golden_platform_view_D211AP.png */; }; - 24D47D1D230CA2700069DD5E /* golden_platform_view_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D47D1C230CA2700069DD5E /* golden_platform_view_iPhone SE_simulator.png */; }; 24F1FB89230B4579005ACE7C /* TextPlatformView.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F1FB87230B4579005ACE7C /* TextPlatformView.m */; }; 3DEF491223C3BE6500184216 /* golden_platform_view_clippath_iPhone 8_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 3DE09E8B23C010BC006C9851 /* golden_platform_view_clippath_iPhone 8_simulator.png */; }; 3DEF491323C3BE6500184216 /* golden_platform_view_cliprect_iPhone 8_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 3DE09E9223C010BD006C9851 /* golden_platform_view_cliprect_iPhone 8_simulator.png */; }; @@ -44,17 +45,11 @@ 3DEF491923C3BE6500184216 /* golden_platform_view_rotate_iPhone 8_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 3DE09E8E23C010BD006C9851 /* golden_platform_view_rotate_iPhone 8_simulator.png */; }; 3DEF491A23C3BE6500184216 /* golden_platform_view_transform_iPhone 8_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 3DE09E9123C010BD006C9851 /* golden_platform_view_transform_iPhone 8_simulator.png */; }; 4F06F1B32473296E000AF246 /* LocalizationInitializationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F06F1B124731F66000AF246 /* LocalizationInitializationTest.m */; }; - 59A97FD8236A49D300B4C066 /* golden_platform_view_multiple_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 59A97FD7236A49D300B4C066 /* golden_platform_view_multiple_iPhone SE_simulator.png */; }; 59A97FDA236B984300B4C066 /* golden_platform_view_multiple_background_foreground_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 59A97FD9236B984300B4C066 /* golden_platform_view_multiple_background_foreground_iPhone SE_simulator.png */; }; 6402EBD124147BDA00987DCB /* UnobstructedPlatformViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6402EBD024147BDA00987DCB /* UnobstructedPlatformViewTests.m */; }; 6816DB9E231750ED00A51400 /* GoldenPlatformViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6816DB9D231750ED00A51400 /* GoldenPlatformViewTests.m */; }; 6816DBA12317573300A51400 /* GoldenImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6816DBA02317573300A51400 /* GoldenImage.m */; }; - 6816DBA42318358200A51400 /* PlatformViewGoldenTestManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6816DBA32318358200A51400 /* PlatformViewGoldenTestManager.m */; }; - 6816DBAA2318696600A51400 /* golden_platform_view_clippath_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 6816DBA52318696600A51400 /* golden_platform_view_clippath_iPhone SE_simulator.png */; }; - 6816DBAB2318696600A51400 /* golden_platform_view_transform_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 6816DBA62318696600A51400 /* golden_platform_view_transform_iPhone SE_simulator.png */; }; - 6816DBAC2318696600A51400 /* golden_platform_view_opacity_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 6816DBA72318696600A51400 /* golden_platform_view_opacity_iPhone SE_simulator.png */; }; - 6816DBAD2318696600A51400 /* golden_platform_view_cliprect_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 6816DBA82318696600A51400 /* golden_platform_view_cliprect_iPhone SE_simulator.png */; }; - 6816DBAE2318696600A51400 /* golden_platform_view_cliprrect_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 6816DBA92318696600A51400 /* golden_platform_view_cliprrect_iPhone SE_simulator.png */; }; + 6816DBA42318358200A51400 /* GoldenTestManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6816DBA32318358200A51400 /* GoldenTestManager.m */; }; 68A5B63423EB71D300BDBCDB /* PlatformViewGestureRecognizerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 68A5B63323EB71D300BDBCDB /* PlatformViewGestureRecognizerTests.m */; }; /* End PBXBuildFile section */ @@ -113,6 +108,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0A02E8F624EFAD27002D54E5 /* BogusFontTextTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BogusFontTextTest.m; sourceTree = ""; }; + 0A02E8F824EFB1F5002D54E5 /* golden_bogus_font_text_iPhone 8_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_bogus_font_text_iPhone 8_simulator.png"; sourceTree = ""; }; 0A42BFB32447E179007E212E /* TextSemanticsFocusTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TextSemanticsFocusTest.m; sourceTree = ""; }; 0A42BFB52447E19F007E212E /* TextSemanticsFocusTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextSemanticsFocusTest.h; sourceTree = ""; }; 0A57B3BB2323C4BD00DD9521 /* ScreenBeforeFlutter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScreenBeforeFlutter.h; sourceTree = ""; }; @@ -141,7 +138,6 @@ 248D76F022E388380012F0C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 248FDFC322FE7CD0009CC7CD /* FlutterEngineTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FlutterEngineTest.m; sourceTree = ""; }; 24D47D1A230C79840069DD5E /* golden_platform_view_D211AP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = golden_platform_view_D211AP.png; sourceTree = ""; }; - 24D47D1C230CA2700069DD5E /* golden_platform_view_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_iPhone SE_simulator.png"; sourceTree = ""; }; 24D47D1E230CA4480069DD5E /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 24F1FB87230B4579005ACE7C /* TextPlatformView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextPlatformView.m; sourceTree = ""; }; 24F1FB88230B4579005ACE7C /* TextPlatformView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextPlatformView.h; sourceTree = ""; }; @@ -155,20 +151,14 @@ 3DE09E9123C010BD006C9851 /* golden_platform_view_transform_iPhone 8_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_transform_iPhone 8_simulator.png"; sourceTree = ""; }; 3DE09E9223C010BD006C9851 /* golden_platform_view_cliprect_iPhone 8_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_cliprect_iPhone 8_simulator.png"; sourceTree = ""; }; 4F06F1B124731F66000AF246 /* LocalizationInitializationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocalizationInitializationTest.m; sourceTree = ""; }; - 59A97FD7236A49D300B4C066 /* golden_platform_view_multiple_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_multiple_iPhone SE_simulator.png"; sourceTree = ""; }; 59A97FD9236B984300B4C066 /* golden_platform_view_multiple_background_foreground_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_multiple_background_foreground_iPhone SE_simulator.png"; sourceTree = ""; }; 6402EBD024147BDA00987DCB /* UnobstructedPlatformViewTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UnobstructedPlatformViewTests.m; sourceTree = ""; }; 6816DB9C231750ED00A51400 /* GoldenPlatformViewTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GoldenPlatformViewTests.h; sourceTree = ""; }; 6816DB9D231750ED00A51400 /* GoldenPlatformViewTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GoldenPlatformViewTests.m; sourceTree = ""; }; 6816DB9F2317573300A51400 /* GoldenImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GoldenImage.h; sourceTree = ""; }; 6816DBA02317573300A51400 /* GoldenImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GoldenImage.m; sourceTree = ""; }; - 6816DBA22318358200A51400 /* PlatformViewGoldenTestManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformViewGoldenTestManager.h; sourceTree = ""; }; - 6816DBA32318358200A51400 /* PlatformViewGoldenTestManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlatformViewGoldenTestManager.m; sourceTree = ""; }; - 6816DBA52318696600A51400 /* golden_platform_view_clippath_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_clippath_iPhone SE_simulator.png"; sourceTree = ""; }; - 6816DBA62318696600A51400 /* golden_platform_view_transform_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_transform_iPhone SE_simulator.png"; sourceTree = ""; }; - 6816DBA72318696600A51400 /* golden_platform_view_opacity_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_opacity_iPhone SE_simulator.png"; sourceTree = ""; }; - 6816DBA82318696600A51400 /* golden_platform_view_cliprect_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_cliprect_iPhone SE_simulator.png"; sourceTree = ""; }; - 6816DBA92318696600A51400 /* golden_platform_view_cliprrect_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_cliprrect_iPhone SE_simulator.png"; sourceTree = ""; }; + 6816DBA22318358200A51400 /* GoldenTestManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GoldenTestManager.h; sourceTree = ""; }; + 6816DBA32318358200A51400 /* GoldenTestManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GoldenTestManager.m; sourceTree = ""; }; 68A5B63323EB71D300BDBCDB /* PlatformViewGestureRecognizerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlatformViewGestureRecognizerTests.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -257,6 +247,7 @@ children = ( 4F06F1B124731F66000AF246 /* LocalizationInitializationTest.m */, 6402EBD024147BDA00987DCB /* UnobstructedPlatformViewTests.m */, + 0A02E8F824EFB1F5002D54E5 /* golden_bogus_font_text_iPhone 8_simulator.png */, 0D14A3FD239743190013D873 /* golden_platform_view_rotate_iPhone SE_simulator.png */, 3DE09E8B23C010BC006C9851 /* golden_platform_view_clippath_iPhone 8_simulator.png */, 3DE09E9223C010BD006C9851 /* golden_platform_view_cliprect_iPhone 8_simulator.png */, @@ -268,24 +259,18 @@ 3DE09E8E23C010BD006C9851 /* golden_platform_view_rotate_iPhone 8_simulator.png */, 3DE09E9123C010BD006C9851 /* golden_platform_view_transform_iPhone 8_simulator.png */, 59A97FD9236B984300B4C066 /* golden_platform_view_multiple_background_foreground_iPhone SE_simulator.png */, - 59A97FD7236A49D300B4C066 /* golden_platform_view_multiple_iPhone SE_simulator.png */, 244EA6CF230DBE8900B2D26E /* golden_platform_view_D21AP.png */, - 24D47D1C230CA2700069DD5E /* golden_platform_view_iPhone SE_simulator.png */, 24D47D1A230C79840069DD5E /* golden_platform_view_D211AP.png */, - 6816DBA52318696600A51400 /* golden_platform_view_clippath_iPhone SE_simulator.png */, - 6816DBA82318696600A51400 /* golden_platform_view_cliprect_iPhone SE_simulator.png */, - 6816DBA92318696600A51400 /* golden_platform_view_cliprrect_iPhone SE_simulator.png */, - 6816DBA72318696600A51400 /* golden_platform_view_opacity_iPhone SE_simulator.png */, - 6816DBA62318696600A51400 /* golden_platform_view_transform_iPhone SE_simulator.png */, 248D76EE22E388380012F0C1 /* PlatformViewUITests.m */, + 0A02E8F624EFAD27002D54E5 /* BogusFontTextTest.m */, 248D76F022E388380012F0C1 /* Info.plist */, 24D47D1E230CA4480069DD5E /* README.md */, 6816DB9C231750ED00A51400 /* GoldenPlatformViewTests.h */, 6816DB9D231750ED00A51400 /* GoldenPlatformViewTests.m */, 6816DB9F2317573300A51400 /* GoldenImage.h */, 6816DBA02317573300A51400 /* GoldenImage.m */, - 6816DBA22318358200A51400 /* PlatformViewGoldenTestManager.h */, - 6816DBA32318358200A51400 /* PlatformViewGoldenTestManager.m */, + 6816DBA22318358200A51400 /* GoldenTestManager.h */, + 6816DBA32318358200A51400 /* GoldenTestManager.m */, 68A5B63323EB71D300BDBCDB /* PlatformViewGestureRecognizerTests.m */, 0D8470A2240F0B1F0030B565 /* StatusBarTest.h */, 0D8470A3240F0B1F0030B565 /* StatusBarTest.m */, @@ -428,25 +413,19 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6816DBAE2318696600A51400 /* golden_platform_view_cliprrect_iPhone SE_simulator.png in Resources */, 3DEF491623C3BE6500184216 /* golden_platform_view_multiple_background_foreground_iPhone 8_simulator.png in Resources */, + 0A02E8F924EFB1F5002D54E5 /* golden_bogus_font_text_iPhone 8_simulator.png in Resources */, 3DEF491323C3BE6500184216 /* golden_platform_view_cliprect_iPhone 8_simulator.png in Resources */, 3DEF491523C3BE6500184216 /* golden_platform_view_iPhone 8_simulator.png in Resources */, 0D14A3FE239743190013D873 /* golden_platform_view_rotate_iPhone SE_simulator.png in Resources */, - 6816DBAB2318696600A51400 /* golden_platform_view_transform_iPhone SE_simulator.png in Resources */, 3DEF491823C3BE6500184216 /* golden_platform_view_opacity_iPhone 8_simulator.png in Resources */, 3DEF491723C3BE6500184216 /* golden_platform_view_multiple_iPhone 8_simulator.png in Resources */, 3DEF491223C3BE6500184216 /* golden_platform_view_clippath_iPhone 8_simulator.png in Resources */, 3DEF491423C3BE6500184216 /* golden_platform_view_cliprrect_iPhone 8_simulator.png in Resources */, 59A97FDA236B984300B4C066 /* golden_platform_view_multiple_background_foreground_iPhone SE_simulator.png in Resources */, - 6816DBAA2318696600A51400 /* golden_platform_view_clippath_iPhone SE_simulator.png in Resources */, - 6816DBAD2318696600A51400 /* golden_platform_view_cliprect_iPhone SE_simulator.png in Resources */, 3DEF491923C3BE6500184216 /* golden_platform_view_rotate_iPhone 8_simulator.png in Resources */, 24D47D1B230C79840069DD5E /* golden_platform_view_D211AP.png in Resources */, - 59A97FD8236A49D300B4C066 /* golden_platform_view_multiple_iPhone SE_simulator.png in Resources */, - 24D47D1D230CA2700069DD5E /* golden_platform_view_iPhone SE_simulator.png in Resources */, 244EA6D0230DBE8900B2D26E /* golden_platform_view_D21AP.png in Resources */, - 6816DBAC2318696600A51400 /* golden_platform_view_opacity_iPhone SE_simulator.png in Resources */, 3DEF491A23C3BE6500184216 /* golden_platform_view_transform_iPhone 8_simulator.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -484,8 +463,9 @@ 6402EBD124147BDA00987DCB /* UnobstructedPlatformViewTests.m in Sources */, 68A5B63423EB71D300BDBCDB /* PlatformViewGestureRecognizerTests.m in Sources */, 6816DBA12317573300A51400 /* GoldenImage.m in Sources */, + 0A02E8F724EFAD27002D54E5 /* BogusFontTextTest.m in Sources */, 6816DB9E231750ED00A51400 /* GoldenPlatformViewTests.m in Sources */, - 6816DBA42318358200A51400 /* PlatformViewGoldenTestManager.m in Sources */, + 6816DBA42318358200A51400 /* GoldenTestManager.m in Sources */, 248D76EF22E388380012F0C1 /* PlatformViewUITests.m in Sources */, 0D8470A4240F0B1F0030B565 /* StatusBarTest.m in Sources */, 4F06F1B32473296E000AF246 /* LocalizationInitializationTest.m in Sources */, diff --git a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/xcshareddata/xcschemes/Scenarios.xcscheme b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/xcshareddata/xcschemes/Scenarios.xcscheme index 45f9a68a0179b..baf2e2bbb6033 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/xcshareddata/xcschemes/Scenarios.xcscheme +++ b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/xcshareddata/xcschemes/Scenarios.xcscheme @@ -28,15 +28,6 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" systemAttachmentLifetime = "keepNever"> - - - - + + diff --git a/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m b/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m index d09cc4db033c4..aeddcdaddabf0 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m +++ b/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m @@ -25,7 +25,7 @@ - (BOOL)application:(UIApplication*)application self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; NSDictionary* launchArgsMap = @{ - // The Platform view golden test args should match `PlatformViewGoldenTestManager`. + // The golden test args should match `GoldenTestManager`. @"--locale-initialization" : @"locale_initialization", @"--platform-view" : @"platform_view", @"--platform-view-no-overlay-intersection" : @"platform_view_no_overlay_intersection", @@ -48,7 +48,8 @@ - (BOOL)application:(UIApplication*)application @"--gesture-reject-eager" : @"platform_view_gesture_reject_eager", @"--gesture-accept" : @"platform_view_gesture_accept", @"--tap-status-bar" : @"tap_status_bar", - @"--text-semantics-focus" : @"text_semantics_focus" + @"--text-semantics-focus" : @"text_semantics_focus", + @"--bogus-font-text" : @"bogus_font_text" }; __block NSString* flutterViewControllerTestName = nil; [launchArgsMap diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/BogusFontTextTest.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/BogusFontTextTest.m new file mode 100644 index 0000000000000..4166145d5b306 --- /dev/null +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/BogusFontTextTest.m @@ -0,0 +1,28 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "GoldenTestManager.h" + +FLUTTER_ASSERT_ARC + +@interface BogusFontTextTest : XCTestCase + +@end + +@implementation BogusFontTextTest + +- (void)testFontRenderingWhenSuppliedWithBogusFont { + self.continueAfterFailure = NO; + + XCUIApplication* application = [[XCUIApplication alloc] init]; + application.launchArguments = @[ @"--bogus-font-text" ]; + [application launch]; + + GoldenTestManager* manager = [[GoldenTestManager alloc] initWithLaunchArg:@"--bogus-font-text"]; + [manager checkGoldenForTest:self]; +} + +@end diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.h b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.h index 3e4d0add04137..fd1b05ef0b009 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.h +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.h @@ -3,7 +3,7 @@ // found in the LICENSE file. #import -#import "PlatformViewGoldenTestManager.h" +#import "GoldenTestManager.h" NS_ASSUME_NONNULL_BEGIN @@ -12,20 +12,19 @@ NS_ASSUME_NONNULL_BEGIN // A new PlatformView golden tests can subclass this and override the `-initiWithInvocation:` // method, which then retun the `-initWithManager:invocation:` // -// Then in any test method, call `checkGolden` to perform the golden test. +// Then in any test method, call `checkPlatformViewGolden` to perform the golden test. // // This base class doesn't run any test case on its own. @interface GoldenPlatformViewTests : XCTestCase @property(nonatomic, strong) XCUIApplication* application; -// Initialize with a `PlatformViewGoldenTestManager`. -- (instancetype)initWithManager:(PlatformViewGoldenTestManager*)manager - invocation:(NSInvocation*)invocation; +// Initialize with a `GoldenTestManager`. +- (instancetype)initWithManager:(GoldenTestManager*)manager invocation:(NSInvocation*)invocation; // Take a sceenshot of the test app and check it has the same pixels with goldenImage inside the -// `PlatformViewGoldenTestManager`. -- (void)checkGolden; +// `GoldenTestManager`. +- (void)checkPlatformViewGolden; @end diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.m index 78d65163b8a5a..14b137b7f00a4 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.m +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenPlatformViewTests.m @@ -5,8 +5,7 @@ #import "GoldenPlatformViewTests.h" #include - -#import "PlatformViewGoldenTestManager.h" +#import "GoldenTestManager.h" static const NSInteger kSecondsToWaitForPlatformView = 30; @@ -14,14 +13,13 @@ @interface GoldenPlatformViewTests () @property(nonatomic, copy) NSString* goldenName; -@property(nonatomic, strong) PlatformViewGoldenTestManager* manager; +@property(nonatomic, strong) GoldenTestManager* manager; @end @implementation GoldenPlatformViewTests -- (instancetype)initWithManager:(PlatformViewGoldenTestManager*)manager - invocation:(NSInvocation*)invocation { +- (instancetype)initWithManager:(GoldenTestManager*)manager invocation:(NSInvocation*)invocation { self = [super initWithInvocation:invocation]; _manager = manager; return self; @@ -37,7 +35,7 @@ - (void)setUp { } // Note: don't prefix with "test" or GoldenPlatformViewTests will run instead of the subclasses. -- (void)checkGolden { +- (void)checkPlatformViewGolden { XCUIElement* element = self.application.textViews.firstMatch; BOOL exists = [element waitForExistenceWithTimeout:kSecondsToWaitForPlatformView]; if (!exists) { @@ -47,29 +45,6 @@ - (void)checkGolden { @(kSecondsToWaitForPlatformView)); } - GoldenImage* golden = self.manager.goldenImage; - - XCUIScreenshot* screenshot = [[XCUIScreen mainScreen] screenshot]; - if (!golden.image) { - XCTAttachment* attachment = [XCTAttachment attachmentWithScreenshot:screenshot]; - attachment.name = @"new_golden"; - attachment.lifetime = XCTAttachmentLifetimeKeepAlways; - [self addAttachment:attachment]; - XCTFail(@"This test will fail - no golden named %@ found. Follow the steps in the " - @"README to add a new golden.", - golden.goldenName); - } - - if (![golden compareGoldenToImage:screenshot.image]) { - XCTAttachment* screenshotAttachment; - screenshotAttachment = [XCTAttachment attachmentWithImage:screenshot.image]; - screenshotAttachment.name = golden.goldenName; - screenshotAttachment.lifetime = XCTAttachmentLifetimeKeepAlways; - [self addAttachment:screenshotAttachment]; - - XCTFail(@"Goldens to not match. Follow the steps in the " - @"README to update golden named %@ if needed.", - golden.goldenName); - } + [self.manager checkGoldenForTest:self]; } @end diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGoldenTestManager.h b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenTestManager.h similarity index 78% rename from testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGoldenTestManager.h rename to testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenTestManager.h index 733ea8839f11b..4bb0b275a77e9 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGoldenTestManager.h +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenTestManager.h @@ -3,7 +3,7 @@ // found in the LICENSE file. #import - +#import #import "GoldenImage.h" NS_ASSUME_NONNULL_BEGIN @@ -14,7 +14,7 @@ extern NSDictionary* launchArgsMap; // // It creates the correct `identifer` based on the `launchArg`. // It also generates the correct GoldenImage based on the `identifier`. -@interface PlatformViewGoldenTestManager : NSObject +@interface GoldenTestManager : NSObject @property(readonly, strong, nonatomic) GoldenImage* goldenImage; @property(readonly, copy, nonatomic) NSString* identifier; @@ -25,6 +25,10 @@ extern NSDictionary* launchArgsMap; // Crahes if the launchArg is not mapped in `Appdelegate.launchArgsMap`. - (instancetype)initWithLaunchArg:(NSString*)launchArg; +// Take a sceenshot of the test app and check it has the same pixels with +// goldenImage inside the `GoldenTestManager`. +- (void)checkGoldenForTest:(XCTestCase*)test; + @end NS_ASSUME_NONNULL_END diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGoldenTestManager.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenTestManager.m similarity index 55% rename from testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGoldenTestManager.m rename to testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenTestManager.m index 230fe5c89e238..fd3f486bcaf5a 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewGoldenTestManager.m +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/GoldenTestManager.m @@ -2,17 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "PlatformViewGoldenTestManager.h" - +#import "GoldenTestManager.h" #import -@interface PlatformViewGoldenTestManager () +@interface GoldenTestManager () @property(readwrite, strong, nonatomic) GoldenImage* goldenImage; @end -@implementation PlatformViewGoldenTestManager +@implementation GoldenTestManager NSDictionary* launchArgsMap; @@ -34,6 +33,7 @@ - (instancetype)initWithLaunchArg:(NSString*)launchArg { @"--platform-view-transform" : @"platform_view_transform", @"--platform-view-opacity" : @"platform_view_opacity", @"--platform-view-rotate" : @"platform_view_rotate", + @"--bogus-font-text" : @"bogus_font_text", }; }); _identifier = launchArgsMap[launchArg]; @@ -44,4 +44,29 @@ - (instancetype)initWithLaunchArg:(NSString*)launchArg { return self; } +- (void)checkGoldenForTest:(XCTestCase*)test { + XCUIScreenshot* screenshot = [[XCUIScreen mainScreen] screenshot]; + if (!_goldenImage.image) { + XCTAttachment* attachment = [XCTAttachment attachmentWithScreenshot:screenshot]; + attachment.name = @"new_golden"; + attachment.lifetime = XCTAttachmentLifetimeKeepAlways; + [test addAttachment:attachment]; + XCTFail(@"This test will fail - no golden named %@ found. Follow the steps in the " + @"README to add a new golden.", + _goldenImage.goldenName); + } + + if (![_goldenImage compareGoldenToImage:screenshot.image]) { + XCTAttachment* screenshotAttachment; + screenshotAttachment = [XCTAttachment attachmentWithImage:screenshot.image]; + screenshotAttachment.name = _goldenImage.goldenName; + screenshotAttachment.lifetime = XCTAttachmentLifetimeKeepAlways; + [test addAttachment:screenshotAttachment]; + + XCTFail(@"Goldens to not match. Follow the steps in the " + @"README to update golden named %@ if needed.", + _goldenImage.goldenName); + } +} + @end diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewUITests.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewUITests.m index 1d23e3a064378..a078c46aa86f1 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewUITests.m +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/PlatformViewUITests.m @@ -11,13 +11,12 @@ @interface PlatformViewUITests : GoldenPlatformViewTests @implementation PlatformViewUITests - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view"]; + GoldenTestManager* manager = [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -29,13 +28,13 @@ @interface MultiplePlatformViewsTest : GoldenPlatformViewTests @implementation MultiplePlatformViewsTest - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-multiple"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-multiple"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -47,7 +46,7 @@ @interface MultiplePlatformViewsBackgroundForegroundTest : GoldenPlatformViewTes @implementation MultiplePlatformViewsBackgroundForegroundTest - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = [[PlatformViewGoldenTestManager alloc] + GoldenTestManager* manager = [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-multiple-background-foreground"]; return [super initWithManager:manager invocation:invocation]; } @@ -55,7 +54,7 @@ - (instancetype)initWithInvocation:(NSInvocation*)invocation { - (void)testPlatformView { [[XCUIDevice sharedDevice] pressButton:XCUIDeviceButtonHome]; [self.application activate]; - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -68,13 +67,13 @@ @interface PlatformViewMutationClipRectTests : GoldenPlatformViewTests @implementation PlatformViewMutationClipRectTests - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-cliprect"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-cliprect"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -86,13 +85,13 @@ @interface PlatformViewMutationClipRRectTests : GoldenPlatformViewTests @implementation PlatformViewMutationClipRRectTests - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-cliprrect"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-cliprrect"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -104,13 +103,13 @@ @interface PlatformViewMutationClipPathTests : GoldenPlatformViewTests @implementation PlatformViewMutationClipPathTests - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-clippath"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-clippath"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -122,13 +121,13 @@ @interface PlatformViewMutationTransformTests : GoldenPlatformViewTests @implementation PlatformViewMutationTransformTests - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-transform"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-transform"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -140,13 +139,13 @@ @interface PlatformViewMutationOpacityTests : GoldenPlatformViewTests @implementation PlatformViewMutationOpacityTests - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-opacity"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-opacity"]; return [super initWithManager:manager invocation:invocation]; } - (void)testPlatformView { - [self checkGolden]; + [self checkPlatformViewGolden]; } @end @@ -156,8 +155,8 @@ @interface PlatformViewRotation : GoldenPlatformViewTests @implementation PlatformViewRotation - (instancetype)initWithInvocation:(NSInvocation*)invocation { - PlatformViewGoldenTestManager* manager = - [[PlatformViewGoldenTestManager alloc] initWithLaunchArg:@"--platform-view-rotate"]; + GoldenTestManager* manager = + [[GoldenTestManager alloc] initWithLaunchArg:@"--platform-view-rotate"]; return [super initWithManager:manager invocation:invocation]; } @@ -168,6 +167,6 @@ - (void)tearDown { - (void)testPlatformView { XCUIDevice.sharedDevice.orientation = UIDeviceOrientationLandscapeLeft; - [self checkGolden]; + [self checkPlatformViewGolden]; } @end diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/README.md b/testing/scenario_app/ios/Scenarios/ScenariosUITests/README.md index 70e34f3e3d600..652fbed14aa35 100644 --- a/testing/scenario_app/ios/Scenarios/ScenariosUITests/README.md +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/README.md @@ -1,16 +1,16 @@ -# PlatformView UI Tests +# Golden UI Tests -This folder contains a test for platform views. It renders a platform view -and does a screen shot comparison against a known good configuration. +This folder contains golden image tests. It renders UI (for instance, a platform +view) and does a screen shot comparison against a known good configuration. -The screen shots are named `golden_platform_view_MODEL`, with `_simulator` +The screen shots are named `golden_[scenario name]_[MODEL]`, with `_simulator` appended for simulators. The model numbers for physical devices correspond to the `hw.model` sys call, and will represent the model numbers. Simulator names are taken from the environment. New devices require running the test on the device, gathering the attachment -and verifying it manually, and then adding an appropriately named file to -this folder. +from the test result and verifying it manually. Then adding an appropriately +named file to this folder. If the test is attempted on a new device, the log will contain a message indicating the file name it expected to find. The test will continue and fail, diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_iPhone 8_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_iPhone 8_simulator.png new file mode 100644 index 0000000000000..6a27f5fcf50a7 Binary files /dev/null and b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_bogus_font_text_iPhone 8_simulator.png differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_iPhone SE_simulator.png deleted file mode 100644 index 8e776f220e849..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_clippath_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone SE_simulator.png deleted file mode 100644 index 9049412903215..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprect_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone SE_simulator.png deleted file mode 100644 index 94667b9a8254d..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_cliprrect_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone SE_simulator.png deleted file mode 100644 index 1f9ee8937d927..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone SE_simulator.png deleted file mode 100644 index f3176650205d4..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_multiple_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone SE_simulator.png deleted file mode 100644 index 32e0a179a5c6c..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_opacity_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone SE_simulator.png b/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone SE_simulator.png deleted file mode 100644 index 678c7fd6bc7bb..0000000000000 Binary files a/testing/scenario_app/ios/Scenarios/ScenariosUITests/golden_platform_view_transform_iPhone SE_simulator.png and /dev/null differ diff --git a/testing/scenario_app/lib/src/bogus_font_text.dart b/testing/scenario_app/lib/src/bogus_font_text.dart new file mode 100644 index 0000000000000..1d50988bb79ad --- /dev/null +++ b/testing/scenario_app/lib/src/bogus_font_text.dart @@ -0,0 +1,55 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// @dart = 2.6 +import 'dart:ui'; + +import 'scenario.dart'; + +/// Tries to draw some text in a bogus font. Should end up drawing in the +/// system default font. +class BogusFontText extends Scenario { + /// Creates the BogusFontText scenario. + /// + /// The [window] parameter must not be null. + BogusFontText(Window window) + : assert(window != null), + super(window); + + // Semi-arbitrary. + double _screenWidth = 700; + + @override + void onBeginFrame(Duration duration) { + final SceneBuilder builder = SceneBuilder(); + final PictureRecorder recorder = PictureRecorder(); + final Canvas canvas = Canvas(recorder); + + final ParagraphBuilder paragraphBuilder = + ParagraphBuilder(ParagraphStyle(fontFamily: "some font that doesn't exist")) + ..pushStyle(TextStyle(fontSize: 80)) + ..addText('One more thing...') + ..pop(); + final Paragraph paragraph = paragraphBuilder.build(); + + paragraph.layout(ParagraphConstraints(width: _screenWidth)); + + canvas.drawParagraph(paragraph, const Offset(50, 80)); + final Picture picture = recorder.endRecording(); + + builder.addPicture( + Offset.zero, + picture, + willChangeHint: true, + ); + final Scene scene = builder.build(); + window.render(scene); + scene.dispose(); + } + + @override + void onDrawFrame() { + // Just draw once since the content never changes. + } +} diff --git a/testing/scenario_app/lib/src/scenarios.dart b/testing/scenario_app/lib/src/scenarios.dart index 6aa553380d34c..2dcd842aafc07 100644 --- a/testing/scenario_app/lib/src/scenarios.dart +++ b/testing/scenario_app/lib/src/scenarios.dart @@ -6,6 +6,7 @@ import 'dart:ui'; import 'animated_color_square.dart'; +import 'bogus_font_text.dart'; import 'initial_route_reply.dart'; import 'locale_initialization.dart'; import 'platform_view.dart'; @@ -43,6 +44,7 @@ Map _scenarios = { 'tap_status_bar': () => TouchesScenario(window), 'text_semantics_focus': () => SendTextFocusScemantics(window), 'initial_route_reply': () => InitialRouteReply(window), + 'bogus_font_text': () => BogusFontText(window), }; Map _currentScenarioParams = {};