<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "XCTest",
  "identifier" : "/documentation/XCTest/XCTWaiter/wait(for:timeout:)-swift.method",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "XCTest"
    ],
    "preciseIdentifier" : "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:"
  },
  "title" : "wait(for:timeout:)"
}
-->

# wait(for:timeout:)

Waits on a group of expectations for up to the specified timeout.

```
func wait(for expectations: [XCTestExpectation], timeout seconds: TimeInterval) -> XCTWaiter.Result
```

## Parameters

`expectations`

An array of expectations the test must satisfy.

`seconds`

The time, in seconds, the test allows for the fulfillment of the expectations. The default timeout allows the test to run until it reaches its execution time allowance.

## Return Value

A value describing the outcome of waiting for `expectations`.

## Discussion

The following example demonstrates how to wait on exceptions with a timeout specified:

```objc
- (void)testSprockets {
    NSSprocket *sprocket = [[NSSprocket alloc] init];
    
    XCTestExpectation *sprocketLoaded = [self expectationWithDescription:@"sprocket loaded"];
    [sprocket loadUsingBlock:^ (NSUInteger toothCount) {
        if (toothCount == 6) {
            [sprocketLoaded fulfill];
        }
    }];

    // This usually takes a while. Wait 10s.
    [self waitForExpectations:@[sprocketLoaded] timeout:10.0];

    id orbitWobbled = [self keyValueObservingExpectationForObject:sprocket
                                                          keyPath:@"orbitAngle.doubleValue"
                                                    expectedValue:@90.0];
    dispatch_async(myQueue, ^ {
        [sprocket wobbleOrbit];
    });
    // Don't know how long to wait, but this is usually fast?
    [self waitForExpectations:@[orbitWobbled] timeout:0.1];
}
```

Expectations can appear in the `expectations` array only once.

The call may return before the timeout if the test fulfills all the expectations you provide.

In Objective-C code, you might use an expectation to wait on a call to an interface that uses a completion handler to return a result. From Swift code, consider calling `withCheckedContinuation(function:_:)` to use <doc://com.apple.documentation/documentation/Swift/concurrency> instead of an expectation to wait on the result of a completion handler.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)