[webview_flutter] Add iOS integration tests (#3995)
diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md
index 30f34ac..9167f92 100644
--- a/packages/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Add iOS UI integration test target.
+
## 2.0.8
* Migrate maven repository from jcenter to mavenCentral.
diff --git a/packages/webview_flutter/example/ios/Podfile b/packages/webview_flutter/example/ios/Podfile
index ce7f8a5..66509fc 100644
--- a/packages/webview_flutter/example/ios/Podfile
+++ b/packages/webview_flutter/example/ios/Podfile
@@ -30,7 +30,7 @@
target 'Runner' do
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
- target 'RunnerUITests' do
+ target 'RunnerTests' do
inherit! :search_paths
# Matches test_spec dependency.
diff --git a/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj
index 30ce866..e65843b 100644
--- a/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/packages/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj
@@ -17,7 +17,8 @@
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
9D26F6F82D91F92CC095EBA9 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B845D8FBDE0AAD6BE1A0386 /* libPods-Runner.a */; };
- EE189BB43C38EE5DE05135A7 /* libPods-RunnerUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EBE6A98F0F7B17A8E813670 /* libPods-RunnerUITests.a */; };
+ D9A9D48F1A75E5C682944DDD /* libPods-RunnerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27CC950C9005575711528C12 /* libPods-RunnerTests.a */; };
+ F7151F77266057800028CB91 /* FLTWebViewUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = F7151F76266057800028CB91 /* FLTWebViewUITests.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -28,6 +29,13 @@
remoteGlobalIDString = 97C146ED1CF9000F007C117D;
remoteInfo = Runner;
};
+ F7151F79266057800028CB91 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+ remoteInfo = Runner;
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -44,14 +52,13 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 06E410020C7D35382771541C /* Pods-RunnerUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.release.xcconfig"; sourceTree = "<group>"; };
- 0EBE6A98F0F7B17A8E813670 /* libPods-RunnerUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RunnerUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
127772EEA7782174BE0D74B5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
+ 27CC950C9005575711528C12 /* libPods-RunnerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RunnerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
686B4BF82548DBC7000AEA36 /* FLTWKNavigationDelegateTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLTWKNavigationDelegateTests.m; path = ../../../ios/Tests/FLTWKNavigationDelegateTests.m; sourceTree = "<group>"; };
- 68BDCAE923C3F7CB00D9C032 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 68BDCAE923C3F7CB00D9C032 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
68BDCAED23C3F7CB00D9C032 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
68BDCAF523C3F97800D9C032 /* FLTWebViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLTWebViewTests.m; path = ../../../ios/Tests/FLTWebViewTests.m; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@@ -67,7 +74,11 @@
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C475C484BD510DD9CB2E403C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
- DA434001E038D9F8CFB0EDEC /* Pods-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.debug.xcconfig"; sourceTree = "<group>"; };
+ E14113434CCE6D3186B5CBC3 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
+ F674B2A05DAC369B4FF27850 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
+ F7151F74266057800028CB91 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ F7151F76266057800028CB91 /* FLTWebViewUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLTWebViewUITests.m; sourceTree = "<group>"; };
+ F7151F78266057800028CB91 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -75,7 +86,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- EE189BB43C38EE5DE05135A7 /* libPods-RunnerUITests.a in Frameworks */,
+ D9A9D48F1A75E5C682944DDD /* libPods-RunnerTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -87,17 +98,24 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ F7151F71266057800028CB91 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 68BDCAEA23C3F7CB00D9C032 /* RunnerUITests */ = {
+ 68BDCAEA23C3F7CB00D9C032 /* RunnerTests */ = {
isa = PBXGroup;
children = (
686B4BF82548DBC7000AEA36 /* FLTWKNavigationDelegateTests.m */,
68BDCAF523C3F97800D9C032 /* FLTWebViewTests.m */,
68BDCAED23C3F7CB00D9C032 /* Info.plist */,
);
- path = RunnerUITests;
+ path = RunnerTests;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
@@ -116,7 +134,8 @@
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
- 68BDCAEA23C3F7CB00D9C032 /* RunnerUITests */,
+ 68BDCAEA23C3F7CB00D9C032 /* RunnerTests */,
+ F7151F75266057800028CB91 /* RunnerUITests */,
97C146EF1CF9000F007C117D /* Products */,
C6FFB52F5C2B8A41A7E39DE2 /* Pods */,
B6736FC417BDCCDA377E779D /* Frameworks */,
@@ -127,7 +146,8 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
- 68BDCAE923C3F7CB00D9C032 /* RunnerUITests.xctest */,
+ 68BDCAE923C3F7CB00D9C032 /* RunnerTests.xctest */,
+ F7151F74266057800028CB91 /* RunnerUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
@@ -160,7 +180,7 @@
isa = PBXGroup;
children = (
8B845D8FBDE0AAD6BE1A0386 /* libPods-Runner.a */,
- 0EBE6A98F0F7B17A8E813670 /* libPods-RunnerUITests.a */,
+ 27CC950C9005575711528C12 /* libPods-RunnerTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -170,18 +190,27 @@
children = (
127772EEA7782174BE0D74B5 /* Pods-Runner.debug.xcconfig */,
C475C484BD510DD9CB2E403C /* Pods-Runner.release.xcconfig */,
- DA434001E038D9F8CFB0EDEC /* Pods-RunnerUITests.debug.xcconfig */,
- 06E410020C7D35382771541C /* Pods-RunnerUITests.release.xcconfig */,
+ F674B2A05DAC369B4FF27850 /* Pods-RunnerTests.debug.xcconfig */,
+ E14113434CCE6D3186B5CBC3 /* Pods-RunnerTests.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
+ F7151F75266057800028CB91 /* RunnerUITests */ = {
+ isa = PBXGroup;
+ children = (
+ F7151F76266057800028CB91 /* FLTWebViewUITests.m */,
+ F7151F78266057800028CB91 /* Info.plist */,
+ );
+ path = RunnerUITests;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 68BDCAE823C3F7CB00D9C032 /* RunnerUITests */ = {
+ 68BDCAE823C3F7CB00D9C032 /* RunnerTests */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 68BDCAF223C3F7CB00D9C032 /* Build configuration list for PBXNativeTarget "RunnerUITests" */;
+ buildConfigurationList = 68BDCAF223C3F7CB00D9C032 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
53FD4CBDD9756D74B5A3B4C1 /* [CP] Check Pods Manifest.lock */,
68BDCAE523C3F7CB00D9C032 /* Sources */,
@@ -193,9 +222,9 @@
dependencies = (
68BDCAEF23C3F7CB00D9C032 /* PBXTargetDependency */,
);
- name = RunnerUITests;
+ name = RunnerTests;
productName = webview_flutter_exampleTests;
- productReference = 68BDCAE923C3F7CB00D9C032 /* RunnerUITests.xctest */;
+ productReference = 68BDCAE923C3F7CB00D9C032 /* RunnerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
97C146ED1CF9000F007C117D /* Runner */ = {
@@ -219,6 +248,24 @@
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
+ F7151F73266057800028CB91 /* RunnerUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = F7151F7B266057800028CB91 /* Build configuration list for PBXNativeTarget "RunnerUITests" */;
+ buildPhases = (
+ F7151F70266057800028CB91 /* Sources */,
+ F7151F71266057800028CB91 /* Frameworks */,
+ F7151F72266057800028CB91 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ F7151F7A266057800028CB91 /* PBXTargetDependency */,
+ );
+ name = RunnerUITests;
+ productName = RunnerUITests;
+ productReference = F7151F74266057800028CB91 /* RunnerUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -235,6 +282,11 @@
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
};
+ F7151F73266057800028CB91 = {
+ CreatedOnToolsVersion = 12.5;
+ ProvisioningStyle = Automatic;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
@@ -251,7 +303,8 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
- 68BDCAE823C3F7CB00D9C032 /* RunnerUITests */,
+ 68BDCAE823C3F7CB00D9C032 /* RunnerTests */,
+ F7151F73266057800028CB91 /* RunnerUITests */,
);
};
/* End PBXProject section */
@@ -275,6 +328,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ F7151F72266057800028CB91 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -307,7 +367,7 @@
outputFileListPaths = (
);
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-RunnerUITests-checkManifestLockResult.txt",
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -326,7 +386,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
B71376B4FB8384EF9D5F3F84 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
@@ -368,6 +428,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ F7151F70266057800028CB91 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ F7151F77266057800028CB91 /* FLTWebViewUITests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -376,6 +444,11 @@
target = 97C146ED1CF9000F007C117D /* Runner */;
targetProxy = 68BDCAEE23C3F7CB00D9C032 /* PBXContainerItemProxy */;
};
+ F7151F7A266057800028CB91 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = F7151F79266057800028CB91 /* PBXContainerItemProxy */;
+ };
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -400,47 +473,30 @@
/* Begin XCBuildConfiguration section */
68BDCAF023C3F7CB00D9C032 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = DA434001E038D9F8CFB0EDEC /* Pods-RunnerUITests.debug.xcconfig */;
+ baseConfigurationReference = F674B2A05DAC369B4FF27850 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = RunnerUITests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.2;
+ INFOPLIST_FILE = RunnerTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.google.webview-flutter-exampleTests";
PRODUCT_NAME = "$(TARGET_NAME)";
- TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/Runner";
};
name = Debug;
};
68BDCAF123C3F7CB00D9C032 /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 06E410020C7D35382771541C /* Pods-RunnerUITests.release.xcconfig */;
+ baseConfigurationReference = E14113434CCE6D3186B5CBC3 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = RunnerUITests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.2;
+ INFOPLIST_FILE = RunnerTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.google.webview-flutter-exampleTests";
PRODUCT_NAME = "$(TARGET_NAME)";
- TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/Runner";
};
name = Release;
@@ -557,7 +613,6 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -581,7 +636,6 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -599,10 +653,36 @@
};
name = Release;
};
+ F7151F7C266057800028CB91 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = RunnerUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.RunnerUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_TARGET_NAME = Runner;
+ };
+ name = Debug;
+ };
+ F7151F7D266057800028CB91 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = RunnerUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.RunnerUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_TARGET_NAME = Runner;
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 68BDCAF223C3F7CB00D9C032 /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = {
+ 68BDCAF223C3F7CB00D9C032 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
68BDCAF023C3F7CB00D9C032 /* Debug */,
@@ -629,6 +709,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ F7151F7B266057800028CB91 /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ F7151F7C266057800028CB91 /* Debug */,
+ F7151F7D266057800028CB91 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
diff --git a/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index bcb1de6..d7453a8 100644
--- a/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -42,6 +42,16 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "68BDCAE823C3F7CB00D9C032"
+ BuildableName = "RunnerTests.xctest"
+ BlueprintName = "RunnerTests"
+ ReferencedContainer = "container:Runner.xcodeproj">
+ </BuildableReference>
+ </TestableReference>
+ <TestableReference
+ skipped = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "F7151F73266057800028CB91"
BuildableName = "RunnerUITests.xctest"
BlueprintName = "RunnerUITests"
ReferencedContainer = "container:Runner.xcodeproj">
diff --git a/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/RunnerUITests.xcscheme b/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/RunnerUITests.xcscheme
deleted file mode 100644
index 917be4f..0000000
--- a/packages/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/RunnerUITests.xcscheme
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "1240"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES">
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "68BDCAE823C3F7CB00D9C032"
- BuildableName = "RunnerUITests.xctest"
- BlueprintName = "RunnerUITests"
- ReferencedContainer = "container:Runner.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/packages/webview_flutter/example/ios/RunnerTests/Info.plist b/packages/webview_flutter/example/ios/RunnerTests/Info.plist
new file mode 100644
index 0000000..64d65ca
--- /dev/null
+++ b/packages/webview_flutter/example/ios/RunnerTests/Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+</dict>
+</plist>
diff --git a/packages/webview_flutter/example/ios/RunnerUITests/FLTWebViewUITests.m b/packages/webview_flutter/example/ios/RunnerUITests/FLTWebViewUITests.m
new file mode 100644
index 0000000..d193be7
--- /dev/null
+++ b/packages/webview_flutter/example/ios/RunnerUITests/FLTWebViewUITests.m
@@ -0,0 +1,101 @@
+// 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 XCTest;
+@import os.log;
+
+@interface FLTWebViewUITests : XCTestCase
+@property(nonatomic, strong) XCUIApplication* app;
+@end
+
+@implementation FLTWebViewUITests
+
+- (void)setUp {
+ self.continueAfterFailure = NO;
+
+ self.app = [[XCUIApplication alloc] init];
+ [self.app launch];
+}
+
+- (void)testUserAgent {
+ XCUIApplication* app = self.app;
+ XCUIElement* menu = app.buttons[@"Show menu"];
+ if (![menu waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find menu");
+ }
+ [menu tap];
+
+ XCUIElement* userAgent = app.buttons[@"Show user agent"];
+ if (![userAgent waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find Show user agent");
+ }
+ NSPredicate* userAgentPredicate =
+ [NSPredicate predicateWithFormat:@"label BEGINSWITH 'User Agent: Mozilla/5.0 (iPhone; '"];
+ XCUIElement* userAgentPopUp = [app.otherElements elementMatchingPredicate:userAgentPredicate];
+ XCTAssertFalse(userAgentPopUp.exists);
+ [userAgent tap];
+ if (![userAgentPopUp waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find user agent pop up");
+ }
+}
+
+- (void)testCache {
+ XCUIApplication* app = self.app;
+ XCUIElement* menu = app.buttons[@"Show menu"];
+ if (![menu waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find menu");
+ }
+ [menu tap];
+
+ XCUIElement* clearCache = app.buttons[@"Clear cache"];
+ if (![clearCache waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find Clear cache");
+ }
+ [clearCache tap];
+
+ [menu tap];
+
+ XCUIElement* listCache = app.buttons[@"List cache"];
+ if (![listCache waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find List cache");
+ }
+ [listCache tap];
+
+ XCUIElement* emptyCachePopup = app.otherElements[@"{\"cacheKeys\":[],\"localStorage\":{}}"];
+ if (![emptyCachePopup waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find empty cache pop up");
+ }
+
+ [menu tap];
+ XCUIElement* addCache = app.buttons[@"Add to cache"];
+ if (![addCache waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find Add to cache");
+ }
+ [addCache tap];
+ [menu tap];
+
+ if (![listCache waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find List cache");
+ }
+ [listCache tap];
+
+ XCUIElement* cachePopup =
+ app.otherElements[@"{\"cacheKeys\":[\"test_caches_entry\"],\"localStorage\":{\"test_"
+ @"localStorage\":\"dummy_entry\"}}"];
+ if (![cachePopup waitForExistenceWithTimeout:30.0]) {
+ os_log_error(OS_LOG_DEFAULT, "%@", app.debugDescription);
+ XCTFail(@"Failed due to not able to find cache pop up");
+ }
+}
+
+@end