How to use viewDidLoad method of CancellingWKWebViewNavigationDelegate class

Best Swift-snapshot-testing code snippet using CancellingWKWebViewNavigationDelegate.viewDidLoad

SnapshotTestingTests.swift

Source:SnapshotTestingTests.swift Github

copy

Full Screen

...316 }317 func testTableViewController() {318 #if os(iOS)319 class TableViewController: UITableViewController {320 override func viewDidLoad() {321 super.viewDidLoad()322 self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")323 }324 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {325 return 10326 }327 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {328 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)329 cell.textLabel?.text = "\(indexPath.row)"330 return cell331 }332 }333 let tableViewController = TableViewController()334 assertSnapshot(matching: tableViewController, as: .image(on: .iPhoneSe))335 #endif336 }337 func testAssertMultipleSnapshot() {338 #if os(iOS)339 class TableViewController: UITableViewController {340 override func viewDidLoad() {341 super.viewDidLoad()342 self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")343 }344 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {345 return 10346 }347 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {348 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)349 cell.textLabel?.text = "\(indexPath.row)"350 return cell351 }352 }353 let tableViewController = TableViewController()354 assertSnapshots(matching: tableViewController, as: ["iPhoneSE-image" : .image(on: .iPhoneSe), "iPad-image" : .image(on: .iPadMini)])355 assertSnapshots(matching: tableViewController, as: [.image(on: .iPhoneX), .image(on: .iPhoneXsMax)])356 #endif357 }358 func testTraits() {359 #if os(iOS) || os(tvOS)360 if #available(iOS 11.0, tvOS 11.0, *) {361 class MyViewController: UIViewController {362 let topLabel = UILabel()363 let leadingLabel = UILabel()364 let trailingLabel = UILabel()365 let bottomLabel = UILabel()366 override func viewDidLoad() {367 super.viewDidLoad()368 self.navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .add, target: nil, action: nil)369 self.view.backgroundColor = .white370 self.topLabel.text = "What's"371 self.leadingLabel.text = "the"372 self.trailingLabel.text = "point"373 self.bottomLabel.text = "?"374 self.topLabel.translatesAutoresizingMaskIntoConstraints = false375 self.leadingLabel.translatesAutoresizingMaskIntoConstraints = false376 self.trailingLabel.translatesAutoresizingMaskIntoConstraints = false377 self.bottomLabel.translatesAutoresizingMaskIntoConstraints = false378 self.view.addSubview(self.topLabel)379 self.view.addSubview(self.leadingLabel)380 self.view.addSubview(self.trailingLabel)381 self.view.addSubview(self.bottomLabel)382 NSLayoutConstraint.activate([383 self.topLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),384 self.topLabel.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),385 self.leadingLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),386 self.leadingLabel.trailingAnchor.constraint(lessThanOrEqualTo: self.view.safeAreaLayoutGuide.centerXAnchor),387// self.leadingLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),388 self.leadingLabel.centerYAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerYAnchor),389 self.trailingLabel.leadingAnchor.constraint(greaterThanOrEqualTo: self.view.safeAreaLayoutGuide.centerXAnchor),390 self.trailingLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),391 self.trailingLabel.centerYAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerYAnchor),392 self.bottomLabel.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),393 self.bottomLabel.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),394 ])395 }396 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {397 super.traitCollectionDidChange(previousTraitCollection)398 self.topLabel.font = .preferredFont(forTextStyle: .headline, compatibleWith: self.traitCollection)399 self.leadingLabel.font = .preferredFont(forTextStyle: .body, compatibleWith: self.traitCollection)400 self.trailingLabel.font = .preferredFont(forTextStyle: .body, compatibleWith: self.traitCollection)401 self.bottomLabel.font = .preferredFont(forTextStyle: .subheadline, compatibleWith: self.traitCollection)402 self.view.setNeedsUpdateConstraints()403 self.view.updateConstraintsIfNeeded()404 }405 }406 let viewController = MyViewController()407 #if os(iOS)408 assertSnapshot(matching: viewController, as: .image(on: .iPhoneSe), named: "iphone-se")409 assertSnapshot(matching: viewController, as: .image(on: .iPhone8), named: "iphone-8")410 assertSnapshot(matching: viewController, as: .image(on: .iPhone8Plus), named: "iphone-8-plus")411 assertSnapshot(matching: viewController, as: .image(on: .iPhoneX), named: "iphone-x")412 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXr), named: "iphone-xr")413 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXsMax), named: "iphone-xs-max")414 assertSnapshot(matching: viewController, as: .image(on: .iPadMini), named: "ipad-mini")415 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7), named: "ipad-9-7")416 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2), named: "ipad-10-2")417 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5), named: "ipad-pro-10-5")418 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11), named: "ipad-pro-11")419 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9), named: "ipad-pro-12-9")420 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPhoneSe), named: "iphone-se")421 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPhone8), named: "iphone-8")422 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPhone8Plus), named: "iphone-8-plus")423 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPhoneX), named: "iphone-x")424 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPhoneXr), named: "iphone-xr")425 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPhoneXsMax), named: "iphone-xs-max")426 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPadMini), named: "ipad-mini")427 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPad9_7), named: "ipad-9-7")428 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPad10_2), named: "ipad-10-2")429 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPadPro10_5), named: "ipad-pro-10-5")430 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPadPro11), named: "ipad-pro-11")431 assertSnapshot(matching: viewController, as: .recursiveDescription(on: .iPadPro12_9), named: "ipad-pro-12-9")432 assertSnapshot(matching: viewController, as: .image(on: .iPhoneSe(.portrait)), named: "iphone-se")433 assertSnapshot(matching: viewController, as: .image(on: .iPhone8(.portrait)), named: "iphone-8")434 assertSnapshot(matching: viewController, as: .image(on: .iPhone8Plus(.portrait)), named: "iphone-8-plus")435 assertSnapshot(matching: viewController, as: .image(on: .iPhoneX(.portrait)), named: "iphone-x")436 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXr(.portrait)), named: "iphone-xr")437 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXsMax(.portrait)), named: "iphone-xs-max")438 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.landscape)), named: "ipad-mini")439 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.landscape)), named: "ipad-9-7")440 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.landscape)), named: "ipad-10-2")441 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.landscape)), named: "ipad-pro-10-5")442 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.landscape)), named: "ipad-pro-11")443 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.landscape)), named: "ipad-pro-12-9")444 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.landscape(splitView: .oneThird))), named: "ipad-mini-33-split-landscape")445 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.landscape(splitView: .oneHalf))), named: "ipad-mini-50-split-landscape")446 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.landscape(splitView: .twoThirds))), named: "ipad-mini-66-split-landscape")447 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.portrait(splitView: .oneThird))), named: "ipad-mini-33-split-portrait")448 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.portrait(splitView: .twoThirds))), named: "ipad-mini-66-split-portrait")449 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.landscape(splitView: .oneThird))), named: "ipad-9-7-33-split-landscape")450 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.landscape(splitView: .oneHalf))), named: "ipad-9-7-50-split-landscape")451 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.landscape(splitView: .twoThirds))), named: "ipad-9-7-66-split-landscape")452 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.portrait(splitView: .oneThird))), named: "ipad-9-7-33-split-portrait")453 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.portrait(splitView: .twoThirds))), named: "ipad-9-7-66-split-portrait")454 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.landscape(splitView: .oneThird))), named: "ipad-10-2-split-landscape")455 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.landscape(splitView: .oneHalf))), named: "ipad-10-2-50-split-landscape")456 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.landscape(splitView: .twoThirds))), named: "ipad-10-2-66-split-landscape")457 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.portrait(splitView: .oneThird))), named: "ipad-10-2-33-split-portrait")458 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.portrait(splitView: .twoThirds))), named: "ipad-10-2-66-split-portrait")459 460 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.landscape(splitView: .oneThird))), named: "ipad-pro-10inch-33-split-landscape")461 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.landscape(splitView: .oneHalf))), named: "ipad-pro-10inch-50-split-landscape")462 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.landscape(splitView: .twoThirds))), named: "ipad-pro-10inch-66-split-landscape")463 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.portrait(splitView: .oneThird))), named: "ipad-pro-10inch-33-split-portrait")464 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.portrait(splitView: .twoThirds))), named: "ipad-pro-10inch-66-split-portrait")465 466 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.landscape(splitView: .oneThird))), named: "ipad-pro-11inch-33-split-landscape")467 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.landscape(splitView: .oneHalf))), named: "ipad-pro-11inch-50-split-landscape")468 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.landscape(splitView: .twoThirds))), named: "ipad-pro-11inch-66-split-landscape")469 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.portrait(splitView: .oneThird))), named: "ipad-pro-11inch-33-split-portrait")470 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.portrait(splitView: .twoThirds))), named: "ipad-pro-11inch-66-split-portrait")471 472 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.landscape(splitView: .oneThird))), named: "ipad-pro-12inch-33-split-landscape")473 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.landscape(splitView: .oneHalf))), named: "ipad-pro-12inch-50-split-landscape")474 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.landscape(splitView: .twoThirds))), named: "ipad-pro-12inch-66-split-landscape")475 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.portrait(splitView: .oneThird))), named: "ipad-pro-12inch-33-split-portrait")476 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.portrait(splitView: .twoThirds))), named: "ipad-pro-12inch-66-split-portrait")477 478 assertSnapshot(479 matching: viewController, as: .image(on: .iPhoneSe(.landscape)), named: "iphone-se-alternative")480 assertSnapshot(481 matching: viewController, as: .image(on: .iPhone8(.landscape)), named: "iphone-8-alternative")482 assertSnapshot(483 matching: viewController, as: .image(on: .iPhone8Plus(.landscape)), named: "iphone-8-plus-alternative")484 assertSnapshot(485 matching: viewController, as: .image(on: .iPhoneX(.landscape)), named: "iphone-x-alternative")486 assertSnapshot(487 matching: viewController, as: .image(on: .iPhoneXr(.landscape)), named: "iphone-xr-alternative")488 assertSnapshot(489 matching: viewController, as: .image(on: .iPhoneXsMax(.landscape)), named: "iphone-xs-max-alternative")490 assertSnapshot(491 matching: viewController, as: .image(on: .iPadMini(.portrait)), named: "ipad-mini-alternative")492 assertSnapshot(493 matching: viewController, as: .image(on: .iPad9_7(.portrait)), named: "ipad-9-7-alternative")494 assertSnapshot(495 matching: viewController, as: .image(on: .iPad10_2(.portrait)), named: "ipad-10-2-alternative")496 assertSnapshot(497 matching: viewController, as: .image(on: .iPadPro10_5(.portrait)), named: "ipad-pro-10-5-alternative")498 assertSnapshot(499 matching: viewController, as: .image(on: .iPadPro11(.portrait)), named: "ipad-pro-11-alternative")500 assertSnapshot(501 matching: viewController, as: .image(on: .iPadPro12_9(.portrait)), named: "ipad-pro-12-9-alternative")502 allContentSizes.forEach { name, contentSize in503 assertSnapshot(504 matching: viewController,505 as: .image(on: .iPhoneSe, traits: .init(preferredContentSizeCategory: contentSize)),506 named: "iphone-se-\(name)"507 )508 }509 #elseif os(tvOS)510 assertSnapshot(511 matching: viewController, as: .image(on: .tv), named: "tv")512 assertSnapshot(513 matching: viewController, as: .image(on: .tv4K), named: "tv4k")514 #endif515 }516 #endif517 }518 func testTraitsEmbeddedInTabNavigation() {519 #if os(iOS)520 if #available(iOS 11.0, *) {521 class MyViewController: UIViewController {522 let topLabel = UILabel()523 let leadingLabel = UILabel()524 let trailingLabel = UILabel()525 let bottomLabel = UILabel()526 override func viewDidLoad() {527 super.viewDidLoad()528 self.navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .add, target: nil, action: nil)529 self.view.backgroundColor = .white530 self.topLabel.text = "What's"531 self.leadingLabel.text = "the"532 self.trailingLabel.text = "point"533 self.bottomLabel.text = "?"534 self.topLabel.translatesAutoresizingMaskIntoConstraints = false535 self.leadingLabel.translatesAutoresizingMaskIntoConstraints = false536 self.trailingLabel.translatesAutoresizingMaskIntoConstraints = false537 self.bottomLabel.translatesAutoresizingMaskIntoConstraints = false538 self.view.addSubview(self.topLabel)539 self.view.addSubview(self.leadingLabel)540 self.view.addSubview(self.trailingLabel)541 self.view.addSubview(self.bottomLabel)542 NSLayoutConstraint.activate([543 self.topLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),544 self.topLabel.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),545 self.leadingLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),546 self.leadingLabel.trailingAnchor.constraint(lessThanOrEqualTo: self.view.safeAreaLayoutGuide.centerXAnchor),547// self.leadingLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),548 self.leadingLabel.centerYAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerYAnchor),549 self.trailingLabel.leadingAnchor.constraint(greaterThanOrEqualTo: self.view.safeAreaLayoutGuide.centerXAnchor),550 self.trailingLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),551 self.trailingLabel.centerYAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerYAnchor),552 self.bottomLabel.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),553 self.bottomLabel.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),554 ])555 }556 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {557 super.traitCollectionDidChange(previousTraitCollection)558 self.topLabel.font = .preferredFont(forTextStyle: .headline, compatibleWith: self.traitCollection)559 self.leadingLabel.font = .preferredFont(forTextStyle: .body, compatibleWith: self.traitCollection)560 self.trailingLabel.font = .preferredFont(forTextStyle: .body, compatibleWith: self.traitCollection)561 self.bottomLabel.font = .preferredFont(forTextStyle: .subheadline, compatibleWith: self.traitCollection)562 self.view.setNeedsUpdateConstraints()563 self.view.updateConstraintsIfNeeded()564 }565 }566 let myViewController = MyViewController()567 let navController = UINavigationController(rootViewController: myViewController)568 let viewController = UITabBarController()569 viewController.setViewControllers([navController], animated: false)570 assertSnapshot(matching: viewController, as: .image(on: .iPhoneSe), named: "iphone-se")571 assertSnapshot(matching: viewController, as: .image(on: .iPhone8), named: "iphone-8")572 assertSnapshot(matching: viewController, as: .image(on: .iPhone8Plus), named: "iphone-8-plus")573 assertSnapshot(matching: viewController, as: .image(on: .iPhoneX), named: "iphone-x")574 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXr), named: "iphone-xr")575 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXsMax), named: "iphone-xs-max")576 assertSnapshot(matching: viewController, as: .image(on: .iPadMini), named: "ipad-mini")577 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7), named: "ipad-9-7")578 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2), named: "ipad-10-2")579 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5), named: "ipad-pro-10-5")580 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11), named: "ipad-pro-11")581 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9), named: "ipad-pro-12-9")582 assertSnapshot(matching: viewController, as: .image(on: .iPhoneSe(.portrait)), named: "iphone-se")583 assertSnapshot(matching: viewController, as: .image(on: .iPhone8(.portrait)), named: "iphone-8")584 assertSnapshot(matching: viewController, as: .image(on: .iPhone8Plus(.portrait)), named: "iphone-8-plus")585 assertSnapshot(matching: viewController, as: .image(on: .iPhoneX(.portrait)), named: "iphone-x")586 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXr(.portrait)), named: "iphone-xr")587 assertSnapshot(matching: viewController, as: .image(on: .iPhoneXsMax(.portrait)), named: "iphone-xs-max")588 assertSnapshot(matching: viewController, as: .image(on: .iPadMini(.landscape)), named: "ipad-mini")589 assertSnapshot(matching: viewController, as: .image(on: .iPad9_7(.landscape)), named: "ipad-9-7")590 assertSnapshot(matching: viewController, as: .image(on: .iPad10_2(.landscape)), named: "ipad-10-2")591 assertSnapshot(matching: viewController, as: .image(on: .iPadPro10_5(.landscape)), named: "ipad-pro-10-5")592 assertSnapshot(matching: viewController, as: .image(on: .iPadPro11(.landscape)), named: "ipad-pro-11")593 assertSnapshot(matching: viewController, as: .image(on: .iPadPro12_9(.landscape)), named: "ipad-pro-12-9")594 assertSnapshot(595 matching: viewController, as: .image(on: .iPhoneSe(.landscape)), named: "iphone-se-alternative")596 assertSnapshot(597 matching: viewController, as: .image(on: .iPhone8(.landscape)), named: "iphone-8-alternative")598 assertSnapshot(599 matching: viewController, as: .image(on: .iPhone8Plus(.landscape)), named: "iphone-8-plus-alternative")600 assertSnapshot(601 matching: viewController, as: .image(on: .iPhoneX(.landscape)), named: "iphone-x-alternative")602 assertSnapshot(603 matching: viewController, as: .image(on: .iPhoneXr(.landscape)), named: "iphone-xr-alternative")604 assertSnapshot(605 matching: viewController, as: .image(on: .iPhoneXsMax(.landscape)), named: "iphone-xs-max-alternative")606 assertSnapshot(607 matching: viewController, as: .image(on: .iPadMini(.portrait)), named: "ipad-mini-alternative")608 assertSnapshot(609 matching: viewController, as: .image(on: .iPad9_7(.portrait)), named: "ipad-9-7-alternative")610 assertSnapshot(611 matching: viewController, as: .image(on: .iPad10_2(.portrait)), named: "ipad-10-2-alternative")612 assertSnapshot(613 matching: viewController, as: .image(on: .iPadPro10_5(.portrait)), named: "ipad-pro-10-5-alternative")614 assertSnapshot(615 matching: viewController, as: .image(on: .iPadPro11(.portrait)), named: "ipad-pro-11-alternative")616 assertSnapshot(617 matching: viewController, as: .image(on: .iPadPro12_9(.portrait)), named: "ipad-pro-12-9-alternative")618 }619 #endif620 }621 func testCollectionViewsWithMultipleScreenSizes() {622 #if os(iOS)623 final class CollectionViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {624 let flowLayout: UICollectionViewFlowLayout = {625 let layout = UICollectionViewFlowLayout()626 layout.scrollDirection = .horizontal627 layout.minimumLineSpacing = 20628 return layout629 }()630 lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)631 override func viewDidLoad() {632 super.viewDidLoad()633 view.backgroundColor = .white634 view.addSubview(collectionView)635 collectionView.backgroundColor = .white636 collectionView.dataSource = self637 collectionView.delegate = self638 collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")639 collectionView.translatesAutoresizingMaskIntoConstraints = false640 NSLayoutConstraint.activate([641 collectionView.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor),642 collectionView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),643 collectionView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor),644 collectionView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor)645 ])646 collectionView.reloadData()647 }648 override func viewDidLayoutSubviews() {649 super.viewDidLayoutSubviews()650 collectionView.collectionViewLayout.invalidateLayout()651 }652 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {653 super.traitCollectionDidChange(previousTraitCollection)654 collectionView.collectionViewLayout.invalidateLayout()655 }656 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {657 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)658 cell.contentView.backgroundColor = .orange659 return cell660 }661 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {662 return 20663 }664 func collectionView(665 _ collectionView: UICollectionView,666 layout collectionViewLayout: UICollectionViewLayout,667 sizeForItemAt indexPath: IndexPath668 ) -> CGSize {669 return CGSize(670 width: min(collectionView.frame.width - 50, 300),671 height: collectionView.frame.height672 )673 }674 }675 let viewController = CollectionViewController()676 assertSnapshots(matching: viewController, as: [677 "ipad": .image(on: .iPadPro12_9),678 "iphoneSe": .image(on: .iPhoneSe),679 "iphone8": .image(on: .iPhone8),680 "iphoneMax": .image(on: .iPhoneXsMax)681 ])682 #endif683 }684 func testTraitsWithView() {685 #if os(iOS)686 if #available(iOS 11.0, *) {687 let label = UILabel()688 label.font = .preferredFont(forTextStyle: .title1)689 label.adjustsFontForContentSizeCategory = true690 label.text = "What's the point?"691 allContentSizes.forEach { name, contentSize in692 assertSnapshot(693 matching: label,694 as: .image(traits: .init(preferredContentSizeCategory: contentSize)),695 named: "label-\(name)"696 )697 }698 }699 #endif700 }701 func testTraitsWithViewController() {702 #if os(iOS)703 let label = UILabel()704 label.font = .preferredFont(forTextStyle: .title1)705 label.adjustsFontForContentSizeCategory = true706 label.text = "What's the point?"707 let viewController = UIViewController()708 viewController.view.addSubview(label)709 label.translatesAutoresizingMaskIntoConstraints = false710 NSLayoutConstraint.activate([711 label.leadingAnchor.constraint(equalTo: viewController.view.layoutMarginsGuide.leadingAnchor),712 label.topAnchor.constraint(equalTo: viewController.view.layoutMarginsGuide.topAnchor),713 label.trailingAnchor.constraint(equalTo: viewController.view.layoutMarginsGuide.trailingAnchor)714 ])715 allContentSizes.forEach { name, contentSize in716 assertSnapshot(717 matching: viewController,718 as: .recursiveDescription(on: .iPhoneSe, traits: .init(preferredContentSizeCategory: contentSize)),719 named: "label-\(name)"720 )721 }722 #endif723 }724 func testUIBezierPath() {725 #if os(iOS) || os(tvOS)726 let path = UIBezierPath.heart727 let osName: String728 #if os(iOS)729 osName = "iOS"730 #elseif os(tvOS)731 osName = "tvOS"732 #endif733 if !ProcessInfo.processInfo.environment.keys.contains("GITHUB_WORKFLOW") {734 assertSnapshot(matching: path, as: .image, named: osName)735 }736 if #available(iOS 11.0, tvOS 11.0, *) {737 assertSnapshot(matching: path, as: .elementsDescription, named: osName)738 }739 #endif740 }741 func testUIView() {742 #if os(iOS)743 let view = UIButton(type: .contactAdd)744 assertSnapshot(matching: view, as: .image)745 assertSnapshot(matching: view, as: .recursiveDescription)746 #endif747 }748 func testUIViewControllerLifeCycle() {749 #if os(iOS)750 class ViewController: UIViewController {751 let viewDidLoadExpectation: XCTestExpectation752 let viewWillAppearExpectation: XCTestExpectation753 let viewDidAppearExpectation: XCTestExpectation754 let viewWillDisappearExpectation: XCTestExpectation755 let viewDidDisappearExpectation: XCTestExpectation756 init(viewDidLoadExpectation: XCTestExpectation,757 viewWillAppearExpectation: XCTestExpectation,758 viewDidAppearExpectation: XCTestExpectation,759 viewWillDisappearExpectation: XCTestExpectation,760 viewDidDisappearExpectation: XCTestExpectation){761 self.viewDidLoadExpectation = viewDidLoadExpectation762 self.viewWillAppearExpectation = viewWillAppearExpectation763 self.viewDidAppearExpectation = viewDidAppearExpectation764 self.viewWillDisappearExpectation = viewWillDisappearExpectation765 self.viewDidDisappearExpectation = viewDidDisappearExpectation766 super.init(nibName: nil, bundle: nil)767 }768 required init?(coder: NSCoder) {769 fatalError("init(coder:) has not been implemented")770 }771 override func viewDidLoad() {772 super.viewDidLoad()773 viewDidLoadExpectation.fulfill()774 }775 override func viewWillAppear(_ animated: Bool) {776 super.viewWillAppear(animated)777 viewWillAppearExpectation.fulfill()778 }779 override func viewDidAppear(_ animated: Bool) {780 super.viewDidAppear(animated)781 viewDidAppearExpectation.fulfill()782 }783 override func viewWillDisappear(_ animated: Bool) {784 super.viewWillDisappear(animated)785 viewWillDisappearExpectation.fulfill()786 }787 override func viewDidDisappear(_ animated: Bool) {788 super.viewDidDisappear(animated)789 viewDidDisappearExpectation.fulfill()790 }791 }792 let viewDidLoadExpectation = expectation(description: "viewDidLoad")793 let viewWillAppearExpectation = expectation(description: "viewWillAppear")794 let viewDidAppearExpectation = expectation(description: "viewDidAppear")795 let viewWillDisappearExpectation = expectation(description: "viewWillDisappear")796 let viewDidDisappearExpectation = expectation(description: "viewDidDisappear")797 viewWillAppearExpectation.expectedFulfillmentCount = 4798 viewDidAppearExpectation.expectedFulfillmentCount = 4799 viewWillDisappearExpectation.expectedFulfillmentCount = 4800 viewDidDisappearExpectation.expectedFulfillmentCount = 4801 let viewController = ViewController(802 viewDidLoadExpectation: viewDidLoadExpectation,803 viewWillAppearExpectation: viewWillAppearExpectation,804 viewDidAppearExpectation: viewDidAppearExpectation,805 viewWillDisappearExpectation: viewWillDisappearExpectation,806 viewDidDisappearExpectation: viewDidDisappearExpectation807 )808 assertSnapshot(matching: viewController, as: .image)809 assertSnapshot(matching: viewController, as: .image)810 wait(for: [811 viewDidLoadExpectation,812 viewWillAppearExpectation,813 viewDidAppearExpectation,814 viewWillDisappearExpectation,815 viewDidDisappearExpectation,816 ], timeout: 1.0, enforceOrder: true)817 #endif818 }819 func testCALayer() {820 #if os(iOS)821 let layer = CALayer()822 layer.frame = CGRect(x: 0, y: 0, width: 100, height: 100)823 layer.backgroundColor = UIColor.red.cgColor824 layer.borderWidth = 4.0825 layer.borderColor = UIColor.black.cgColor...

Full Screen

Full Screen

SnapshotKitTests.swift

Source:SnapshotKitTests.swift Github

copy

Full Screen

...348 layout.minimumLineSpacing = 20349 return layout350 }()351 lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)352 override func viewDidLoad() {353 super.viewDidLoad()354 view.backgroundColor = .white355 view.addSubview(collectionView)356 collectionView.backgroundColor = .white357 collectionView.dataSource = self358 collectionView.delegate = self359 collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")360 collectionView.translatesAutoresizingMaskIntoConstraints = false361 NSLayoutConstraint.activate([362 collectionView.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor),363 collectionView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),364 collectionView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor),365 collectionView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor)366 ])367 collectionView.reloadData()368 }369 override func viewDidLayoutSubviews() {370 super.viewDidLayoutSubviews()371 collectionView.collectionViewLayout.invalidateLayout()372 }373 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {374 super.traitCollectionDidChange(previousTraitCollection)375 collectionView.collectionViewLayout.invalidateLayout()376 }377 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {378 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)379 cell.contentView.backgroundColor = .orange380 return cell381 }382 func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {383 20384 }385 func collectionView(386 _ collectionView: UICollectionView,387 layout _: UICollectionViewLayout,388 sizeForItemAt _: IndexPath389 ) -> CGSize {390 CGSize(391 width: min(collectionView.frame.width - 50, 300),392 height: collectionView.frame.height393 )394 }395 }396 let viewController = CollectionViewController()397 assertSnapshots(matching: viewController, as: [398 "ipad": .image(on: .iPadPro12_9),399 "iphoneSe": .image(on: .iPhoneSe),400 "iphone8": .image(on: .iPhone8),401 "iphoneMax": .image(on: .iPhoneXsMax)402 ])403 }404 func testUIView() {405 let view = UIView()406 view.frame = .init(origin: .zero, size: .init(width: 20, height: 20))407 view.backgroundColor = .cyan408 view.layer.cornerRadius = 10409 assertSnapshot(matching: view, as: .image)410 assertSnapshot(matching: view, as: .recursiveDescription)411 }412 func testUIViewController() {413 let view = UIView()414 view.backgroundColor = .cyan415 view.layer.cornerRadius = 10416 view.translatesAutoresizingMaskIntoConstraints = false417 let viewController = UIViewController()418 viewController.view.addSubview(view)419 NSLayoutConstraint.activate([420 view.topAnchor.constraint(equalTo: viewController.view.topAnchor),421 view.bottomAnchor.constraint(equalTo: viewController.view.bottomAnchor),422 view.leftAnchor.constraint(equalTo: viewController.view.leftAnchor),423 view.rightAnchor.constraint(equalTo: viewController.view.rightAnchor)424 ])425 assertSnapshot(matching: viewController, as: .image(size: .init(width: 100, height: 100)))426 }427 func testUIViewControllerLifeCycle() {428 class ViewController: UIViewController {429 let viewDidLoadExpectation: XCTestExpectation430 let viewWillAppearExpectation: XCTestExpectation431 let viewDidAppearExpectation: XCTestExpectation432 let viewWillDisappearExpectation: XCTestExpectation433 let viewDidDisappearExpectation: XCTestExpectation434 init(435 viewDidLoadExpectation: XCTestExpectation,436 viewWillAppearExpectation: XCTestExpectation,437 viewDidAppearExpectation: XCTestExpectation,438 viewWillDisappearExpectation: XCTestExpectation,439 viewDidDisappearExpectation: XCTestExpectation440 ) {441 self.viewDidLoadExpectation = viewDidLoadExpectation442 self.viewWillAppearExpectation = viewWillAppearExpectation443 self.viewDidAppearExpectation = viewDidAppearExpectation444 self.viewWillDisappearExpectation = viewWillDisappearExpectation445 self.viewDidDisappearExpectation = viewDidDisappearExpectation446 super.init(nibName: nil, bundle: nil)447 }448 @available(*, unavailable)449 required init?(coder _: NSCoder) {450 fatalError("init(coder:) has not been implemented")451 }452 override func viewDidLoad() {453 super.viewDidLoad()454 viewDidLoadExpectation.fulfill()455 }456 override func viewWillAppear(_ animated: Bool) {457 super.viewWillAppear(animated)458 viewWillAppearExpectation.fulfill()459 }460 override func viewDidAppear(_ animated: Bool) {461 super.viewDidAppear(animated)462 viewDidAppearExpectation.fulfill()463 }464 override func viewWillDisappear(_ animated: Bool) {465 super.viewWillDisappear(animated)466 viewWillDisappearExpectation.fulfill()467 }468 override func viewDidDisappear(_ animated: Bool) {469 super.viewDidDisappear(animated)470 viewDidDisappearExpectation.fulfill()471 }472 }473 let viewDidLoadExpectation = expectation(description: "viewDidLoad")474 let viewWillAppearExpectation = expectation(description: "viewWillAppear")475 let viewDidAppearExpectation = expectation(description: "viewDidAppear")476 let viewWillDisappearExpectation = expectation(description: "viewWillDisappear")477 let viewDidDisappearExpectation = expectation(description: "viewDidDisappear")478 viewWillAppearExpectation.expectedFulfillmentCount = 2479 viewDidAppearExpectation.expectedFulfillmentCount = 2480 viewWillDisappearExpectation.expectedFulfillmentCount = 2481 viewDidDisappearExpectation.expectedFulfillmentCount = 2482 let viewController = ViewController(483 viewDidLoadExpectation: viewDidLoadExpectation,484 viewWillAppearExpectation: viewWillAppearExpectation,485 viewDidAppearExpectation: viewDidAppearExpectation,486 viewWillDisappearExpectation: viewWillDisappearExpectation,487 viewDidDisappearExpectation: viewDidDisappearExpectation488 )489 assertSnapshot(matching: viewController, as: .image)490 assertSnapshot(matching: viewController, as: .image)491 wait(492 for: [493 viewDidLoadExpectation,494 viewWillAppearExpectation,495 viewDidAppearExpectation,496 viewWillDisappearExpectation,497 viewDidDisappearExpectation498 ],499 timeout: 1,500 enforceOrder: true501 )502 }503 func testCALayer() {504 let layer = CALayer()505 layer.frame = CGRect(x: 0, y: 0, width: 100, height: 100)506 layer.backgroundColor = UIColor.red.cgColor507 layer.borderWidth = 4.0508 layer.borderColor = UIColor.black.cgColor509 assertSnapshot(matching: layer, as: .image)510 }511 func testCALayerWithGradient() {512 let baseLayer = CALayer()513 baseLayer.frame = CGRect(x: 0, y: 0, width: 100, height: 100)514 let gradientLayer = CAGradientLayer()515 gradientLayer.colors = [UIColor.red.cgColor, UIColor.yellow.cgColor]516 gradientLayer.frame = baseLayer.frame517 baseLayer.addSublayer(gradientLayer)518 assertSnapshot(matching: baseLayer, as: .image(subpixelThreshold: 1))519 }520 func testViewControllerHierarchy() {521 let page = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal)522 page.setViewControllers([UIViewController()], direction: .forward, animated: false)523 let tab = UITabBarController()524 tab.viewControllers = [525 UINavigationController(rootViewController: page),526 UINavigationController(rootViewController: UIViewController()),527 UINavigationController(rootViewController: UIViewController()),528 UINavigationController(rootViewController: UIViewController()),529 UINavigationController(rootViewController: UIViewController())530 ]531 assertSnapshot(matching: tab, as: .hierarchy)532 }533 #endif534 #if os(iOS) || os(tvOS)535 func testUIBezierPath() {536 let path = UIBezierPath.heart537 let osName: String538 #if os(iOS)539 osName = "iOS"540 #elseif os(tvOS)541 osName = "tvOS"542 #endif543 assertSnapshot(matching: path, as: .image, named: osName)544 assertSnapshot(matching: path, as: .elementsDescription, named: osName)545 }546 #endif547 func testURLRequest() {548 var get = URLRequest(url: URL(string: "https://www.pointfree.co/")!)549 get.addValue("pf_session={}", forHTTPHeaderField: "Cookie")550 get.addValue("text/html", forHTTPHeaderField: "Accept")551 get.addValue("application/json", forHTTPHeaderField: "Content-Type")552 assertSnapshot(matching: get, as: .raw, named: "get")553 assertSnapshot(matching: get, as: .curl, named: "get-curl")554 var getWithQuery = URLRequest(url: URL(string: "https://www.pointfree.co?key_2=value_2&key_1=value_1&key_3=value_3")!)555 getWithQuery.addValue("pf_session={}", forHTTPHeaderField: "Cookie")556 getWithQuery.addValue("text/html", forHTTPHeaderField: "Accept")557 getWithQuery.addValue("application/json", forHTTPHeaderField: "Content-Type")558 assertSnapshot(matching: getWithQuery, as: .raw, named: "get-with-query")559 assertSnapshot(matching: getWithQuery, as: .curl, named: "get-with-query-curl")560 var post = URLRequest(url: URL(string: "https://www.pointfree.co/subscribe")!)561 post.httpMethod = "POST"562 post.addValue("pf_session={\"user_id\":\"0\"}", forHTTPHeaderField: "Cookie")563 post.addValue("text/html", forHTTPHeaderField: "Accept")564 post.httpBody = Data("pricing[billing]=monthly&pricing[lane]=individual".utf8)565 assertSnapshot(matching: post, as: .raw, named: "post")566 assertSnapshot(matching: post, as: .curl, named: "post-curl")567 var postWithJSON = URLRequest(url: URL(string: "http://dummy.restapiexample.com/api/v1/create")!)568 postWithJSON.httpMethod = "POST"569 postWithJSON.addValue("application/json", forHTTPHeaderField: "Content-Type")570 postWithJSON.addValue("application/json", forHTTPHeaderField: "Accept")571 postWithJSON.httpBody = Data("{\"name\":\"tammy134235345235\", \"salary\":0, \"age\":\"tammy133\"}".utf8)572 assertSnapshot(matching: postWithJSON, as: .raw, named: "post-with-json")573 assertSnapshot(matching: postWithJSON, as: .curl, named: "post-with-json-curl")574 var head = URLRequest(url: URL(string: "https://www.pointfree.co/")!)575 head.httpMethod = "HEAD"576 head.addValue("pf_session={}", forHTTPHeaderField: "Cookie")577 assertSnapshot(matching: head, as: .raw, named: "head")578 assertSnapshot(matching: head, as: .curl, named: "head-curl")579 post = URLRequest(url: URL(string: "https://www.pointfree.co/subscribe")!)580 post.httpMethod = "POST"581 post.addValue("pf_session={\"user_id\":\"0\"}", forHTTPHeaderField: "Cookie")582 post.addValue("application/json", forHTTPHeaderField: "Accept")583 post.httpBody = Data("""584 {"pricing": {"lane": "individual","billing": "monthly"}}585 """.utf8)586 _assertInlineSnapshot(matching: post, as: .raw(pretty: true), with: """587 POST https://www.pointfree.co/subscribe588 Accept: application/json589 Cookie: pf_session={"user_id":"0"}590 {591 "pricing" : {592 "billing" : "monthly",593 "lane" : "individual"594 }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 _ = cancellingWKWebViewNavigationDelegate695 }696 #endif697 #if os(iOS)698 @available(iOS 13.0, *)699 func testSwiftUIView_iOS() {700 let view = TestView().environment(\.colorScheme, .light)701 let precision: Float = 0.99702 assertSnapshot(matching: view, as: .image(precision: precision, traits: .init(userInterfaceStyle: .light)))703 assertSnapshot(matching: view, as: .image(precision: precision, layout: .sizeThatFits, traits: .init(userInterfaceStyle: .light)), named: "size-that-fits")704 assertSnapshot(matching: view, as: .image(precision: precision, layout: .fixed(width: 200, height: 100), traits: .init(userInterfaceStyle: .light)), named: "fixed")705 assertSnapshot(matching: view, as: .image(precision: precision, layout: .device(config: .iPhoneSe), traits: .init(userInterfaceStyle: .light)), named: "device")706 }707 #endif708 #if os(macOS)709 @available(macOS 11.0, *)710 func testSwiftUIView_macOS() {711 let view = TestView().environment(\.colorScheme, .light)712 assertSnapshot(matching: view, as: .image(size: .init(width: 100, height: 50), precision: 0.98))713 }714 #endif715 #if os(tvOS)716 @available(tvOS 13.0, *)717 func testSwiftUIView_tvOS() {718 let view = TestView().environment(\.colorScheme, .light)719 let precision: Float = 0.98720 assertSnapshot(matching: view, as: .image(precision: precision))721 assertSnapshot(matching: view, as: .image(precision: precision, layout: .sizeThatFits), named: "size-that-fits")722 assertSnapshot(matching: view, as: .image(precision: precision, layout: .fixed(width: 300, height: 100)), named: "fixed")723 assertSnapshot(matching: view, as: .image(precision: precision, layout: .device(config: .tv)), named: "device")724 }725 #endif726}727#if os(iOS) || os(tvOS)728class TestViewController: UIViewController {729 override func viewDidLoad() {730 super.viewDidLoad()731 let topView = UIView()732 let leadingView = UIView()733 let trailingView = UIView()734 let bottomView = UIView()735 navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .add, target: nil, action: nil)736 view.backgroundColor = .white737 topView.backgroundColor = .blue738 leadingView.backgroundColor = .green739 trailingView.backgroundColor = .red740 bottomView.backgroundColor = .magenta741 topView.translatesAutoresizingMaskIntoConstraints = false742 leadingView.translatesAutoresizingMaskIntoConstraints = false743 trailingView.translatesAutoresizingMaskIntoConstraints = false744 bottomView.translatesAutoresizingMaskIntoConstraints = false...

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1override func viewDidLoad() {2 super.viewDidLoad()3 let myRequest = URLRequest(url: myURL!)4 webView.load(myRequest)5 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()6}7class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {8 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {9 print("didStartProvisionalNavigation")10 webView.stopLoading()11 }12}13class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {14 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {15 print("didFailProvisionalNavigation")16 webView.stopLoading()17 }18}19class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {20 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {21 print("didFail")22 webView.stopLoading()23 }24}25class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {26 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {27 print("didFail")28 webView.stopLoading()29 }30}31class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {32 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {33 print("didFail")34 webView.stopLoading()35 }36}

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1override func viewDidLoad() {2 super.viewDidLoad()3 let webView = WKWebView(frame: view.bounds)4 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()5 view.addSubview(webView)6}7class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {8 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {9 decisionHandler(.cancel)10 }11}12override func viewDidLoad() {13 super.viewDidLoad()14 let webView = WKWebView(frame: view.bounds)15 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()16 view.addSubview(webView)17}18class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {19 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {20 decisionHandler(.cancel)21 }22}23override func viewDidLoad() {24 super.viewDidLoad()25 let webView = WKWebView(frame: view.bounds)26 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()27 view.addSubview(webView)28}29class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {30 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {31 decisionHandler(.cancel)32 }33}

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1import UIKit2import WebKit3class ViewController: UIViewController {4 override func viewDidLoad() {5 super.viewDidLoad()6 let request = URLRequest(url: url)7 webView.load(request)8 }9}10import UIKit11import WebKit12class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {13 var completion: (() -> Void)?14 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {15 if let completion = completion {16 completion()17 }18 }19}20import UIKit21import WebKit22class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {23 var completion: (() -> Void)?24 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {25 if let completion = completion {26 completion()27 }28 }29}30import UIKit31import WebKit32class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {33 var completion: (() -> Void)?34 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {35 if let completion = completion {36 completion()37 }38 }39}40import UIKit41import WebKit42class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {43 var completion: (() -> Void)?44 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {45 if let completion = completion {46 completion()47 }48 }49}50import UIKit51import WebKit52class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {53 var completion: (() -> Void)?54 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {55 if let completion = completion {56 completion()57 }58 }59}

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1import UIKit2import WebKit3class ViewController: UIViewController {4 override func viewDidLoad() {5 super.viewDidLoad()6 cancellingWKWebViewNavigationDelegate = CancellingWKWebViewNavigationDelegate(webView: webView)7 webView.load(URLRequest(url: url))8 }9}10import UIKit11import WebKit12class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {13 init(webView: WKWebView) {14 super.init()15 }16 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {17 delegate?.webViewDidStartNavigation(webView)18 }19 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {20 delegate?.webViewDidCommitNavigation(webView)21 }22 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {23 delegate?.webViewDidFinishNavigation(webView)24 }25 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {26 delegate?.webViewDidFailNavigation(webView, withError: error)27 }28 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {29 delegate?.webViewDidFailProvisionalNavigation(webView, withError: error)30 }31 func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {32 delegate?.webViewWebContentProcessDidTerminate(webView)33 }34 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {35 delegate?.webViewDidReceiveServerRedirectForProvisionalNavigation(webView)36 }37 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {38 delegate?.webView(webView

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1import UIKit2import WebKit3class ViewController: UIViewController {4 override func viewDidLoad() {5 super.viewDidLoad()6 let request = URLRequest(url: url!)7 webView.load(request)8 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()9 }10}11import UIKit12import WebKit13class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {14 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {15 print("Started Provisional Navigation")16 }17 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {18 print("Received Server Redirect For Provisional Navigation")19 }20 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {21 print("Failed Provisional Navigation")22 }23 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {24 print("Committed Navigation")25 }26 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {27 print("Finished Navigation")28 }29 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {30 print("Failed Navigation")31 }32}33import UIKit34import WebKit35class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {36 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {37 print("Started Provisional Navigation")38 }39 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {40 print("Received Server Redirect For Provisional Navigation")41 }42 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {43 print("Failed Provisional Navigation")44 }45 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {46 print("Committed Navigation")47 }48 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {49 print("

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1override func viewDidLoad() {2 super.viewDidLoad()3 let webView = WKWebView(frame: view.bounds)4 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()5 view.addSubview(webView)6}7override func viewDidLoad() {8 super.viewDidLoad()9 let webView = WKWebView(frame: view.bounds)10 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()11 view.addSubview(webView)12}13override func viewDidLoad() {14 super.viewDidLoad()15 let webView = WKWebView(frame: view.bounds)16 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()17 view.addSubview(webView)18}19override func viewDidLoad() {20 super.viewDidLoad()21 let webView = WKWebView(frame: view.bounds)22 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()23 view.addSubview(webView)24}25override func viewDidLoad() {26 super.viewDidLoad()27 let webView = WKWebView(frame: view.bounds)28 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()29 view.addSubview(webView)30}31override func viewDidLoad() {32 super.viewDidLoad()33 let webView = WKWebView(frame: view.bounds)34 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1class ViewController: UIViewController, CancellingWKWebViewNavigationDelegate {2 override func viewDidLoad() {3 super.viewDidLoad()4 cancellingWKWebViewNavigationDelegate = CancellingWKWebViewNavigationDelegate()5 }6}7class CancellingWKWebViewNavigationDelegate: NSObject, WKNavigationDelegate {8 override init() {9 super.init()10 webView = WKWebView()11 }12 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {13 print("didStartProvisionalNavigation")14 }15 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {16 print("didFail")17 }18 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {19 print("didFailProvisionalNavigation")20 }21 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {22 print("didFinish")23 }24 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {25 print("didCommit")26 }27 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {28 print("didReceiveServerRedirectForProvisionalNavigation")29 }30 func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {31 print("webViewWebContentProcessDidTerminate")32 }33 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {34 print("didReceive")35 }36}

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1override func viewDidLoad() {2 super.viewDidLoad()3 let request = URLRequest(url: url!)4 webView.load(request)5}6func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {7 print("Started")8}9func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {10 print("Committed")11}12func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {13 print("Finished")14}15func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {16 print("Failed")17}18func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {19 print("Failed Provisional")20}21func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {22 decisionHandler(.cancel)23}24func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {25 decisionHandler(.cancel)26}27func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {28 print("Terminated")29}30func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {31 print("Received Server Redirect")32}33func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {34 print("Received Authentication Challenge")35 completionHandler(.performDefaultHandling, nil)36}37func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {38 print("Received Authentication Challenge")39 completionHandler(.performDefaultHandling, nil)40}41func webView(_ webView: WKWebView, didReceive

Full Screen

Full Screen

viewDidLoad

Using AI Code Generation

copy

Full Screen

1override func viewDidLoad() {2 super.viewDidLoad()3 let webView = WKWebView(frame: view.frame)4 webView.navigationDelegate = CancellingWKWebViewNavigationDelegate()5 webView.load(URLRequest(url: url))6 view.addSubview(webView)7}8extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {9 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {10 decisionHandler(.cancel)11 }12}13extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {14 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {15 print(error)16 }17}18extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {19 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {20 print(error)21 }22}23extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {24 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {25 print("didStartProvisionalNavigation")26 }27}28extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {29 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {30 print("didFinish")31 }32}33extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {34 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {35 print("didCommit")36 }37}38extension CancellingWKWebViewNavigationDelegate: WKNavigationDelegate {39 func webView(_ webView

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful