O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

iOS 12 and Swift 4 Crash Course

Video Description

This course is designed like an in-person coding bootcamp to give you the most amount of content and help with the least amount of cost. NO PRIOR CODING EXPERIENCE REQUIRED Here are some of the things you'll be able to do after taking this course: Submit apps to the app store Understand programming & basic algorithms Work fluently with Swift 4 & iOS 12 Apply to jr iOS development jobs Work as an iOS contractor If you are absolutely new to programming you should start at the beginning of the course and go to the end. I've designed this course to take you down a guided learning path. Lectures are not broken out by specific topics. You build apps and then learn a ton of principles within those apps. So don't skip around! If you already know Swift then you can skip the Swift section since the changes in Swift between iOS 11 and 12 are minor. If you've never programmed before, make sure you DO take the Swift lessons. We'll teach you core foundational principles so you can build complex apps.

Table of Contents

  1. Getting Started with iOS 12
    1. Course overview 00:07:50
    2. MUST WATCH Installing Xcode & understanding Xcode versions 00:04:18
    3. How to get Xcode in dark theme mode 00:01:38
    4. Building your very first iOS app 00:08:22
    5. Building the Hustle App: Graphics, UI, and Sound 00:21:19
  2. Introduction to Programming & Swift 4 Basics
    1. Variables, operators, & how computers work 00:16:30
    2. Strings in Swift 4 00:15:07
    3. Functions in Swift 4 00:19:38
    4. Numbers in Swift 4 00:22:26
    5. Booleans & conditional logic in Swift 4 00:20:44
    6. Constants & logical operators in Swift 4 00:09:33
    7. Arrays in Swift 4 00:12:52
    8. Loops in Swift 4 00:18:45
    9. Dictionaries in Swift 4 00:18:30
    10. Object oriented programming in Swift 4 00:11:49
    11. Inheritance in Swift 4 00:08:04
    12. Polymorphism in Swift 4 00:08:07
    13. Optionals in Swift 4 00:20:11
  3. Git & Version Control
    1. Git & Version Control: The fun way 00:10:49
    2. Terminal Basics - Changing directories 00:05:50
    3. Terminal Basics - Copying & renaming files 00:08:39
    4. Terminal Basics - Creating directories & files 00:04:12
    5. Terminal Basics - Deleting files & directories 00:05:43
    6. Git Basics 00:16:58
    7. Setting up Github 00:04:18
    8. Working with Local & Remote Repositories 00:10:56
    9. Handling Git Merge Conflicts 00:16:33
  4. Swoosh App- Intro to Interface Builder & Auto Layout in Xcode 10
    1. Swoosh - Creating the welcome screen 00:24:58
    2. Swoosh - Working with frames 00:15:40
    3. Swoosh - Intro to auto layout (support multiple screen sizes) 00:26:21
    4. Swoosh - Working with stack views 00:26:16
    5. Swoosh - Intro to segues (changing screens) 00:09:17
    6. Swoosh - Refactoring in Xcode 9 00:09:22
    7. Swoosh - Debugging setValue forUndefinedKey 00:03:25
    8. Swoosh - Programmatic segues 00:08:38
    9. Swoosh - IBActions (handling events) & data models 00:15:57
    10. Swoosh - Passing data between view controllers 00:11:25
  5. Profile App- Digging Deeper With Auto Layout
    1. Auto Layout for iPhones 00:21:52
    2. Auto Layout for iPads & size classes 00:19:38
  6. Window Shopper App- Your First Fully Functional iOS 12 App
    1. Input accessory view and IBDesignable 00:14:47
    2. Creating custom text fields 00:17:21
    3. Creating simple unit tests 00:16:17
    4. Writing logic for calculations 00:12:46
    5. Custom drawing in iOS 12 with drawRect 00:12:06
  7. Computers & Code- Crash Course in Computer Science for Beginners
    1. How Computers Work 00:12:23
    2. Understanding Binary 00:09:26
    3. Heap vs. Stack 00:08:41
    4. iOS Binary App – Building UI _ UX 00:20:04
    5. iOS Binary App – Creating BinaryDecimal Class 00:20:31
    6. iOS Binary App – Finishing Up 00:10:11
    7. iOS Binary App – Challenge 00:01:38
    8. How Code Works 00:09:44
    9. Variables & Storage Capacity 00:06:17
    10. Understanding Hexadecimal 00:05:52
  8. Coder Swag App- Tables & Data in iOS 12
    1. Project creation & IBOutlets 00:22:13
    2. Tableviews, delegate, and data source 00:32:58
    3. Collection views (grid layouts) 00:12:16
    4. Working with data models 00:13:20
    5. Displaying data in collection view cells 00:19:42
  9. Intro to Model View Controller
    1. MVC in Theory 00:05:59
    2. Creating Xcode Project 00:03:10
    3. Setting Up Project Groups for MVC _ Examining ViewController Controller Layer 00:05:15
    4. Creating AppleProduct Model Layer 00:06:41
    5. Creating CustomPrettyView View Layer 00:08:20
    6. Connecting View to Controller 00:11:41
    7. Securing Model Layer 00:04:08
    8. Challenge - MVC 00:01:33
  10. XYZ App - Working with iOS Accelerometer
    1. XYZ - Intro to App 00:01:49
    2. XYZ - Creating Project 00:05:13
    3. XYZ - CoreMotion and CMMotionManager Explained 00:03:09
    4. XYZ - Receiving Accelerometer Updates 00:07:18
    5. XYZ - Handling Accelerometer Data 00:09:34
    6. Listy - Intro to App 00:01:13
    7. Listy - Building UI 00:06:16
    8. Listy - Creating ParallaxCell Subclass 00:06:07
    9. Listy - Configuring ImageArray and Populating UITableView 00:07:54
    10. Listy - Writing Parallax Function to Apply to UIImageView 00:06:41
    11. Listy - Accelerometer Challenge 00:00:48
  11. Splitter App - Working With UISplitViewController
    1. Splitter: Intro to App 00:02:35
    2. Splitter: Creating Project & Dummy Data 00:10:54
    3. Splitter: Setting Up MasterVC 00:06:40
    4. Splitter: Building Image Presentation VC 00:09:09
    5. Splitter: Passing Images To ImagePresentationVC 00:19:20
    6. Splitter: Challenge 00:03:37
  12. Slack App - Creating a Slack App & Working With APIs
    1. Smack: Intro to Chat App 00:03:13
    2. Smack: Project Setup 00:25:25
    3. SWReveal 00:19:50
    4. ChannelVC UI 00:24:27
    5. LoginVC UI 00:22:07
    6. CreateAccountVC UI 00:18:24
    7. Webrequests and APIs 00:08:32
    8. Hosting API 00:19:36
    9. Local Hosting API 00:17:49
    10. Creating a web request in Xcode 00:27:52
    11. Registering a User 00:15:25
    12. Logging in a user 00:19:52
    13. Creating a User 00:25:52
    14. Avatar Picker Part 1 00:18:43
    15. Avatar Picker Part 2 00:19:53
    16. Generate a Avatar BG Color 00:26:00
    17. LoggedIn Interface 00:22:50
    18. Profile View 00:25:12
    19. Logging in users 00:23:02
    20. Getting channels 00:18:50
    21. Channels TableView 00:13:17
    22. Add Channel VC 00:19:03
    23. Sockets and Channels 00:25:50
    24. Refining Login Flow 00:18:49
    25. Fetching Messages 00:19:39
    26. Sending first message 00:16:50
    27. Displaying chat messages 00:17:35
    28. Sockets and Messages 00:18:17
    29. Typing Users 00:21:08
    30. Unread Channels 00:17:46
    31. Where to go from here 00:07:15
    32. I'm Back! 00:07:23
  13. Pixel City App - Mastering Maps in iOS 12
    1. Intro to App: Pixel City 00:01:24
    2. Creating Xcode Project: Pixel City 00:04:05
    3. Installing Alamofire & AlamofireImage CocoaPods 00:06:50
    4. Building MapVC UI 00:14:35
    5. Requesting Location Services 00:17:41
    6. Drop Custom Pins on MapView 00:14:48
    7. Setting a Custom Map Annotation Color 00:04:13
    8. Animating Photos View 00:19:24
    9. Adding UILabel for Pull Up View 00:16:31
    10. Getting API Key from Flickr 00:13:46
    11. Using Alamofire to Download URLS 00:20:37
    12. Using Alamofire to Download Image 00:16:03
    13. Setting Up UICollectionView 00:09:52
    14. Presenting PopVC When UICollectionViewCell is Tapped 00:15:45
    15. Adding 3D Touch Peek & Pop to UICollectionView 00:14:26
    16. Challenge 00:01:55
  14. Goal Post App - Data Persistence in iOS 12 With Core Data
    1. GoalPost: Intro to App 00:02:18
    2. GoalPost: Creating Xcode Project 00:03:21
    3. Building GoalsVC 00:13:20
    4. Building GoalCell 00:13:41
    5. What is Core Data? 00:05:38
    6. Creating goal core data entity & attributes 00:07:48
    7. Displaying static GoalCells in UITableView 00:09:51
    8. Building CreateGoalVC 00:14:51
    9. Creating a UIViewController extension 00:10:27
    10. Creating a UIView & UIButton extension 00:18:10
    11. Building FinishGoalVC & passing data 00:18:48
    12. Saving goal data to persistent store 00:12:19
    13. Fixing dismissal of FinishGoalVC 00:06:20
    14. Fetching data from persistent store 00:15:53
    15. Removing objects from persistent store 00:10:55
    16. Setting goal progress for UITableViewCell 00:14:36
    17. GoalPost: Challenge 00:01:08
  15. Treads App - Data Persistence With Realm
    1. Intro to Realm and Treads App 00:04:13
    2. Swift 4 update 00:03:19
    3. Initial project setup 00:20:22
    4. Create the run log UI 00:18:59
    5. Last storyboard UI 00:23:49
    6. Map view setup 00:20:26
    7. Create custom slider switch 00:24:23
    8. Track Location 00:16:47
    9. Converting meters to miles 00:07:55
    10. Convert seconds to readable string 00:13:36
    11. Calculate Average Pace 00:09:27
    12. Pause, Resume Functionality 00:13:24
    13. First Realm Model 00:18:38
    14. Write & Fetch 00:18:35
    15. Display Run History 00:21:44
    16. Last Run View 00:18:45
    17. Create a Locations List for poly-line overlay 00:14:22
    18. Realm Configuration 00:12:21
    19. Get the poly-line rendering on the map view 00:16:32
    20. Center Map on poly-line or user location 00:23:23
    21. Fetch Realm Object by ID 00:06:01
  16. Breakpoint App - Building a Full Stack App With Firebase
    1. Breakpoint: Intro to App 00:03:01
    2. Breakpoint: Creating Xcode project 00:04:46
    3. Creating Firebase project 00:10:20
    4. Setting up DataService 00:10:14
    5. Building AuthVC & LoginVC in interface builder 00:18:06
    6. Creating InsetTextField & ShadowView Subclasses 00:18:02
    7. Setting up AuthService 00:12:42
    8. Presenting LoginVC from AppDelegate 00:16:08
    9. Building FeedVC and GroupsVC in interface builder 00:15:59
    10. Building MeVC and adding to UITabBarController 00:09:27
    11. Creating CreatePostVC & uploading posts to firebase 00:19:54
    12. Creating UIView extension for binding views to keyboard 00:14:29
    13. Building FeedCell 00:09:19
    14. Writing the Message Model and Getting All Feed Messages from Firebase 00:20:41
    15. Converting UIDs into Emails and Reversing the Order of a TableView 00:19:56
    16. Creating CreateGroupVC and Connecting @IBOutlets-Actions 00:14:41
    17. Creating UserCell 00:15:18
    18. Searching for Email Accounts to Add to Group 00:18:22
    19. Adding Users to Group with didSelectRowAt indexPath 00:20:15
    20. Creating Groups and Pushing Them to Firebase 00:15:11
    21. Creating GroupCell 00:09:13
    22. Creating Group Model and Getting All Groups from Firebase 00:18:31
    23. Building GroupFeedVC 00:17:39
    24. Initializing Group Data for a Group and Presenting on GroupFeedVC 00:15:36
    25. Downloading All Message for a Group and Animating Upon New Message 00:23:40
    26. Creating a UIViewController Extension for Presenting GroupFeedVC 00:07:11
    27. Challenge 00:01:33
  17. RNDM App - Using the NEW Firebase Cloud Firestore
    1. Intro to Firestore 00:00:51
    2. Firestore Project Setup 00:11:37
    3. What is Firestore 00:05:52
    4. AddThoughtVC UI Setup 00:17:14
    5. Making your first database entry! 00:24:31
    6. MainVC UI Setup 00:23:59
    7. Fetching data from Firestore 00:15:08
    8. Sorting and Filtering 00:20:22
    9. Updating individual documents 00:15:11
    10. Intro to Firestore Authentication 00:00:43
    11. Login Flow UI Setup 00:19:32
    12. Firestore: Create User 00:15:01
    13. Firestore: Login User 00:13:48
    14. Firestore: CommentsVC UI Set up 00:17:01
    15. Firestore: CommentClass and TableView 00:08:59
    16. Firestore Transactions 00:19:50
    17. Firestore: Displaying comments 00:13:14
    18. Firestore: Security Rules 00:12:40
    19. Intro to Firestore Security Rules 00:00:34
    20. Security rules: Project setup 00:12:02
    21. Security rules: Implementing protocols 00:16:10
    22. Deleting a comment 00:11:51
    23. Updating comments 00:14:36
    24. Comments Advanced Security Rules 00:10:41
    25. Deleting a thought 00:14:52
    26. Thought security rules 00:10:24
    27. Where to go from here 00:02:52
    28. Social Logins 00:01:18
    29. Project Setup 00:08:16
    30. Google Login Part 1 00:09:29
    31. Google Login Part 2 00:14:26
    32. Facebook Login 00:21:39
    33. Twitter Login 00:15:21
  18. FoodZilla App - Mastering iOS In-App Purchases
    1. IAP's: Creating Xcode Project 00:05:16
    2. IAP's: Creating App on iTunes Connect 00:04:10
    3. IAP's: Setting Up Consumable IAP Tier 00:07:51
    4. IAP's: Building StorefrontVC 00:12:30
    5. IAP's: Building DetailVC 00:09:43
    6. IAP's: Configuring UICollectionView 00:15:00
    7. IAP's: Passing values to DetailVC 00:11:24
    8. IAP's: Create IAPService Singleton 00:16:36
    9. Consumables: Making consumable purchases 00:20:03
    10. Consumables: Sending purchase notifications 00:16:53
    11. Non-Consumables: Non-Consumable IAP Tier 00:03:14
    12. Non-Consumables: Making Non-Consumable Purchases 00:19:33
    13. Restoring In-App Purchases 00:11:19
    14. Intro to Subscriptions 00:03:08
    15. Subscriptions: Exploring the starter project 00:03:57
    16. Subscriptions: How To Set Up App in iTunes Connect 00:05:40
    17. Setting up auto-renewing subscription tier (iTunes Connect) 00:10:52
    18. Buying an auto-renewing subscription 00:15:17
    19. Saving to UserDefaults & Handling Failure & Deferral 00:19:04
    20. Preventing Theft_Fraud with iTunes Receipt Validation 00:18:56
    21. Saving Expiration Date to UserDefaults _ Checking For Active Subscription 00:19:26
    22. Checking for valid/active subscription & handling Expiration – Part 1 00:20:12
    23. Checking for valid/active subscription & handling Expiration – Part 2 00:14:05
    24. Troubleshooting subscription issues 00:12:41
    25. Subscriptions : Challenge 00:02:03
  19. Touchy Feely App - Working With iOS Touch ID and Face ID
    1. SecureNotes : Intro to app 00:01:34
    2. Creating Xcode Project 00:02:14
    3. Building NoteVC 00:06:58
    4. Creating Note Model, LockStatus Enum, & Dummy Data 00:06:24
    5. Building NoteCell & Subclass 00:14:59
    6. Building NoteDetailVC 00:04:34
    7. Passing Note Data to NoteDetailVC 00:08:21
    8. Writing helper functions & updating NoteCell Subclass 00:04:34
    9. Authenticating with Touch ID / Face ID & updating information 00:18:23
    10. SecureNotes: Challenge 00:01:26
  20. Scribe App - Working With iOS Speech Recognition
    1. Scribe: Project intro & setting up the UI 00:11:55
    2. Scribe: Button design and loading animation 00:08:30
    3. Scribe: Adding logic to our speech button 00:10:10
    4. Scribe: Finishing the app 00:15:56
  21. Working With iMessege And Sticker Packs for iOS 12
    1. Intro to App – Sticker Packs 00:01:47
    2. Intro to Sticker Packs 00:03:05
    3. Creating Sticker Pack Project in Xcode 00:03:03
    4. Sticker Art Resources _ Websites 00:08:50
    5. Adding Static Stickers _ Testing 00:03:13
    6. Adding APNG & GIF Stickers _ Testing 00:09:44
    7. Creating iMessage App Icons 00:05:55
    8. Creating Static Stickers with Sketch 3 00:12:50
    9. Creating Animated Stickers from Sprite Sheet 00:08:25
  22. Shortcut App - Working With 3D Touch on iOS
    1. Intro to App - Quick Action 00:01:20
    2. Setting up the UI 00:11:11
    3. Creating the Quick Action 00:15:01
    4. Handle the Quick Action 00:15:19
    5. Quick Actions with TabBar 00:07:02
  23. LegDay App - Working With iOS SiriKit
    1. Intro to SiriKit 00:00:46
    2. Intro to App – LEGDAY 00:01:40
    3. Intro to SiriKit 00:03:09
    4. Building WorkoutVC _ Wiring Up 00:02:03
    5. Enabling Siri Access _ Requesting Permissions 00:06:00
    6. Creating a SiriKit Intents App Extension _ Configuring For Workout 00:19:26
    7. Configuring Results in AppDelegate with DataService 00:04:07
    8. Handling _ Presenting SiriKit Results in WorkoutVC 00:13:24
    9. Challenge – LEGDAY 00:01:24
  24. Screenie App - Using ReplayKit in iOS
    1. Intro to ReplayKit 00:00:56
    2. Intro to App – Screenie 00:02:21
    3. Building UI 00:09:16
    4. Creating RPScreen Recorder instance 00:03:51
    5. Configuring UISegmentedControl to switch images 00:06:36
    6. Starting a screen recording 00:11:04
    7. Stopping, editing, & saving a screen recording 00:12:34
    8. Screenie: Challenge 00:01:16
  25. RampUp App - Intro to ARKit
    1. RampUp - Intro to ARKit App 00:01:59
    2. RampUp - Resources & important ARKit info 00:03:34
    3. RampUp - Project creation 00:10:45
    4. RampUp - SceneKit, 3D models & materials 00:10:49
    5. RampUp - Ramp picker popover 00:13:33
    6. RampUp - 3D models in SceneKit for popover 00:17:21
    7. RampUp: 3D models in SceneKit for popover - Part 2 00:11:23
    8. RampUp - Detecting taps on 3D objects 00:16:51
    9. RampUp - Placing ramps in ARKit 00:23:22
    10. RampUp - Moving objects in 3D space in augmented reality 00:19:23
    11. ARKit - where to go next 00:03:24
  26. Vision App - iOS CoreML Basics
    1. CoreML - Intro to app 00:01:34
    2. Intro to Core ML 00:04:48
    3. What is machine learning 00:07:32
    4. Creating Xcode project 00:03:05
    5. Building UI & custom view subclasses 00:17:20
    6. AVFoundation & AVCaptureSession to use the camera 00:17:43
    7. Tap gestures to take snapshot on item 00:10:58
    8. Downloading CoreML models 00:20:53
    9. Core ML Xcode 9 Beta 4 Update - Fix Preview Photo Crash 00:02:27
    10. Adding UI controls for flash control 00:07:04
    11. Training your app to speak what it sees 00:17:47
  27. Animal App - Using iOS 12 New CoreML Models
    1. Intro to App – AnimalClassifier 00:01:07
    2. DIY Core ML Model with Create ML 00:08:03
    3. Building & Connecting User Interface 00:10:35
    4. Setup Camera_Photo Selection 00:12:46
    5. Create & Process Classification Request 00:15:26
    6. Update Labels with Classifications 00:12:59
  28. Advanced Swift 4
    1. Enumerations in Swift 4 00:19:24
    2. Extensions in Swift 4 part 1 00:15:01
    3. Extensions in Swift 4 part 2 00:20:12
    4. Protocols & delegates in Swift 4 part 1 00:12:44
    5. Protocols & delegates in Swift 4 part 2 00:17:10
    6. Protocols & delegates in Swift 4 part 3 00:16:08
    7. Protocols & delegates in Swift 4 part 4 00:15:44
    8. Protocols & delegates in Swift 4 part 5 00:17:42
    9. Swift transformations 00:19:41
  29. Advanced - Data Structures & Algorithms In Swift 4
    1. Recursive functions in Swift 4 00:13:24
    2. The stack data structure in Swift 4 00:12:31
    3. The heap data structure in Swift 4 Part 1 00:20:49
    4. The heap data structure in Swift 4 Part 2 00:13:33
    5. The tree data structure in Swift 4 00:18:51
  30. Advanced Swift 4 Design Patterns - Protocol Oriented Programming
    1. Intro to protocol oriented programming 00:10:49
    2. Writing your first protocols 00:20:08
    3. Creating protocol extensions 00:14:35
    4. Generics and protocols 00:13:19
  31. Advanced Swift 4 Design Patterns - Reactive Programming With RxSwift
    1. RxSwift 00:01:42
    2. Intro to RxSwift 00:05:08
    3. What is Rx? Why Rx? 00:10:46
    4. How To Install RxSwift into an Xcode Playground 00:04:00
    5. Creating and Subscribing to Observables 00:09:17
    6. Observables – Disposing 00:06:42
    7. Challenge_ Observables 00:01:59
    8. Publish Subject 00:06:14
    9. Behavior Subject 00:07:30
    10. Replay Subject 00:08:50
    11. Variables 00:05:53
    12. Challenge – Subjects 00:04:00
    13. Transformations – .map 00:11:19
    14. Transformations – .flatMap 00:10:12
    15. Transformations – .filter 00:06:20
    16. Transformations: .zip 00:07:45
    17. Challenge – Transformations 00:03:11
    18. Intro to App – Namer 00:02:09
    19. Creating Xcode Project _ Installing RxSwift & RxCocoa 00:06:46
    20. Building Namer UI _ Connecting @IBOutlets 00:05:03
    21. Using RxCocoa to Observe _ Subscribe to UITextField Data 00:12:06
    22. Adding Rx Capabilities to Submit Button 00:10:37
    23. Passing Values Between UIViewController Instances Using RxSwift 00:21:24
    24. Intro to Versi App 00:02:57
    25. Creating Xcode Project 00:03:03
    26. Installing CocoaPods 00:06:16
    27. Setting Up UITabBarController _ Adding Project Assets 00:06:48
    28. Building TrendingFeedVC 00:14:10
    29. Building Custom View Subclasses 00:13:04
    30. Building Repo Model Layer 00:11:11
    31. Building TrendingRepoCell Subclass _ Loading Dummy Data 00:21:32
    32. Creating DownloadService Singleton 00:21:47
    33. Downloading Trending Repos Data 00:14:46
    34. Downloading Additional Required Repo Data 00:19:52
    35. Fixing Broken DownloadService Functions 00:12:19
    36. Filling TrendingFeedVC with Real API Data 00:19:18
    37. Building SearchVC 00:03:00
    38. Building SearchCell 00:11:09
    39. Setting Up SearchVC the RxSwift Way 00:22:44
    40. Using RxSwift To Drive UITableView with Search Results 00:05:53
    41. Loading Github README.md Files in SFSafariViewController 00:08:58
  32. Advanced - Unit Testing in iOS 12
    1. What is Unit Testing? 00:04:32
    2. What makes a good unit test? 00:02:24
    3. Unit testing in Swift 00:09:52
    4. Testing Data Models (Part 1) 00:17:56
    5. Testing Data Models (Part 2) 00:11:22
    6. Testing features & functions 00:15:02
    7. Testing asynchronous code 00:16:58
    8. Testing endpoints & mock data 00:16:04
    9. Testing performance & benchmarking 00:09:36
    10. Testing & MVVM 00:04:59
  33. Advanced - UI Testing in iOS 12
    1. What is UI Testing 00:02:03
    2. UI Testing best practices 00:04:26
    3. UI testing in Swift – Basic example 00:12:34
    4. Testing Navigation 00:09:58
    5. Testing views & alerts 00:13:20
    6. Resetting & verifying app state 00:07:11
    7. Testing bug fixes 00:08:23
    8. Testing data in text fields 00:09:43
    9. Testing UI after an asynchronous call 00:14:34