Best Swift-snapshot-testing code snippet using CancellingWKWebViewNavigationDelegate.testWebView
SnapshotTestingTests.swift
Source:SnapshotTestingTests.swift
...904 }905 }906 """)907 }908 func testWebView() throws {909 #if os(iOS) || os(macOS)910 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)911 .deletingLastPathComponent()912 .appendingPathComponent("__Fixtures__/pointfree.html")913 let html = try String(contentsOf: fixtureUrl)914 let webView = WKWebView()915 webView.loadHTMLString(html, baseURL: nil)916 if !ProcessInfo.processInfo.environment.keys.contains("GITHUB_WORKFLOW") {917 assertSnapshot(918 matching: webView,919 as: .image(size: .init(width: 800, height: 600)),920 named: platform921 )922 }923 #endif924 }925 func testViewWithZeroHeightOrWidth() {926 #if os(iOS) || os(tvOS)927 var rect = CGRect(x: 0, y: 0, width: 350, height: 0)928 var view = UIView(frame: rect)929 view.backgroundColor = .red930 assertSnapshot(matching: view, as: .image, named: "noHeight")931 932 rect = CGRect(x: 0, y: 0, width: 0, height: 350)933 view = UIView(frame: rect)934 view.backgroundColor = .green935 assertSnapshot(matching: view, as: .image, named: "noWidth")936 rect = CGRect(x: 0, y: 0, width: 0, height: 0)937 view = UIView(frame: rect)938 view.backgroundColor = .blue939 assertSnapshot(matching: view, as: .image, named: "noWidth.noHeight")940 #endif941 }942 func testEmbeddedWebView() throws {943 #if os(iOS)944 let label = UILabel()945 label.text = "Hello, Blob!"946 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)947 .deletingLastPathComponent()948 .appendingPathComponent("__Fixtures__/pointfree.html")949 let html = try String(contentsOf: fixtureUrl)950 let webView = WKWebView()951 webView.loadHTMLString(html, baseURL: nil)952 webView.isHidden = true953 let stackView = UIStackView(arrangedSubviews: [label, webView])954 stackView.axis = .vertical955 if !ProcessInfo.processInfo.environment.keys.contains("GITHUB_WORKFLOW") {956 assertSnapshot(957 matching: stackView,958 as: .image(size: .init(width: 800, height: 600)),959 named: platform960 )961 }962 #endif963 }964 #if os(iOS) || os(macOS)965 final class ManipulatingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {966 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {967 webView.evaluateJavaScript("document.body.children[0].classList.remove(\"hero\")") // Change layout968 }969 }970 func testWebViewWithManipulatingNavigationDelegate() throws {971 let manipulatingWKWebViewNavigationDelegate = ManipulatingWKWebViewNavigationDelegate()972 let webView = WKWebView()973 webView.navigationDelegate = manipulatingWKWebViewNavigationDelegate974 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)975 .deletingLastPathComponent()976 .appendingPathComponent("__Fixtures__/pointfree.html")977 let html = try String(contentsOf: fixtureUrl)978 webView.loadHTMLString(html, baseURL: nil)979 if !ProcessInfo.processInfo.environment.keys.contains("GITHUB_WORKFLOW") {980 assertSnapshot(981 matching: webView,982 as: .image(size: .init(width: 800, height: 600)),983 named: platform984 )985 }986 _ = manipulatingWKWebViewNavigationDelegate987 }988 #if os(iOS) || os(macOS)989 func testWebViewWithRealUrl() throws {990 let manipulatingWKWebViewNavigationDelegate = ManipulatingWKWebViewNavigationDelegate()991 let webView = WKWebView()992 webView.navigationDelegate = manipulatingWKWebViewNavigationDelegate993 webView.load(URLRequest(url: URL(string: "https://www.pointfree.co")!))994 if !ProcessInfo.processInfo.environment.keys.contains("GITHUB_WORKFLOW") {995 assertSnapshot(996 matching: webView,997 as: .image(size: .init(width: 800, height: 600)),998 named: platform999 )1000 }1001 _ = manipulatingWKWebViewNavigationDelegate1002 }1003 #endif1004 final class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {1005 func webView(1006 _ webView: WKWebView,1007 decidePolicyFor navigationAction: WKNavigationAction,1008 decisionHandler: @escaping (WKNavigationActionPolicy) -> Void1009 ) {1010 decisionHandler(.cancel)1011 }1012 }1013 func testWebViewWithCancellingNavigationDelegate() throws {1014 let cancellingWKWebViewNavigationDelegate = CancellingWKWebViewNavigationDelegate()1015 let webView = WKWebView()1016 webView.navigationDelegate = cancellingWKWebViewNavigationDelegate1017 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)1018 .deletingLastPathComponent()1019 .appendingPathComponent("__Fixtures__/pointfree.html")1020 let html = try String(contentsOf: fixtureUrl)1021 webView.loadHTMLString(html, baseURL: nil)1022 if !ProcessInfo.processInfo.environment.keys.contains("GITHUB_WORKFLOW") {1023 assertSnapshot(1024 matching: webView,1025 as: .image(size: .init(width: 800, height: 600)),1026 named: platform1027 )1028 }1029 _ = cancellingWKWebViewNavigationDelegate1030 }1031 #endif1032 @available(iOS 13.0, *)1033 func testSwiftUIView_iOS() {1034 #if os(iOS)1035 struct MyView: SwiftUI.View {1036 var body: some SwiftUI.View {1037 HStack {1038 Image(systemName: "checkmark.circle.fill")1039 Text("Checked").fixedSize()1040 }1041 .padding(5)1042 .background(RoundedRectangle(cornerRadius: 5.0).fill(Color.blue))1043 .padding(10)1044 }1045 }1046 let view = MyView().background(Color.yellow)1047 assertSnapshot(matching: view, as: .image(traits: .init(userInterfaceStyle: .light)))1048 assertSnapshot(matching: view, as: .image(layout: .sizeThatFits, traits: .init(userInterfaceStyle: .light)), named: "size-that-fits")1049 assertSnapshot(matching: view, as: .image(layout: .fixed(width: 200.0, height: 100.0), traits: .init(userInterfaceStyle: .light)), named: "fixed")1050 assertSnapshot(matching: view, as: .image(layout: .device(config: .iPhoneSe), traits: .init(userInterfaceStyle: .light)), named: "device")1051 #endif1052 }1053 @available(tvOS 13.0, *)1054 func testSwiftUIView_tvOS() {1055 #if os(tvOS)1056 struct MyView: SwiftUI.View {1057 var body: some SwiftUI.View {1058 HStack {1059 Image(systemName: "checkmark.circle.fill")1060 Text("Checked").fixedSize()1061 }1062 .padding(5)1063 .background(RoundedRectangle(cornerRadius: 5.0).fill(Color.blue))1064 .padding(10)1065 }1066 }1067 let view = MyView().background(Color.yellow)1068 assertSnapshot(matching: view, as: .image())1069 assertSnapshot(matching: view, as: .image(layout: .sizeThatFits), named: "size-that-fits")1070 assertSnapshot(matching: view, as: .image(layout: .fixed(width: 300.0, height: 100.0)), named: "fixed")1071 assertSnapshot(matching: view, as: .image(layout: .device(config: .tv)), named: "device")1072 #endif1073 }1074 @available(*, deprecated)1075 func testIsRecordingProxy() {1076 SnapshotTesting.record = true1077 XCTAssertEqual(isRecording, true)1078 SnapshotTesting.record = false1079 XCTAssertEqual(isRecording, false)1080 }1081}1082#if os(iOS)1083private let allContentSizes =1084 [1085 "extra-small": UIContentSizeCategory.extraSmall,1086 "small": .small,1087 "medium": .medium,1088 "large": .large,1089 "extra-large": .extraLarge,1090 "extra-extra-large": .extraExtraLarge,1091 "extra-extra-extra-large": .extraExtraExtraLarge,1092 "accessibility-medium": .accessibilityMedium,1093 "accessibility-large": .accessibilityLarge,1094 "accessibility-extra-large": .accessibilityExtraLarge,1095 "accessibility-extra-extra-large": .accessibilityExtraExtraLarge,1096 "accessibility-extra-extra-extra-large": .accessibilityExtraExtraExtraLarge,1097 ]1098#endif1099#if os(Linux) || os(Windows)1100extension SnapshotTestingTests {1101 static var allTests : [(String, (SnapshotTestingTests) -> () throws -> Void)] {1102 return [1103 ("testAny", testAny),1104 ("testAnySnapshotStringConvertible", testAnySnapshotStringConvertible),1105 ("testAutolayout", testAutolayout),1106 ("testDeterministicDictionaryAndSetSnapshots", testDeterministicDictionaryAndSetSnapshots),1107 ("testEncodable", testEncodable),1108 ("testMixedViews", testMixedViews),1109 ("testMultipleSnapshots", testMultipleSnapshots),1110 ("testNamedAssertion", testNamedAssertion),1111 ("testPrecision", testPrecision),1112 ("testSCNView", testSCNView),1113 ("testSKView", testSKView),1114 ("testTableViewController", testTableViewController),1115 ("testTraits", testTraits),1116 ("testTraitsEmbeddedInTabNavigation", testTraitsEmbeddedInTabNavigation),1117 ("testTraitsWithView", testTraitsWithView),1118 ("testUIView", testUIView),1119 ("testURLRequest", testURLRequest),1120 ("testWebView", testWebView),1121 ]1122 }1123}1124#endif...
SnapshotKitTests.swift
Source:SnapshotKitTests.swift
...595 }596 """)597 }598 #if os(iOS) || os(macOS)599 func testWebView() throws {600 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)601 .deletingLastPathComponent()602 .appendingPathComponent("__Fixtures__/pointfree.html")603 let html = try String(contentsOf: fixtureUrl)604 let webView = WKWebView()605 webView.loadHTMLString(html, baseURL: nil)606 assertSnapshot(607 matching: webView,608 as: .image(precision: 0.9, size: .init(width: 800, height: 600)),609 named: platform610 )611 }612 #endif613 #if os(iOS) || os(tvOS)614 func testViewWithZeroHeightOrWidth() {615 var rect = CGRect(x: 0, y: 0, width: 350, height: 0)616 var view = UIView(frame: rect)617 view.backgroundColor = .red618 assertSnapshot(matching: view, as: .image, named: "noHeight")619 rect = CGRect(x: 0, y: 0, width: 0, height: 350)620 view = UIView(frame: rect)621 view.backgroundColor = .green622 assertSnapshot(matching: view, as: .image, named: "noWidth")623 rect = CGRect(x: 0, y: 0, width: 0, height: 0)624 view = UIView(frame: rect)625 view.backgroundColor = .blue626 assertSnapshot(matching: view, as: .image, named: "noWidth.noHeight")627 }628 #endif629 #if os(iOS)630 func testEmbeddedWebView() throws {631 let label = UILabel()632 label.text = "Hello, Blob!"633 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)634 .deletingLastPathComponent()635 .appendingPathComponent("__Fixtures__/pointfree.html")636 let html = try String(contentsOf: fixtureUrl)637 let webView = WKWebView()638 webView.loadHTMLString(html, baseURL: nil)639 webView.isHidden = true640 let stackView = UIStackView(arrangedSubviews: [label, webView])641 stackView.axis = .vertical642 assertSnapshot(643 matching: stackView,644 as: .image(size: .init(width: 800, height: 600)),645 named: platform646 )647 }648 #endif649 #if os(iOS) || os(macOS)650 final class ManipulatingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {651 func webView(_ webView: WKWebView, didFinish _: WKNavigation!) {652 webView.evaluateJavaScript("document.body.children[0].classList.remove(\"hero\")") // Change layout653 }654 }655 func testWebViewWithManipulatingNavigationDelegate() throws {656 let manipulatingWKWebViewNavigationDelegate = ManipulatingWKWebViewNavigationDelegate()657 let webView = WKWebView()658 webView.navigationDelegate = manipulatingWKWebViewNavigationDelegate659 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)660 .deletingLastPathComponent()661 .appendingPathComponent("__Fixtures__/pointfree.html")662 let html = try String(contentsOf: fixtureUrl)663 webView.loadHTMLString(html, baseURL: nil)664 assertSnapshot(665 matching: webView,666 as: .image(precision: 0.9, size: .init(width: 800, height: 600)),667 named: platform668 )669 _ = manipulatingWKWebViewNavigationDelegate670 }671 final class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {672 func webView(673 _: WKWebView,674 decidePolicyFor _: WKNavigationAction,675 decisionHandler: @escaping (WKNavigationActionPolicy) -> Void676 ) {677 decisionHandler(.cancel)678 }679 }680 func testWebViewWithCancellingNavigationDelegate() throws {681 let cancellingWKWebViewNavigationDelegate = CancellingWKWebViewNavigationDelegate()682 let webView = WKWebView()683 webView.navigationDelegate = cancellingWKWebViewNavigationDelegate684 let fixtureUrl = URL(fileURLWithPath: String(#file), isDirectory: false)685 .deletingLastPathComponent()686 .appendingPathComponent("__Fixtures__/pointfree.html")687 let html = try String(contentsOf: fixtureUrl)688 webView.loadHTMLString(html, baseURL: nil)689 assertSnapshot(690 matching: webView,691 as: .image(size: .init(width: 800, height: 600)),692 named: platform693 )694 _ = cancellingWKWebViewNavigationDelegate...
testWebView
Using AI Code Generation
1import UIKit2import WebKit3class ViewController: UIViewController {4 override func viewDidLoad() {5 super.viewDidLoad()6 let delegate = CancellingWKWebViewNavigationDelegate()7 webView.load(URLRequest(url: url))8 DispatchQueue.main.asyncAfter(deadline: .now() + 3) {9 delegate.testWebView(webView: self.webView)10 }11 }12}13import Foundation14import WebKit15class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {16 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {17 print("didStartProvisionalNavigation")18 }19 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {20 print("didFinish")21 }22 func testWebView(webView: WKWebView) {23 webView.stopLoading()24 }25}
testWebView
Using AI Code Generation
1let delegate = CancellingWKWebViewNavigationDelegate()2let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())3delegate.testWebView(webView)4let delegate = CancellingWKWebViewNavigationDelegate()5let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())6delegate.testWebView(webView)7let delegate = CancellingWKWebViewNavigationDelegate()8let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())9delegate.testWebView(webView)10let delegate = CancellingWKWebViewNavigationDelegate()11let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())12delegate.testWebView(webView)13let delegate = CancellingWKWebViewNavigationDelegate()14let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())15delegate.testWebView(webView)16let delegate = CancellingWKWebViewNavigationDelegate()17let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())18delegate.testWebView(webView)19let delegate = CancellingWKWebViewNavigationDelegate()20let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())21delegate.testWebView(webView)22let delegate = CancellingWKWebViewNavigationDelegate()23let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())24delegate.testWebView(webView)25let delegate = CancellingWKWebViewNavigationDelegate()
testWebView
Using AI Code Generation
1import UIKit2import WebKit3class ViewController: UIViewController {4 override func viewDidLoad() {5 super.viewDidLoad()6 let request = URLRequest(url: url!)7 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()8 webView.load(request)9 }10}11import Foundation12import WebKit13class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {14 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {15 decisionHandler(.cancel)16 }17}18import Foundation19import WebKit20class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {21 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {22 decisionHandler(.cancel)23 }24}25import Foundation26import WebKit27class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {28 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {29 decisionHandler(.cancel)30 }31}32import Foundation33import WebKit34class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {35 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {36 decisionHandler(.cancel)37 }38}39import Foundation40import WebKit41class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {42 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {43 decisionHandler(.cancel)44 }45}
testWebView
Using AI Code Generation
1self.webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()2 print("policy: \(policy)")3})4self.webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()5 print("policy: \(policy)")6})7self.webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()8 print("policy: \(policy)")9})10self.webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()11 print("policy: \(policy)")12})13self.webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()14 print("policy:
testWebView
Using AI Code Generation
1let testWebView = CancellingWKWebViewNavigationDelegate()2testWebView.testWebView()3let testWebView = CancellingWKWebViewNavigationDelegate()4testWebView.testWebView()5let testWebView = CancellingWKWebViewNavigationDelegate()6testWebView.testWebView()7let testWebView = CancellingWKWebViewNavigationDelegate()8testWebView.testWebView()9let testWebView = CancellingWKWebViewNavigationDelegate()10testWebView.testWebView()11let testWebView = CancellingWKWebViewNavigationDelegate()12testWebView.testWebView()13let testWebView = CancellingWKWebViewNavigationDelegate()14testWebView.testWebView()15let testWebView = CancellingWKWebViewNavigationDelegate()16testWebView.testWebView()17let testWebView = CancellingWKWebViewNavigationDelegate()18testWebView.testWebView()19let testWebView = CancellingWKWebViewNavigationDelegate()20testWebView.testWebView()21let testWebView = CancellingWKWebViewNavigationDelegate()22testWebView.testWebView()23let testWebView = CancellingWKWebViewNavigationDelegate()24testWebView.testWebView()25let testWebView = CancellingWKWebViewNavigationDelegate()26testWebView.testWebView()
testWebView
Using AI Code Generation
1import UIKit2import WebKit3class ViewController: UIViewController, WKNavigationDelegate {4 override func loadView() {5 webView = WKWebView()6 webViewNavigationDelegate = CancellingWKWebViewNavigationDelegate(webView: webView)7 }8 override func viewDidLoad() {9 super.viewDidLoad()10 webView.load(URLRequest(url: url))11 }12 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {13 if navigationAction.request.url?.host == "www.hackingwithswift.com" {14 decisionHandler(.allow)15 } else {16 decisionHandler(.cancel)17 }18 }19 func testWebView() {20 webViewNavigationDelegate.testWebView()21 }22}23import Foundation24import WebKit25class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {26 init(webView: WKWebView) {27 super.init()28 }29 func testWebView() {30 webView.load(URLRequest(url: url))31 }32 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {33 navigationDelegate?.webView?(webView, didStartProvisionalNavigation: navigation)34 }35 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {36 navigationDelegate?.webView?(webView, didReceiveServerRedirectForProvisionalNavigation: navigation)37 }38 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {39 navigationDelegate?.webView?(webView, didFailProvisionalNavigation: navigation, withError: error)40 }41 func webView(_ webView: WKWebView, didCommit
testWebView
Using AI Code Generation
1import UIKit2import WebKit3class ViewController: UIViewController {4 override func viewDidLoad() {5 super.viewDidLoad()6 webView = WKWebView()7 delegate = CancellingWKWebViewNavigationDelegate()8 }9 override func viewDidAppear(_ animated: Bool) {10 super.viewDidAppear(animated)11 delegate?.testWebView(webView: webView)12 }13}14import UIKit15import WebKit16class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {17 func testWebView(webView: WKWebView) {18 webView.stopLoading()19 }20}
testWebView
Using AI Code Generation
1 let webView = WKWebView()2 let delegate = CancellingWKWebViewNavigationDelegate()3 delegate.testWebView(webView)4 let webView = WKWebView()5 let delegate = CancellingWKWebViewNavigationDelegate()6 delegate.testWebView(webView)7 let webView = WKWebView()8 let delegate = CancellingWKWebViewNavigationDelegate()9 delegate.testWebView(webView)10 let webView = WKWebView()11 let delegate = CancellingWKWebViewNavigationDelegate()12 delegate.testWebView(webView)13 let webView = WKWebView()14 let delegate = CancellingWKWebViewNavigationDelegate()15 delegate.testWebView(webView)16 let webView = WKWebView()17 let delegate = CancellingWKWebViewNavigationDelegate()18 delegate.testWebView(webView)19 let webView = WKWebView()
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!