Title: Theory / Important / CS / Programming / Objective-C / test / XCTest / UI testing
Tags: automatedNewLineAfterCommaSpace
On every note of this deck, unless a note says otherwise:
Language: Objective-C
Language: Objective-C
Context: xcode
Language: Objective-C

Name: EarlGrey 2.0
Definition: EarlGrey
Page: https://opensource.google/projects/earlgrey
Definition2: XCUITest
Conjdef: a native iOS UI automation test framework that combines

Name: UI testing
Definition: The ability to find and interact with the UI of your app in order to validate the properties and state of the UI elements.
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Example: UI recording, which gives you the ability to generate code that exercises your app's UI the same way you do, and which you can expand upon to implement UI tests. This is a great way to quickly get started writing UI tests.

Question: General pattern of a UI test for correctness
Answer: Use an XCUIElementQuery to find an XCUIElement.
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Context: Testing with Xcode
Answer2: Synthesize an event and send it to the XCUIElement.
Answer3: Use an assertion to compare the state of the XCUIElement against an expected reference state.

Instruction: testBundle
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Effect: run all the tests in a bundle
Context: Xcode

Question: What should be done on setUp
Answer: start with
[super setUp]
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Context: Xcode test

Question: What should be done on tearDown
Answer: ends with
[super setUp]
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Context: Xcode test

Typ: XCTestCase
Meaning: Subtype of all test classes
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Context: Xcode test

Typ: XCTestExpectation
Meaning: An expectation of fulfillement, which can be waited for until it is actually fulfilled
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Context: Xcode test

Instruction: [self expectationWithDescription:@"foo"]
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Context: Xcode test
Returns: An unfulfilled expectation with description foo
Typ: XCTestExpectation

Instruction: [expectation fulfill]
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Effect: Ensure that expectation is considered as fulfilled
Context: Xcode test
Variables: XCTestExpectation *expectation

Instruction: [self
  waitForExpectationsWithTimeout:n
  handler:^(NSError *error) {   handling}
]
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Effect: wait for all XCTestExpectation to be fulfilled during at most n time. Fail otherwise
Context: Xcode test

Instruction: [self
  measureBlock:^{
    foo
    // Put the code you want to measure the time of here.
  }
]
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Effect: performance test for doing foo
Context: Xcode test

Instruction: -enable-testing
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Effect: All declarations annotated with @testable are public
Context: Xcode test

Instruction: XCTFail(
  format_string,
  format_args...
)
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
Effect: Print error print(format_string, format_args...)
Context: Xcode test

Instruction: XCTAssert/XCTAssertTrue(
  expr,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/boolean_assertions
Effect: If not expr, print error print(format_string, format_args...)
Context: Xcode test

Instruction: XCTAssertFalse(
  expr,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/boolean_assertions
Effect: If expr, print error print(format_string, format_args...)
Context: Xcode test

Instruction: XCTAssert(Not)Nil(
  expr,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctassertnotnil?language=objc
Effect: If expr is (not) nil, print error print(format_string, format_args...)
Context: Xcode test

Instruction: XCTAssert(Greater|Less)Than(|OrEqual)(
  left,
  right,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctassertidentical?language=objc
Effect: if `left (>|<)(=)  right`, print(format_string,  format_args...)
Context: Xcode test

Instruction: XCTAssert(Throws|NoThrow)(
  expression,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctassertthrows?language=objc
Effect: if expression do not raise (raises) an exception, fail with print(format_string, format_args...)
Context: Xcode test

Instruction: XCTAssert(Throws|NoThrow)Specific(
  expression,
  exception_class,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctassertthrowsspecific?language=objc
Effect: if expression do not throw (throws) an exception_class, fail with print(format_string, format_args...)
Context: Xcode test

Instruction: XCTAssert(Throws|NoThrow)SpecificNamed(
  expression,
  exception_class,
  exception_name,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctassertthrowsspecific?language=objc
Effect: if expression do not throw (throws) an exception_class with a name exception_name, fail with print(format_string, format_args...)
Context: Xcode test

Instruction: XCTexpectFailure(
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/expected_failures?language=objc
Effect: if no assertion in this test fails, fail with print(format_string, format_args...).
If an assertion later in this test fails, do not fail the run
Context: Xcode test

Instruction: XCTexpectFailure(
  format_string,
  format_args...,
  options:options
)
Page: https://developer.apple.com/documentation/xctest/expected_failures?language=objc
Effect: Same as XCTexpectFailure(format_string, format_args...), but consider its options
Context: Xcode test

Instruction: XCTExpectedFailure.Options()
Page: https://developer.apple.com/documentation/xctest/expected_failures?language=objc
Context: Xcode test
Returns: default XCTExpectFailure options

Instruction: option.isEnabled
Page: https://developer.apple.com/documentation/xctest/expected_failures?language=objc
Effect: whether the expect failure is enabled
Context: Xcode test
Variables: XCTExpectedFailure.Options  *expectedFailureOptions;

Instruction: option.issueMatcher
Page: https://developer.apple.com/documentation/xctest/expected_failures?language=objc
Effect: method that takes an expectation issue and return whether it is the expected issue. If not, fail
Context: Xcode test
Variables: XCTExpectedFailure.Options  *expectedFailureOptions;

Instruction: expectedFailureOptions.isStrict
Page: https://developer.apple.com/documentation/xctest/expected_failures?language=objc
Effect: Whether the run fails if no failure occurs in this test
Context: Xcode test
Variables: XCTExpectedFailure.Options  *expectedFailureOptions;

Instruction: XCTSkipIf(
  expression,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctskipif?language=objc
Effect: if expression, halt the test evaluation and mark the test as skipped with print(format_string, format_args)
Context: Xcode test

Instruction: XCTSkipUnless(
  expression,
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctskipunless?language=objc
Effect: if not expression, halt the test evaluation and mark the test as skipped with print(format_string, format_args)
Context: Xcode test

Instruction: XCTSkip(
  format_string,
  format_args...
)
Page: https://developer.apple.com/documentation/xctest/xctskip?language=objc
Effect: Halt the test evaluation and mark the test as skipped with print(format_string, format_args)
Context: Xcode test

Instruction: Product > Test
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/05-running_tests.html
Effect: Run the current active scheme
Context: Xcode test
Abbreviation: cmd + u

Instruction: Add test failure breakpoint
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/06-debugging_tests.html
Effect: Add a breakpoint to the failing test assertions.
Context: Xcode test

Instruction: Test callers category
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/06-debugging_tests.html
Effect: Offer to run the test that uses the function in which your cursor currently is (check)
Context: Xcode test

Instruction: Test classes category
Page: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/06-debugging_tests.html
Effect: Offer to run the test that uses the classes in which your cursor currently is (check)
Context: Xcode test

Instruction: [expectation
  $ initWithDescription:@"foo"
]
Page: https://developer.apple.com/documentation/xctest/xctestexpectation/2806571-initwithdescription?language=objc
Context: Xcode test
Returns: Init and add description foo to the expectation
Variables: XCTestExpectation expectation

Typ: XCTKVOExpectation
Meaning: An expectation that is fulfilled when a Key Value Observing (KVO) condition is met.
Page: https://developer.apple.com/documentation/xctest/xctkvoexpectation?language=objc
Context: Xcode test
Variables: XCTestExpectation expectation
Subtype of: XCTestExpectation

Instruction: [kvoExpectation
  initWithKeyPath:keyPath object:object
]
Page: https://developer.apple.com/documentation/xctest/xctkvoexpectation/2806841-initwithkeypath?language=objc
Effect: init the kvoExpectation with a keyPath and an object
Context: Xcode test
Variables: XCTKVOExpectation kvoExpectation

Instruction: [kvoExpectation
  initWithKeyPath:keyPath
  object:object
  expectedValue:expectedValue
]
Page: https://developer.apple.com/documentation/xctest/xctkvoexpectation/2806841-initwithkeypath?language=objc
Effect: init the kvoExpectation with a keyPath, an object and expected value
Context: Xcode test
Variables: XCTKVOExpectation kvoExpectation

Instruction: [kvoExpectation
  initWithKeyPath:keyPath
  object:object
  expectedValue:expectedValue
  options:options
]
Page: https://developer.apple.com/documentation/xctest/xctkvoexpectation/2806841-initwithkeypath?language=objc
Effect: init the kvoExpectation with a keyPath, an object, expected value and an array of NSKeyValueObservingOptions
Context: Xcode test
Variables: XCTKVOExpectation kvoExpectation

Typ: NSKeyValueObservingOptions
Meaning: The values that can be returned in a change dictionary.
Page: https://developer.apple.com/documentation/xctest/xctkvoexpectation/2806841-initwithkeypath?language=objc
Context: Xcode test

Typ: XCKeyValueObservingExpectationHandler
Meaning: A method that takes an observedObject, a KVO change dictionnary, and return whether expectation should be considered fulfilled
Page: https://developer.apple.com/documentation/xctest/xckeyvalueobservingexpectationhandler?language=objc
Context: Xcode test XCTKVOExpectation

Meaning: An expectation that is fulfilled when an expected NSNotification is received.
Page: https://developer.apple.com/documentation/xctest/xctnsnotificationexpectation?language=objc
Context: Xcode test
Subtype of: XCTestExpectation

Typ: XCTDarwinNotificationExpectation
Meaning: An expectation that is fulfilled when an expected Darwin notification is received.
Page: https://developer.apple.com/documentation/xctest/xctdarwinnotificationexpectation?language=objc
Context: Xcode test
Subtype of: XCTestExpectation

Typ: XCTNSPredicateExpectation
Meaning: An expectation that is fulfilled when an NSPredicate is satisfied
Page: https://developer.apple.com/documentation/xctest/xctdarwinnotificationexpectation?language=objc
Context: Xcode test
Subtype of: XCTestExpectation

Typ: XCTWaiter
Meaning: Waits for a group of expectations to be fulfilled.
Page: https://developer.apple.com/documentation/xctest/xctdarwinnotificationexpectation?language=objc
Context: Xcode test

Typ: XCNotificationExpectationHandler
Meaning: A method that takes a notification and return whether the expectation is fulfilled
Context: Xcode test XCTNSNotificationExpectation

Typ: XCTDarwinNotificationExpectationHandler
Meaning: Type of function that is called when a matching notification is received
Page: https://developer.apple.com/documentation/xctest/xctdarwinnotificationexpectationhandler?language=objc
Context: Xcode test XCTNSNotificationExpectation

Instruction: [XCTWaiter
  waitForExpectation:expectations
  timout:seconds
  enforceOrder:enforceOrderOfFulfillment
]
Page: https://developer.apple.com/documentation/xctest/xctwaiter/2806738-waitforexpectations?language=objc
Returns: A waiter, that wait for all expectations, at most seconds. Fulfillment must be done in the input order if enforceOrderOfFulfillment
Typ: XCTWaiterResult
Library: XCTWaiter

Instruction: [XCTWaiter
  waitForExpectation:expectations
  timout:seconds
]
Page: https://developer.apple.com/documentation/xctest/xctwaiter/2806738-waitforexpectations?language=objc
Returns: A waiter, that wait for all expectations, at most seconds.
Typ: XCTWaiterResult
Library: XCTWaiter

Instruction: [waiter
  waitForExpectation:expectations
  timout:seconds
]
Page: https://developer.apple.com/documentation/xctest/xctwaiter/2806738-waitforexpectations?language=objc
Effect: `waiter` waits for all expectations, at most seconds.
Variables: XCTWaiter waiter
Typ: XCTWaiterResult

Instruction: [waiter
  waitForExpectation:expectations
  timout:seconds
  enforceOrder:enforceOrderOfFulfillment
]
Page: https://developer.apple.com/documentation/xctest/xctwaiter/2806738-waitforexpectations?language=objc
Effect: `waiter` waits for all `expectations`, at most `seconds`. It also expects fulfillment to occurs in the order given in `expectations`
Variables: XCTWaiter waiter
Typ: XCTWaiterResult

Typ: XCTWaiterDelegate
Meaning: Defines methods that are called when XCTWaiter expectations are fulfilled correctly or incorrectly.
Page: https://developer.apple.com/documentation/xctest/xctwaiter/2806738-waitforexpectations?language=objc

Instruction: [XCTContext
  runActivityNamed:foo
  block:^(id<XCTactivity> activity) {bar}
]
Page: https://developer.apple.com/documentation/xctest/activities_and_attachments/grouping_tests_into_substeps_with_activities?language=objc
Effect: run bar. If it fails, indicate the failure is in context foo
Context: XCode test

Typ: XCTContext
Meaning: provides a way for activities (XCTActivity) to run against the current testing context, either directly in a test case or in custom testing utilities
Page: https://developer.apple.com/documentation/xctest/xctcontext?language=objc
Context: XCode test
Initialization: run bar. If it fails, indicate the failure is in context foo

Typ: XCTActivity
Meaning: A named substep of a test method.
Page: https://developer.apple.com/documentation/xctest/xctcontext?language=objc
Context: XCode test

Instruction: [activity
  addAttachment:attachment
]
Page: https://developer.apple.com/documentation/xctest/xctactivity/2887219-name?language=objc
Effect: Add an attachment to current activity
Context: XCode test
Variables: XCTActivity activity

Question: How to test asynchronous operation
Answer: Use expectation, fulfill them asynchronously, and wait for the fulfillment in main thread
Page: https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations?language=objc
Context: XCode test

Typ: XCTAttachment
Meaning: Attachment that can be set to test, to get information about runs and failures
Page: https://developer.apple.com/documentation/xctest/xctattachment?language=objc
Context: XCode test
Subtype of: NSObject, conforms to NSSecureCoding

Instruction: [XCTAttachment
  attachmentWithData:payload
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887208-attachmentwithdata?language=objc
Context: XCode test
Returns: an XCTAttachment with the `payload`
Library: XCTAttachment

Instruction: [XCTAttachment
  attachmentWithData:payload
  uniformTypeIdentifier:identifier
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887206-attachmentwithdata?language=objc
Context: XCode test
Returns: an XCTAttachment with the `payload` of type `identifier`
Library: XCTAttachment

Instruction: [attachment
  initWithUniformTypeIdentifier:identifier
  name:name
  payload:payload
  userInfo:userInfo]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887205-userinfo?language=objc
Effect: init the attachment with an identifier, name, payload and userinfo
Context: XCode test
Variables: XCTAttachment attachment

Instruction: [XCTAttachment
  initWithUniformTypeIdentifier:identifier
  name:name
  payload:payload
  userInfo:userInfo]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887435-attachmentwithuniformtypeidentif?language=objc
Context: XCode test
Returns: An attachment, initialized with an identifier, name, payload and userinfo

Instruction: [XCTAttachment
  attachmentWithContentsOfFileAtURL:url
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887207-attachmentwithcontentsoffileatur?language=objc
Context: XCode test
Returns: An attachment with content from URL

Instruction: [XCTAttachment
  attachmentWithContentsOfFileAtURL:url
  uniformTypeIdentifier
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887207-attachmentwithcontentsoffileatur?language=objc
Context: XCode test
Returns: An attachment with content from URL, of type identifier

Instruction: [XCTAttachment
  attachmentWithCompressedContentsOfDirectoryAtURL:url
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887210-attachmentwithcompressedcontents?language=objc
Context: XCode test
Returns: An attachment with content from URL, compressed

Instruction: [XCTAttachment
  attachmentWithImage:image
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887210-attachmentwithcompressedcontents?language=objc
Context: XCode test
Returns: An attachment whose content is the image
Variables: NSImage image

Instruction: [XCTAttachment
  attachmentWithImage:image
  quality:quality
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2897397-attachmentwithimage?language=objc
Context: XCode test
Returns: An attachment whose content is the image, as PNG for original quality, and jpeg for medium or low quality
Variables: NSImage image

Instruction: [XCTAttachment
  attachmentWithScreenshot:screenshot
]
Page: https://developer.apple.com/documentation/appkit/nsimage?language=objc
Context: XCode test
Returns: An attachment whose content is the the screenshot
Variables: XCUIScreenshot screenshot

Instruction: [XCTAttachment
  attachmentWithScreenshot:screenshot
  quality
]
Page: https://developer.apple.com/documentation/appkit/nsimage?language=objc
Context: XCode test
Returns: An attachment whose content is the the screenshot. Use png if original quality. JPG if medium or low
Variables: XCUIScreenshot screenshot

Typ: XCUIScreenshot
Meaning: Type for screenshot of the running program.
Page: https://developer.apple.com/documentation/xctest/xcuiscreenshot?language=objc
Context: XCode test

Instruction: [XCTAttachment
  attachmentWithString:string
]
Page: https://developer.apple.com/documentation/xctest/xctattachment/2887204-attachmentwithstring?language=objc
Context: XCode test
Returns: An attachment with string

Typ: NSSecureCoding
Meaning: A protocol that enables encoding and decoding in a manner that is robust against object substitution attacks.
Page: https://developer.apple.com/documentation/foundation/nssecurecoding?language=objc
Context: XCode test

Typ: XCTIssue
Meaning: An object that represents a test failure, and includes source code call stacks for test reporting and investigation.
Page: https://developer.apple.com/documentation/xctest/xctissue?language=objc
Context: XCode test

Typ: XCTMutableIssue issue
Meaning: A mutable object that represents a test failure, and includes source code call stacks for test reporting and investigation.
Page: https://developer.apple.com/documentation/xctest/xctissue/3546509-detaileddescription?language=objc
Subtype of: XCTIssue

Typ: XCTSourceCodeContext
Meaning: An object that contains call stack and source code location details to provide context for a point of execution in a test.
Page: https://developer.apple.com/documentation/xctest/xctsourcecodecontext?language=objc

Typ: XCTSourceCodeFrame
Meaning: An object that represents a single frame in a call stack that supports retrieval of symbol information for the address.
Page: https://developer.apple.com/documentation/xctest/xctsourcecodeframe?language=objc

Instruction: [frame
  symbolInfoWithError:outError
]
Page: https://developer.apple.com/documentation/xctest/xctsourcecodeframe/3546538-symbolicationerror?language=objc
Returns: Symbol information for the address.
Variables: XCTSourceCodeFrame frame
Typ: XCTSourceCodeSymbolInfo *

Instruction: [object
  initWithCoder:coder
]
Page: https://developer.apple.com/documentation/foundation/nscoding/1416145-initwithcoder?language=objc
Effect: initialize the object with values encoded in coder
Variables: Type: NSCoding
Type object
NSCoder: coder

Instruction: [object
  encodeWithCoder:coder
]
Page: https://developer.apple.com/documentation/foundation/nscoding/1416145-initwithcoder?language=objc
Effect: update the object with values encoded in coder
Variables: Type: NSCoding
Type object
NSCoder: coder

Instruction: class.supportSecureCoding
Page: https://developer.apple.com/documentation/foundation/nscoding/1416145-initwithcoder?language=objc
Effect: Whether this class support secure coding
Variables: Class: NSObject

Typ: XCTSourceCodeSymbolInfo
Meaning: An object that contains symbolication information for a specified frame in a call stack.
Page: https://developer.apple.com/documentation/xctest/xctsourcecodesymbolinfo?language=objc

Typ: XCTSourceCodeLocation
Meaning: An object that contains a file URL and line number that represents a distinct location in source code.
Page: https://developer.apple.com/documentation/xctest/xctsourcecodelocation?language=objc

Typ: XCTestCaseRun
Meaning: The test runner manages the creation and tracking of XCTestCaseRun for each XCTestCase in an XCTestSuite.
Page: https://developer.apple.com/documentation/xctest/xctestcaserun?language=objc
Variables: XCTSourceCodeLocation codeLocation
Subtype of: XCTestRun

Typ: XCTestSuiteRun
Meaning: An object that collects information about a specific execution of a test suite.
Page: https://developer.apple.com/documentation/xctest/xctestsuiterun?language=objc
Subtype of: XCTestRun

Instruction: [testSuiteRun addTestRun:testRun]
Page: https://developer.apple.com/documentation/xctest/xctestsuiterun/1426489-addtestrun?language=objc
Effect: Add testRun to testSuiteRun
Variables: XCTestSuiteRun *testSuiteRun
TestRun *testRun;

Typ: XCTestRun
Meaning: A base class for collecting information about a specific execution of a test.
Page: https://developer.apple.com/documentation/xctest/xctestrun?language=objc

Instruction: [XCTestRun
  testRunWithTest:test
]
Page: https://developer.apple.com/documentation/xctest/xctestrun/1449654-testrunwithtest?language=objc
Returns: A new XCTestRun for test

Typ: XCTestObservation
Meaning: A protocol that defines methods the test runner calls in response to significant events during test runs.
Page: https://developer.apple.com/documentation/xctest/xctestobservation?language=objc

Instruction: [testObservation
  testBundleWillStart:bundle
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/1500772-testbundlewillstart?language=objc
Effect: Notifies the observer immediately before any tests in a test bundle begin.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testSuiteWillStart:testSuite
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/1501016-testsuitewillstart?language=objc
Effect: Notifies the observer immediately before a test suite begins executing.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testCaseWillStart:testCase
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/1501016-testsuitewillstart?language=objc
Effect: Notifies the observer immediately before a test case begins executing.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testCaseWillStart:testCase
  didRecordIssue:issue
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/3546551-testcase?language=objc
Effect: Notifies the observer when a test case reports an issue.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testCaseWillStart:testCase
  didRecordExpectedFailure:expectedFailure
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/3546551-testcase?language=objc
Effect: Notifies the observer when a test case records an expected failure.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testCaseDidFinish:testCase
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/1500326-testcasedidfinish?language=objc
Effect: Notifies the observer immediately after a test case finishes executing.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testSuite:testSuite
  didRecordIssue:issue
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/3546552-testsuite?language=objc
Effect: Notifies the observer when a test suite reports an issue.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testSuite:testSuite
  didRecordExpectedFailure:expectedFailure
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/3726092-testsuite?language=objc
Effect: Notifies the observer when a test suite records an expected failure.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testSuiteDidFinish:testSuite
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/3726092-testsuite?language=objc
Effect: Notifies the observer immediately after a test suite finishes executing.
Variables: XCTestObservation testObservation

Instruction: [testObservation
  testBundleDidFinish:testBundle
]
Page: https://developer.apple.com/documentation/xctest/xctestobservation/3726092-testsuite?language=objc
Effect: Notifies the observer immediately after all tests in a test bundle finish executing.
Variables: XCTestObservation testObservation

Typ: XCTestObservationCenter
Meaning: Provides information about the progress of test runs to registered observers
Page: https://developer.apple.com/documentation/xctest/xctestobservationcenter?language=objc

Instruction: [XCTestObservationCenter
  sharedTestObservationCenter
]
Page: https://developer.apple.com/documentation/xctest/xctestobservationcenter?language=objc
Returns: The shared XCTestObservationCenter singleton instance.

Instruction: [testObservationCenter
  addTestObserver:testObserver
]
Page: https://developer.apple.com/documentation/xctest/xctestobservationcenter?language=objc
Returns: Registers an object conforming to XCTestObservation as an observer for the current test session.
Variables: XCTestObservationCenter testObservationCenter

Instruction: [testObservationCenter
  removeTestObserver:testObserver
]
Page: https://developer.apple.com/documentation/xctest/xctestobservationcenter?language=objc
Returns: Unregisters an object conforming to XCTestObservation as an observer for the current test session.
Variables: XCTestObservationCenter testObservationCenter

Instruction: [XCTestSuite
  testSuiteWithName:name
]
Page: https://developer.apple.com/documentation/xctest/xctestsuite?language=objc
Returns: a new test suite with `name`

Instruction: [XCTestSuite
  testSuiteForBundlePath
]
Page: https://developer.apple.com/documentation/xctest/xctestsuite?language=objc
Returns: A new test suite for the bundle at given path

Instruction: [XCTestSuite
  testSuiteForTestCaseClass:testCaseClass
]
Page: https://developer.apple.com/documentation/xctest/xctestsuite/1500818-testsuitefortestcaseclass?language=objc
Returns: Creates a test suite that contains all test methods in the specified class.

Instruction: [XCTestSuite
  testSuiteForTestCaseWithName
]
Page: https://developer.apple.com/documentation/xctest/xctestsuite/1500818-testsuitefortestcaseclass?language=objc
Returns: A test suite that contains a test case with the specified name.

Instruction: [testSuite
  addTest:test
]
Page: https://developer.apple.com/documentation/xctest/xctestsuite/1500818-testsuitefortestcaseclass?language=objc
Effect: Adds a test to the test suite.
Variables: XCTestSuite *testSuite

Typ: XCTest
Meaning: An abstract base class for creating, managing, and executing tests.
Page: https://developer.apple.com/documentation/xctest/xctest?language=objc

Instruction: [test
  setUpWithCompletionHandler:completion
]
Page: https://developer.apple.com/documentation/xctest/xctest?language=objc
Effect: Override this method for asynchronous state preparation with error handling before each test. Call the completion handler after you have set up your state to notify the test system it can proceed with the next task.
Context: XCode test
Variables: XCTest test

Instruction: [test
  setUp
]
Page: https://developer.apple.com/documentation/xctest/xctest?language=objc
Effect: Provides an opportunity to reset state before calling each test method in a test case.
Context: XCode test
Variables: XCTest test

Instruction: [test
  tearDown
]
Page: https://developer.apple.com/documentation/xctest/xctest?language=objc
Effect: Provides an opportunity to perform cleanup after each test method in a test case ends.
Variables: XCTest test

Typ: XCUIElementQuery
Meaning: An object that defines the search criteria a test uses to identify UI elements.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode

Instruction: [elementQuery childrenMatchingType:type]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search finds all direct children of elements that match the original search and are of the requested type.
Variables: XCUIElementQuery *elementQuery
XCUIElementType *type
Typ: XCUIElementQuery

Instruction: [elementQuery descendantsMatchingType:type]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search finds all decendant of elements that match the original search and are of the requested type.
Variables: XCUIElementQuery *elementQuery
XCUIElementType *type
Typ: XCUIElementQuery

Instruction: [elementQuery containingPredicate:predicate]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search finds elements that match the original search that contain elements that meet the logical conditions of the provided predicate.
Variables: XCUIElementQuery *elementQuery
NSPredicate *predicate
Extra: Where possible, use NSExpression-based or format-string-based predicates with this method in preference to block-based predicates. This enables XCTest to optimize the query’s performance.
Typ: XCUIElementQuery

Instruction: [elementQuery
  containingType:elementType
  identifier:identifier
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search finds elements that match the original search that contain elements of the requested type that have an identifying property that matches a provided identifier.
Variables: XCUIElementQuery *elementQuery
XCUIElementType elementType
NSString *identifier
Typ: XCUIElementQuery

Instruction: [elementQuery
  matchingIdentifier:identifier
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search matches elements that finds the original search that have an identifying property that matches a provided identifier.
Variables: XCUIElementQuery *elementQuery
NSString *identifier
Typ: XCUIElementQuery

Instruction: [elementQuery
  matchingPredicate:predicate
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search matches elements that match the original search and also meet the logical conditions of the provided predicate.
Variables: XCUIElementQuery *elementQuery
NSPredicate *predicate
Extra: Where possible, use NSExpression-based or format-string-based predicates with this method in preference to block-based predicates. This enables XCTest to optimize the query’s performance.
Typ: XCUIElementQuery

Instruction: [elementQuery
  matchingType:elementType
  identifier:identifier
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A new query that defines a search that extends the search criteria of the receiver. The new search matches elements that match the original search of the requested type that have an identifying property that matches a provided identifier.
Variables: XCUIElementType *elementType
NSString *identifier
Typ: XCUIElementQuery

Variable: elementQuery.allElementsBoundByAccessibility
Meaning: Immediately evaluates the query and returns an array of elements bound to the resulting accessibility elements.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Variables: XCUIElementQuery elementQuery

Variable: elementQuery.allElementsBoundByIndex
Meaning: Immediately evaluates the query and returns an array of elements bound by the index of each result.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Variables: XCUIElementQuery elementQuery

Variable: elementQuery.count
Meaning: Evaluates the query and returns the number of elements that match.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Variables: XCUIElementQuery elementQuery

Variable: elementQuery.element
Meaning: The query’s single matching element. Fail if there are multiple values
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Variables: XCUIElementQuery elementQuery

Instruction: [elementQuery
  elementBoundByIndex:index
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: An element that uses an index into the query’s results to determine which underlying accessibility element to use.
Variables: XCUIElementQuery elementQuery
Typ: XCUIElement

Instruction: [elementQuery
  elementMatchingPredicate:predicate
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: An element that matches the predicate.
Variables: XCUIElementQuery elementQuery
Typ: XCUIElement*

Instruction: [elementQuery
  elementMatchingType:elementType
  identifier:identifier
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: An element that matches the provided element type and identifier.
Variables: XCUIElementQuery elementQuery
Typ: XCUIElement*

Instruction: [elementQuery
  objectForKeyedSubscript:key
]
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Returns: A descendant element matching the identifier specified by key.
Variables: XCUIElementQuery elementQuery
Typ: XCUIElement*

Variable: elementQuery.debugDescription
Meaning: Provides debugging information about the query.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Typ: NSString*
Variables: XCUIElementQuery elementQuery

Variable: XCUIIdentifierCloseWindow
Meaning: The identifier for a window’s “close” button.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Typ: NSString*
Library: XCUIElementQuery

Variable: XCUIIdentifierFullScreenWindow
Meaning: The identifier for a window’s “full screen” button.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Typ: NSString*
Library: XCUIElementQuery

Variable: XCUIIdentifierMinimizeWindow
Meaning: The identifier for a window’s “Minimize” button.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Typ: NSString*
Library: XCUIElementQuery

Variable: XCUIIdentifierZoomWindow
Meaning: The identifier for a window’s “zoom” button.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Typ: NSString*
Library: XCUIElementQuery

Typ: XCUIElementTypeQueryProvider
Meaning: A type that provides ready-made queries for locating descendant UI elements.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode
Library: XCUIElementQuery

Typ: XCUIElementTypeQueryProvider
Meaning: TODO: all of its accessors
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Context: xcode

Variable: elementTypeQueryProvider.firstMatch
Meaning: The first element that matches the query.Use the firstMatch property when you know that there can only be one possible match for an element query. When you call firstMatch, XCTest stops traversing your app's accessibility hierarchy as soon as it finds a matching element, speeding up element query resolution.
Page: https://developer.apple.com/documentation/xctest/xcuielementquery?language=objc
Typ: XCUIElement
Variables: XCUIElementTypeQueryProvider elementTypeQueryProvider
Assuming: Use the firstMatch property when you know that there can only be one possible match for an element query. When you call firstMatch, XCTest stops traversing your app's accessibility hierarchy as soon as it finds a matching element, speeding up element query resolution.

Typ: XCUIElement
Meaning: A UI element in an application.
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Subtype of: XCUIElementAttributes
XCUIElementTypeQueryProvider

Instruction: [element
  waitForExistenceWithTimeout:timeout
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Waits the amount of time you specify for the element’s exists property to become YES.
Context: xcode
Returns: NO if the timeout expires without the element coming into existence.
Variables: XCUIElement element

Instruction: element.exists
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: if the element exists within the app’s current UI hierarchy.
Context: xcode
Variables: XCUIElement element

Instruction: element.hittable
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Returns: Determines if the system can compute a hit point for the element.
Variables: XCUIElement element

Instruction: element.debugDescription
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Returns: Provides debugging information about the element.
Variables: XCUIElement element
Extra: The data in the string will vary based on the time at which it is captured, but it may include any of the following, as well as additional data:
Values for the element's attributes
The entire tree of descendants rooted at the element
The element's query
This data should be used for debugging only. Depending on any of the data as part of a test is unsupported.

Instruction: [element
  childrenMatchingType:type
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Returns: A query for all direct children of the element matching the type you specify.
Variables: XCUIElement element
Typ: XCUIElementQuery *

Instruction: [element
  descendantsMatchingType:type
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Returns: A query for all descendants of the element matching the type you specify.
Variables: XCUIElement element
Typ: XCUIElementQuery *

Instruction: [element
  typeText:text
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Types `text` into the element.
Context: xcode
Variables: XCUIElement element
Typ: XCUIElementQuery *

Instruction: [element
  typeKey:key
  modifierFlags:flags
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Types a single key that a string represents with the flags you specify.
Context: xcode
Variables: XCUIElement element
Assuming: key is a single key on a physical keyboard
Typ: XCUIElementQuery *

Instruction: [element
  performWithKeyModifiers:flags
  block:block
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Executes a block of code with a combination keystroke.
Context: xcode
Variables: XCUIElement element
Extra: This method pushes and pops the modifiers as global state without need for reference to a particular element. Inside the block, elements can be clicked on, dragged from, typed in to, and so on.

Instruction: [element
  hover
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Moves the cursor over the element.
Context: xcode
Typ: XCUIElementQuery *

Instruction: [element
  clickForDuration:duration
  thenDragToElement:otherElement
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Clicks and holds an element for a duration you specify and drags it to the other element.
Context: xcode
Variables: XCUIElement element
Extra: Specify a duration long enough to initiate a drag operation. If the element exists within a scrollable view but is offscreen, XCTest attempts to scroll to move the element onscreen before performing the click.

Instruction: [element
  clickForDuration:duration
  thenDragToElement:otherElement
  withVelocity:velocity
  thenHoldForDuration:holdDuration;
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Clicks and holds an element for a duration you specify, drags it at a velocity you specify, and holds it over another element for a duration you specify.
Context: xcode
Variables: XCUIElement element
Extra: Specify a duration long enough to initiate a drag operation. If the element exists within a scrollable view but is offscreen, XCTest attempts to scroll to move the element onscreen before performing the click.

Instruction: [element
  rightClick
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a Control-click event to a hittable point the system computes for the element.
Context: xcode
Variables: XCUIElement element
Extra: If the element exists within a scrollable view but is offscreen, XCTest will attempt to scroll the element onscreen before performing the Control-click.

Instruction: [element
  doubleClick
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a double-click event to a hittable point the system computes for the element.
Context: xcode
Variables: XCUIElement element
Extra: If the element exists within a scrollable view but is offscreen, XCTest will attempt to scroll the element onscreen before performing the Control-click.

Instruction: [element
  scrollByDeltaX:deltaX
  deltaY:deltaY
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Scrolls the view by the number of x and y pixels you specify.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  tap
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a tap event to a hittable point the system computes for the element.
Context: xcode
Variables: XCUIElement element
Extra: If the element exists within a scrollable view but is offscreen, XCTest will attempt to scroll the element onscreen before performing the tap.

Instruction: [element
  doubleTap
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a double tap event to a hittable point the system computes for the element.
Context: xcode
Variables: XCUIElement element
Extra: If the element exists within a scrollable view but is offscreen, XCTest will attempt to scroll the element onscreen before performing the double tap.

Instruction: [element
  pressForDuration:duration
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a long-press gesture to a hittable point the system computes for the element, holding for the duration you specify.
Context: xcode
Variables: XCUIElement element
Extra: If the element exists within a scrollable view but is offscreen, XCTest attempts to scroll to move the element onscreen before performing the press.

Instruction: [element
  pressForDuration:duration
  thenDragToElement:otherElement
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Initiates a press-and-hold gesture, then drags to another element.
Context: xcode
Variables: XCUIElement element
Extra: This interaction is suitable for table-cell reordering and similar operations.

Instruction: [element
  pressForDuration:duration
  thenDragToElement:otherElement
  withVelocity:velocity
  thenHoldForDuration:holdDuration
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Initiates a press-and-hold gesture, drags to another element at a velocity you specify, and holds for a duration you specify.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  twoFingerTap
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a two-finger tap event to a hittable point the system computes for the element.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  tapWithNumberOfTaps:numberOfTaps
  numberOfTouches:numberOfTouches
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends one or more taps with one or more touch points.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  swipe(Left|Right|Up|Down)
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a swipe-(Left|Right|Up|Down) gesture.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  swipe(Left|Right|Up|Down)WithVelocity:velocity
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a swipe-(Left|Right|Up|Down) gesture with a velocity you specify.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  pinchWithScale:scale
  Velocity:velocity
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a pinching gesture with two touches. Use a scale between 0 and 1 to "pinch close" or zoom out and a scale greater than 1 to "pinch open" or zoom in.
Context: xcode
Variables: XCUIElement element

Instruction: [element
  rotate:rotation
  withVelocity:velocity
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Effect: Sends a rotation gesture with two touches.
Context: xcode
Variables: XCUIElement element

Instruction: element.normalizedSliderPosition
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Returns: the position of the slider’s indicator as a normalized value, where 0 corresponds to the minimum value of the slider and 1 corresponds to its maximum value.
Variables: XCUIElement element

Instruction: [element
  adjustToNormalizedSliderPosition:normalizedSliderPosition
]
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Returns: Manipulates the UI to change value the slider displays to a new value, based on a normalized position. 0 for minimum and 1 for maximum
Variables: XCUIElement element

Typ: XCUIGestureVelocity
Meaning: A value that describes how fast a gesture moves across the screen, in pixels per second.
Page: https://developer.apple.com/documentation/xctest/xcuielement?language=objc
Context: xcode
Implementation: CGFloat

Instruction: [element
adjustTopickerWheelValue:pickerWheelValue
]
Page: https://developer.apple.com/documentation/xctest/xcuielement/1618672-adjusttopickerwheelvalue?language=objc
Effect: Changes the value that the picker wheel displays.
Context: xcode
Exception: test failure if the specified value is not available.

Instruction: [element
  coordinateWithNormalizedOffset:normalizedOffset
]
Page: https://developer.apple.com/documentation/xctest/xcuielement/1618672-adjusttopickerwheelvalue?language=objc
Context: xcode
Returns: new coordinate with a normalized offset. adding normalizedOffset multiplied by the size of the element’s frame to the origin of the element’s frame.
Typ: XCUICoordinate
Exception: test failure if the specified value is not available.

Typ: XCUIUserInterfaceSizeClass
TypMeaning: The user interface size classes you can inspect in a UI test.
Page: https://developer.apple.com/documentation/xctest/xcuielement/1618672-adjusttopickerwheelvalue?language=objc
Language: Objective-C
Context: xcode
Value: XCUIUserInterfaceSizeClassRegular
A constant that represents an element for the regular size class.
Value2: XCUIUserInterfaceSizeClassCompact
A constant that represents an element for the compact size class.
Value3: XCUIUserInterfaceSizeClassUnspecified
A constant that represents an element for the unspecified size class.

Typ: XCUIElementAttributeName
TypMeaning: A set of string constants that serves as keys for storing element attributes in a dictionary.
Page: https://developer.apple.com/documentation/xctest/xcuielement/1618672-adjusttopickerwheelvalue?language=objc
Language: Objective-C
Context: xcode
Value: TODO: all values

Typ: XCUIElementAttributes
Meaning: represent data exposed to the Accessibility system, and are available during query matching.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Context: xcode
Subtype of: XCUIElement

Variable: elementAttributes.identifier
Meaning: The element’s accessibility identifier.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: XCUIElementAttributes elementAttributes

Variable: elementAttributes.elementType
Meaning: The type of the element.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: XCUIElementAttributes elementAttributes

Variable: elementAttributes.value
Meaning: The raw value attribute of the element.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: id
Assuming: XCUIElementAttributes elementAttributes

Variable: elementAttributes.placeholderValue
Meaning: The value that is displayed when the element has no value.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: NSString*

Variable: elementAttributes.title
Meaning: The title attribute of the element.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: NSString*

Variable: elementAttributes.label
Meaning: The label attribute of the element.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: NSString*

Variable: elementAttributes.hasFocus
Meaning: whether or not the element has UI focus
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: BOOL

Variable: elementAttributes.enabled
Meaning: Whether or not the element is enabled for user interaction.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: BOOL

Variable: elementAttributes.selected
Meaning: Whether or not the element is selected.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: BOOL

Variable: elementAttributes.frame
Meaning: The frame of the element in the screen coordinate space.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: CGRect

Variable: elementAttributes.(horizontalSize|vertical)Class
Meaning: The (horizontal|vertical) size class of the element.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Typ: XCUIUserInterfaceSizeClass

Typ: XCUIElementType
TypMeaning: The types of UI element that you find, inspect, and interact with in a UI test.
Page: https://developer.apple.com/documentation/xctest/xcuielementattributes?language=objc
Language: Objective-C
Context: xcode
Value: todo

Typ: XCUIUserInterfaceSizeClass
TypMeaning: The user interface size classes you can inspect in a UI test.
Page: https://developer.apple.com/documentation/xctest/xcuiuserinterfacesizeclass?language=objc
Language: Objective-C
Context: xcode
Value: XCUIUserInterfaceSizeClassRegular
A constant that represents an element for the regular size class.
Value2: XCUIUserInterfaceSizeClassCompact
A constant that represents an element for the compact size class.
Value3: XCUIUserInterfaceSizeClassUnspecified
A constant that represents an element for the unspecified size class.

Typ: XCUIElementSnapshot
Meaning: A set of attributes to express a snapshot of an element’s attributes and descendant user interface hierarchy.
Page: https://developer.apple.com/documentation/xctest/xcuielementsnapshot?language=objc
Context: xcode

Variable: elementSnapshot.children
Meaning: descendant user interface element snapshots.
Page: https://developer.apple.com/documentation/xctest/xcuielementsnapshot?language=objc
Typ: NSArray<id<XCUIElementSnapshot>>
Variables: XCUIElementSnapshot elementSnapshot

Variable: elementSnapshot.dictionaryRepresentation
Meaning: A hierarchical dictionary representation of an element’s attributes, and all of an element’s user interface descendants.
Page: https://developer.apple.com/documentation/xctest/xcuielementsnapshot?language=objc
Typ: NSDictionary<XCUIElementAttributeName, id> *
Variables: XCUIElementSnapshot elementSnapshot

Typ: XCUIElementSnapshotProviding
Meaning: A method to capture a snapshot of an element’s attributes and descendant user interface hierarchy.
Page: https://developer.apple.com/documentation/xctest/xcuielementsnapshotproviding?language=objc
Context: xcode

Instruction: [elementSnapshotProviding
  snapshotWitherror:outError
]
Page: https://developer.apple.com/documentation/xctest/xcuielementsnapshotproviding?language=objc
Context: xcode
Returns: A snapshot of an element’s attributes and descendant user interface hierarchy.
Variables: XCUIElementSnapshotProviding elementSnapshotProviding
Typ: id<XCUIElementSnapshot>

Typ: XCUICoordinate
Meaning: A location on screen relative to some UI element.
Page: https://developer.apple.com/documentation/xctest/xcuicoordinate?language=objc
Context: xcode
Extra: Coordinates are dynamic, like the elements to which they refer, and may compute different screen locations at different times, or be invalid if the element they reference doesn’t exist.

Variable: coordinate.referencedElement
Meaning: The element that the coordinate is based on, either directly or through the coordinate from which it was derived.
Page: https://developer.apple.com/documentation/xctest/xcuicoordinate?language=objc
Variables: XCUICoordinate coordinate

Variable: coordinate.screenpoint
Meaning: The dynamically computed value of the coordinate’s location on screen.
Page: https://developer.apple.com/documentation/xctest/xcuicoordinate?language=objc
Variables: XCUICoordinate coordinate
Extra: Note that this value is dependent on the current frame of the referenced element. If the element’s frame changes, so will the value returned by this property. If the referenced element does not exist when this property is called, a test failure will be triggered. Check the referenced element’s exists property if the element may not be present.

Instruction: [coordinate
  clickForDuration:duration
  thenDragToCoordinate:otherCoordinate
]
Page: https://developer.apple.com/documentation/xctest/xcuicoordinate?language=objc
Effect: Clicks and holds for a duration you specify, then drags to the other coordinate.
Context: xcode
Variables: XCUICoordinate coordinate

Instruction: [coordinate
  coordinateWithOffset:offsetVector
]
Page: https://developer.apple.com/documentation/xctest/xcuicoordinate?language=objc
Context: xcode
Returns: a new coordinate with an absolute offset in points from the original coordinate.
Variables: XCUICoordinate coordinate

Typ: XCUIApplication
Meaning: A proxy that can launch, monitor, and terminate a test application
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Context: xcode
Subtype of: XCUIElement
Extra: Use this class to launch, monitor, and terminate your app in a UI test. Use waitForState:timeout: to launch your app and wait for it to reach an expected state before you check test conditions.

Instruction: [XCUIApplication
  new
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Context: xcode
Returns: a proxy for the application specified as the "Target Application" in Xcode's target settings.
Typ: XCUIApplication

Instruction: [application
  initWithURL:url
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: a proxy for the application at the specified file system URL.
Context: xcode
Variables: XCUIApplication application
Assuming: macOS

Instruction: [application
  init
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: a proxy for the application as the Target Application in Xcode’s target settings.
Context: xcode
Variables: XCUIApplication application
Assuming: macOS

Instruction: [application
  initWithBundleIdentifier:bundleIdentifier
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: Creates a proxy for an application for the specified bundle identifier.
Context: xcode
Variables: XCUIApplication application
Assuming: macOS

Instruction: [application
  launch
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: Launches the application. If the application is already running, this call will terminate the existing instance, to ensure a clean launch state for the newly launched instance.
Context: xcode
Returns: when the application is launched and ready to handle user events
Variables: XCUIApplication application
Assuming: macOS
Exception: Any failure in the launch sequence is reported as a test failure and halts the test at this point.

Variable: application.launchArguments
Meaning: The arguments that pass to the application on launch.
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Typ: NSArray<NSString *>
Variables: XCUIApplication application
Extra: If not modified, these are the arguments that Xcode will pass to the application on launch. The arguments can be changed, added to, or removed. Unlike NSTask, it is also legal to modify these arguments after the application has been launched. Such changes will not affect the current launch session, but will take effect the next time the application is launched.
Assuming: macOS

Variable: application.launchEnvironment
Meaning: The environment variables that pass to the application on launch.
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Typ: NSArray<NSString *, NSString *> *
Variables: XCUIApplication application
Extra: If not modified, these are the environment variables that Xcode will pass to the application on launch. The environment variables can be changed, added to, or removed. Unlike NSTask, it is also legal to modify the environment variables after the application has been launched. Such changes will not affect the current launch session, but will take effect the next time the application is launched.

Instruction: [application
  activate
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: Activates the application. Launch if necessary
Context: xcode
Returns: when the application is in state ready to handle events with this method
Variables: XCUIApplication application
Extra: If the application is launched as a result of calling this method and has previously been launched via launch, the launch arguments and environment variables from the original call to launch will be supplied again.
Exception: Any failure in the activation or launch sequence will be reported as a test failure and the test will be halted at that point.

Instruction: [application
  terminate
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: Terminates any running instance of the application.
Context: xcode
Variables: XCUIApplication application
Extra: If the application has an existing debug session via Xcode, the debugger sends a command to terminate the application. Otherwise, an appropriate platform-specific mechanism terminates the process.

Variable: application.state
Meaning: The most recent state of the application.
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Typ: XCUIApplicationState
Variables: XCUIApplication application

Typ: XCUIApplicationState
TypMeaning: The possible states of an application during UI testing.
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Language: Objective-C
Context: xcode
Value: XCUIApplicationStateUnknown
The application’s current state is not known.
Value2: XCUIApplicationStateNotRunning
The application is not running.
Value3: XCUIApplicationStateRunningBackgroundSuspended
The application is running in the background, but is suspended.
Value4: XCUIApplicationStateRunningBackground
The application is running in the background.
Value5: XCUIApplicationStateRunningForeground
The application is running in the foreground.

Instruction: [application
  waitForState:state
  timeout:timeout
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: Waits for the application to reach the specified state or timeout.
Context: xcode
Returns: whether the app is in the specified state, or can reach the specified state before the timeout.
Typ: XCUIApplicationState

Instruction: [application
  resetAuthorizationStatusForResource:resource
]
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Effect: Resets the authorization status for a protected resource.
Context: xcode
Typ: XCUIApplicationState

Typ: XCUIProtectedResource
TypMeaning: A system resource that requires user authorization to access.
Page: https://developer.apple.com/documentation/xctest/xcuiapplication?language=objc
Language: Objective-C
Context: xcode
Value: todo

Typ: XCUIScreen
Meaning: A physical screen attached to a device.
Page: https://developer.apple.com/documentation/xctest/xcuiscreen?language=objc
Context: xcode

Variable: XCUIScreen.mainScreen
Meaning: The current device’s main screen.
Page: https://developer.apple.com/documentation/xctest/xcuiscreen?language=objc
Typ: XCUIScreen

Name: The main screen
Definition: on macOS the screen that owns the menu bar
Page: https://developer.apple.com/documentation/xctest/xcuiscreen?language=objc
Context: xcode
Definition2: on iOS the primary screen of the device
Definition3: on tvOS the primary screen of the device
Construction: The current device’s main screen.

Variable: XCUIScreen.screens
Meaning: The current device’s active screens. First one is the main screen
Page: https://developer.apple.com/documentation/xctest/xcuiscreen?language=objc
Typ: NSArray<XCUIScreen *> *

Typ: XCUIScreenshotProviding
Function: - screenshot
Takes a screenshot of a screen or UI element’s current visual state.
Page: https://developer.apple.com/documentation/xctest/xcuiscreenshotproviding?language=objc
Context: xcode
Intuition: A type that can provide a screenshot of its current UI state.
Language: Objective-C

Instruction: [screenshotProviding screenshot]
Page: https://developer.apple.com/documentation/xctest/xcuiscreenshotproviding?language=objc
Context: xcode
Returns: a screenshot of this current visual state.
Variables: XCUIScreenshotProviding screenshotProviding
Where to use it: - screenshot
Takes a screenshot of a screen or UI element’s current visual state.
Typ: XCUIScreenshot*

Variable: XCUIDevice.sharedDevice
Meaning: The current device.
Page: https://developer.apple.com/documentation/xctest/xcuidevice?language=objc
Typ: XCUIDevice*
Value3: - screenshot
Takes a screenshot of a screen or UI element’s current visual state.

Variable: XCUIDevice.supportsPointerInteraction
Meaning: A Boolean value that indicates if the device supports pointer interaction.
Page: https://developer.apple.com/documentation/xctest/xcuidevice?language=objc
Extra: XCUIDevice* device

Instruction: [device
  pressButton:button
]
Page: https://developer.apple.com/documentation/xctest/xcuidevice?language=objc
Effect: simulates the user pressing button
Context: xcode
Extra: XCUIDevice* device

Variable: device.orientation
Meaning: The orientation of the device.
Page: https://developer.apple.com/documentation/xctest/xcuidevice?language=objc
Typ: UIDeviceOrientation
Extra: XCUIDevice* device

Variable: device.siriService
Meaning: An object that represents the Siri interface on the device.
Page: https://developer.apple.com/documentation/xctest/xcuidevice?language=objc
Typ: XCUISiriService *
Extra: XCUIDevice* device

Instruction: [device
  rotateDigitalCrownByDelta:rotationalDelta
]
Page: https://developer.apple.com/documentation/xctest/xcuidevice?language=objc
Effect: Simulates the user rotating the Digital Crown on an Apple Watch by the delta amount.
Context: xcode
Variables: XCUIDevice* device
Extra: Provide a positive value for rotationalDelta to indicate scrolling upward or a negative value to indicate scrolling downward, regardless of the orientation of the watch. A rotationalDelta value of 1.0 indicates a full rotation of the Digital Crown.

Instruction: [device
  rotateDigitalCrownByDelta:rotationalDelta
  withVelocity:velocity
]
Page: https://developer.apple.com/documentation/xctest/xcuidevice/3784680-rotatedigitalcrownbydelta?language=objc
Effect: Simulates the user rotating the Digital Crown on an Apple Watch by the delta amount and speed you provide.
Context: xcode
Variables: XCUIDevice* device

Variable: XCT_UI_TESTING_AVAILABLE
Meaning: 1 if the current environment supports UI testing, otherwise 0.
Page: https://developer.apple.com/documentation/xctest/xcuidevice/3784680-rotatedigitalcrownbydelta?language=objc
Variables: XCUIDevice* device

Typ: XCUISiriService
Meaning: A proxy that simulates a device’s Siri interface.
Page: https://developer.apple.com/documentation/xctest/xcuisiriservice?language=objc
Context: xcode
Extra: TODO: its method and properties

Typ: XCUIRemote
Meaning: Simulates interaction with a physical remote control.
Page: https://developer.apple.com/documentation/xctest/xcuisiriservice?language=objc
Context: xcode
Extra: TODO: its method and properties

Typ: UIDeviceOrientation
TypMeaning: the physical orientation of the device.
Page: https://developer.apple.com/documentation/uikit/uideviceorientation?language=objc
Language: Objective-C
Context: xcode
Value: UIDeviceOrientationUnknown
The orientation of the device cannot be determined.
Value2: UIDeviceOrientationPortrait(|UpsideDown)
The device is in portrait mode (|with the home button at top), with the device held upright and the Home button at the bottom.
Value3: UIDeviceOrientationLandscape(Left|Right)
The device is in landscape mode, with the device held upright and the Home button on the (right|left) side.
Value4: UIDeviceOrientationFace(Up|Down)
The device is held parallel to the ground with the screen facing (up|down)wards.

Instruction: UIDeviceOrientationIsPortrait(orientation)
Page: https://developer.apple.com/documentation/uikit/uideviceorientation?language=objc
Context: xcode
Returns: Returns a Boolean value that indicates whether the device is in a portrait orientation.

Instruction: UIDeviceOrientationIsLandscape(orientation)
Page: https://developer.apple.com/documentation/uikit/uideviceorientation?language=objc
Context: xcode
Returns: Returns a Boolean value that indicates whether the device is in a landscape orientation.

Instruction: UIDeviceOrientationIsFlat(orientation)
Page: https://developer.apple.com/documentation/uikit/uideviceorientation?language=objc
Context: xcode
Returns: Whether the face is up or down

Instruction: UIDeviceOrientationIsValidInterfaceOrientation(orientation)
Page: https://developer.apple.com/documentation/uikit/uideviceorientation?language=objc
Context: xcode
Returns: whether the orientation is portrait or landscape

Typ: XCUIDeviceButton
TypMeaning: A physical button on an iOS device.
Page: https://developer.apple.com/documentation/xctest/xcuidevicebutton?language=objc
Language: Objective-C
Context: xcode
Value: XCUIDeviceButtonHome
The device’s home button.
Value2: XCUIDeviceButtonVolumeUp
The device’s volume up button.
Value3: XCUIDeviceButtonVolumeDown
The device’s volume down button.

Typ: XCTMutableIssue
Meaning: A mutable object that represents a test failure, and includes source code call stacks for test reporting and investigation.
Page: https://developer.apple.com/documentation/xctest/xctmutableissue?language=objc
Context: xcode

Instruction: [sourceCodeSymbolInfo
  initWithImageName:imageName
  symbolName:symbolName
  location:location
]
Page: https://developer.apple.com/documentation/xctest/xctsourcecodesymbolinfo?language=objc
Effect: Initializes an instance with a binary image name, source code location, and symbol name.
Context: xcode
Variables: XCTSourceCodeSymbolInfo sourceCodeSymbolInfo

Typ: XCTExpectedFailure
Meaning: An object that represents an expected test failure.
Page: https://developer.apple.com/documentation/xctest/xctexpectedfailure?language=objc
Context: xcode
Extra: The test system creates and tracks instances of XCTExpectedFailure when you call one of the XCTExpectFailure functions. Don’t create or use them directly.

Typ: XCTExpectedFailureOptions
Meaning: Options that determine how the test matches the expected failure to an actual test failure, and whether an unfulfilled expected failure results in a test failure.
Page: https://developer.apple.com/documentation/xctest/xctexpectedfailureoptions?language=objc
Context: xcode

Instruction: [XCTExpectedFailureOptions
  nonStrictOptions
]
Page: https://developer.apple.com/documentation/xctest/xctexpectedfailureoptions?language=objc
Context: xcode
Returns: Options that specify that an unfulfilled expected failure doesn’t generate a test failure.
Typ: XCTExpectedFailureOptions

Meaning: Constants to represent keys that have no typewritten equivalent.
Page: https://developer.apple.com/documentation/xctest/xcuikeyboardkey?language=objc
Context: xcode
Implementation: NSString *
Value: TODO the keys
Extra: These constants represent the set of modifier, navigation, function, and other keys on most keyboards.

Typ: XCUIKeyModifierFlags
TypMeaning: Flags for simulating combination keystrokes with keys, such as Control, Option, Shift, and Command.
Page: https://developer.apple.com/documentation/xctest/xcuikeymodifierflags?language=objc
Language: Objective-C
Context: xcode
Value: TODO

Typ: XCTMeasureOptions
Meaning: Options to control the gathering of performance measurements during tests.
Page: https://developer.apple.com/documentation/xctest/xctmeasureoptions?language=objc
Context: xcode

Instruction: XCTMeasureOptions.defaultOptions
Page: https://developer.apple.com/documentation/xctest/xctmeasureoptions?language=objc
Context: xcode
Returns: The default measurement options.

Variable: measureOptions.invocationOptions
Meaning: Options that define whether measurement is automatically or manually controlled.
Page: https://developer.apple.com/documentation/xctest/xctmeasureoptions?language=objc
Typ: XCTMeasurementInvocationOptions
Variables: XCTMeasureOptions measureOptions

Typ: XCTMeasurementInvocationOptions
TypMeaning: Test measurement options that control how measurement starts and stops.
Page: https://developer.apple.com/documentation/xctest/xctmeasureoptions?language=objc
Language: Objective-C
Context: xcode
Value: XCTMeasurementInvocationNone
An invocation option that specifies that the test automatically takes measurements at the beginning and ending of a measure block.
Value2: XCTMeasurementInvocationManuallyStart
An invocation option that specifies that the test starts taking measurements when the startMeasuring() function is called.
Value3: XCTMeasurementInvocationManuallyStop
An invocation option that specifies that the test stops taking measurements when the stopMeasuring() function is called.

Variable: measureOptions.iterationCount
Meaning: The number of times the performance test measures its block.
Page: https://developer.apple.com/documentation/xctest/xctmeasureoptions?language=objc
Typ: XCTMeasureOptions *measureOptions
Extra: A performance test runs its block iterationCount+1 times, ignoring the first iteration and recording metrics for the remaining iterations. The test ignores the first iteration to reduce measurement variance associated with “warming up” caches and other first-run behavior.

Typ: XCTMetric
Meaning: Objects that gather metrics during performance tests must conform to XCTMetric. Before you create your own conforming objects, first use the metrics classes that XCTest supplies.
Page: https://developer.apple.com/documentation/xctest/xctmetric?language=objc
Context: xcode

Instruction: [metric
  willBeginMeasuring
]
Page: https://developer.apple.com/documentation/xctest/xctmetric?language=objc
Effect: A method that XCTest calls when it's ready to begin running the measured code.
Context: xcode
Variables: XCTMetric metric
Extra: XCTest calls this method before it runs a test’s measure() or measure(metrics:) block. It calls the method once for each iteration of a performance test. Use this method to start gathering measurements.

Instruction: [metric
  didStopMeasuring
]
Page: https://developer.apple.com/documentation/xctest/xctmetric?language=objc
Effect: A method that XCTest calls when it has finished running the measured code.
Context: xcode
Variables: XCTMetric metric
Extra: XCTest calls this method when it has finished running the code in the performance test’s measure() or measure(metrics:) block. It calls the method once for each iteration of a performance test. Use this method to finish gathering measurements.

Instruction: [metric
  reportMeasurementsFromStartTime:startTime
  toEndTime:endTime
  error:error;
]
Page: https://developer.apple.com/documentation/xctest/xctmetric?language=objc
Context: xcode
Returns: An array of the measurements gathered by this metric during the requested interval.
Variables: XCTMetric metric
Extra: Report the measurements gathered during the execution of measured code in a performance test. Use the startTime and endTime parameters to refine the accuracy of the reported measurements.

Typ: XCTCPUMetric
Meaning: A metric to record information about CPU activity during a performance test.
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Context: xcode
Variables: XCTMetric metric
Subtype of: XCTMetric

Instruction: [cpuMetric
  init
]
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Effect: Creates a CPU metric that records data for the current process.
Context: xcode
Variables: XCTCPUMetric cpuMetric

Instruction: [cpuMetric
  initWithApplication:application
]
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Effect: Creates a CPU metric that records data for the requested app.
Context: xcode
Variables: XCTCPUMetric cpuMetric

Instruction: [cpuMetric
  initLimitingToCurrentThread:limitToCurrentThread
]
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Effect: Creates a CPU metric that optionally records data only for the current thread.
Context: xcode
Variables: XCTCPUMetric cpuMetric

Typ: XCTMetric
Meaning: A metric to record the time that elapses during a performance test.
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Context: xcode
Subtype of: XCTClockMetric

Typ: XCTMemoryMetric
Meaning: A metric to record the physical memory that a performance test uses.
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Context: xcode
Subtype of: XCTMetric

Typ: XCTOSSignpostMetric
Meaning: This metric captures the time that elapses between the begin and end events for a specific named os_signpost(_:dso:log:name:signpostID:) region. It doesn’t record any results when there isn't a matching pair of begin and end events.
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Context: xcode
Subtype of: XCTMetric

Instruction: [osSignpostMetric
  initWithSubsystem:subsystem
  category:category
  name:name
]
Page: https://developer.apple.com/documentation/xctest/xctcpumetric?language=objc
Effect: Creates a metric to record a specific signpost.
Context: xcode
Variables: XCTOSSignpostMetric osSignpostMetric

Typ: XCTStorageMetric
Meaning: A metric to record the amount of data that a performance test logically writes to storage.
Page: https://developer.apple.com/documentation/xctest/xctossignpostmetric/3563917-navigationtransitionmetric?language=objc
Context: xcode
Subtype of: XCTMetric
Extra: The logical size of data written is the number of bytes in all requests to write to the disk. The logical size can be different from the size of physically written data, based on how the file system organizes data, and the fact that the disk controller replaces content in fixed-size blocks.

Typ: XCTApplicationLaunchMetric
Meaning: A metric to record the application launch duration for a performance test.
Page: https://developer.apple.com/documentation/xctest/performance_tests?language=objc
Context: xcode
Subtype of: XCTMetric

Typ: XCTPerformanceMeasurement
Meaning: A measurement from a single iteration of a performance test.
Page: https://developer.apple.com/documentation/xctest/performance_tests?language=objc
Context: xcode

Typ: XCTPerformanceMeasurementTimestamp
Meaning: A point in time that captures the start or finish of a performance test iteration.
Page: https://developer.apple.com/documentation/xctest/xctperformancemeasurement?language=objc
Context: xcode