{
    "componentChunkName": "component---src-templates-tag-js",
    "path": "/tags/testing/",
    "result": {"data":{"articles":{"nodes":[{"frontmatter":{"title":"How to test in-app purchases locally using StoreKit","subtitle":"A practical guide to simulating in-app purchases and subscriptions in Xcode.","date":"08 Apr 2026","tags":["storekit","testing","swift","ios"],"readingTime":6},"slug":"testing-in-app-purchases-locally-storekit","id":"d643509d-2836-57a8-ab3e-740f6fe97af5"},{"frontmatter":{"title":"Changing runtime state with LLDB while debugging iOS apps","subtitle":"Learn how to use LLDB's expr command to modify variables at runtime.","date":"30 Mar 2026","tags":["lldb","testing","xcode","ios"],"readingTime":5},"slug":"lldb-changing-variables-while-debugging","id":"b9ae7f01-e01f-5b5e-9608-fede21a69dc9"},{"frontmatter":{"title":"Preventing forgotten database migrations with automated tests in iOS","subtitle":"Learn how to automatically detect migration errors before shipping.","date":"22 Feb 2026","tags":["testing","persistence","core data","swiftdata"],"readingTime":7},"slug":"testing-database-migrations","id":"62641f73-9a16-5c47-b018-7640253fddea"},{"frontmatter":{"title":"Testing remote iOS push notifications in a simulator with simctl","subtitle":"Learn how to use the command-line tool simctl to simulate remote notifications in iOS.","date":"06 Apr 2025","tags":["notifications","testing","swift","ios"],"readingTime":3},"slug":"testing-remote-push-notifications-in-ios-simulator","id":"5d81c1dc-c02e-5893-96cb-13eda2dc575d"},{"frontmatter":{"title":"Learn to debug iOS features that require app start from external actions in Xcode","subtitle":"How to debug features like deep linking or home screen quick actions.","date":"27 Jan 2025","tags":["xcode","testing","ios"],"readingTime":2},"slug":"xcode-debugging-app-restart","id":"876d8f0c-b0cd-5077-9993-34085db5a938"},{"frontmatter":{"title":"Getting started with UI Testing for SwiftUI","subtitle":"Learn how to create user interface tests with the XCTest framework.","date":"30 Dec 2024","tags":["testing","swiftui","swift","ios"],"readingTime":4},"slug":"testing-ui-swiftui-xctest-framework","id":"91646ef9-311e-5647-9cae-374ac18c9376"},{"frontmatter":{"title":"How to unit test async/await functions in Swift","subtitle":"Learn how to write unit tests for async/await functions.","date":"16 Dec 2024","tags":["async/await","concurrency","testing","swift"],"readingTime":5},"slug":"testing-swift-async-await","id":"161207a1-dada-5cd5-8b10-8b27a4c432ff"},{"frontmatter":{"title":"Developer guide on Swift Testing for iOS","subtitle":"Learn how use Swift Testing to write automated tests.","date":"01 Jul 2024","tags":["testing","swift","ios"],"readingTime":5},"slug":"ios-swift-testing","id":"fffaa784-5d1b-541b-afcc-79d48e4eedf9"},{"frontmatter":{"title":"How to automate taking screenshots with fastlane for iOS","subtitle":"Learn how to setup fastlane's snapshot action.","date":"24 Jul 2023","tags":["continuous integration","testing","ios"],"readingTime":2},"slug":"20230724-fastlane-screenshots-ios","id":"f83bf64b-701b-5b9d-8ff4-8649261bb55a"},{"frontmatter":{"title":"Quick tip on how to unit test Swift optionals with XCTUnwrap","subtitle":"Learn how to shorten if let and guard statements when unit testing.","date":"06 Mar 2023","tags":["testing","swift","ios"],"readingTime":2},"slug":"20230306-xctunwrap-quick-tip","id":"9201d5eb-3849-5453-b1f1-66b417a6fc0c"}]},"tags":{"group":[{"fieldValue":"accessibility","totalCount":6},{"fieldValue":"activitykit","totalCount":1},{"fieldValue":"ai","totalCount":1},{"fieldValue":"animations","totalCount":2},{"fieldValue":"app distribution","totalCount":1},{"fieldValue":"architecture","totalCount":10},{"fieldValue":"associated domains","totalCount":5},{"fieldValue":"async/await","totalCount":18},{"fieldValue":"authentication","totalCount":2},{"fieldValue":"automation","totalCount":3},{"fieldValue":"basics","totalCount":6},{"fieldValue":"beyond ios","totalCount":4},{"fieldValue":"book","totalCount":2},{"fieldValue":"combine","totalCount":9},{"fieldValue":"command line","totalCount":1},{"fieldValue":"concurrency","totalCount":16},{"fieldValue":"continuous integration","totalCount":6},{"fieldValue":"core data","totalCount":8},{"fieldValue":"cryptokit","totalCount":3},{"fieldValue":"dependency management","totalCount":2},{"fieldValue":"design patterns","totalCount":4},{"fieldValue":"file system","totalCount":1},{"fieldValue":"generics and protocols","totalCount":3},{"fieldValue":"graphql","totalCount":2},{"fieldValue":"ios","totalCount":157},{"fieldValue":"json","totalCount":3},{"fieldValue":"lldb","totalCount":2},{"fieldValue":"localization","totalCount":5},{"fieldValue":"machine learning","totalCount":7},{"fieldValue":"navigation","totalCount":6},{"fieldValue":"networking","totalCount":11},{"fieldValue":"notifications","totalCount":7},{"fieldValue":"objective-c","totalCount":2},{"fieldValue":"observation","totalCount":2},{"fieldValue":"performance","totalCount":1},{"fieldValue":"persistence","totalCount":12},{"fieldValue":"productivity","totalCount":2},{"fieldValue":"property wrappers","totalCount":12},{"fieldValue":"quick tip","totalCount":3},{"fieldValue":"reactive programming","totalCount":7},{"fieldValue":"scripting","totalCount":1},{"fieldValue":"security","totalCount":10},{"fieldValue":"spritekit","totalCount":1},{"fieldValue":"storekit","totalCount":5},{"fieldValue":"swift","totalCount":143},{"fieldValue":"swift package manager","totalCount":5},{"fieldValue":"swiftdata","totalCount":7},{"fieldValue":"swiftui","totalCount":72},{"fieldValue":"technical interview","totalCount":1},{"fieldValue":"testing","totalCount":10},{"fieldValue":"tools","totalCount":4},{"fieldValue":"uikit","totalCount":5},{"fieldValue":"universal links","totalCount":1},{"fieldValue":"ux","totalCount":3},{"fieldValue":"webkit","totalCount":2},{"fieldValue":"widgetkit","totalCount":3},{"fieldValue":"wwdc","totalCount":2},{"fieldValue":"xcode","totalCount":20}]}},"pageContext":{"tag":"testing"}},
    "staticQueryHashes": ["1248279061","1495782094","3016322440","3770566618","3897982121"]}