-
Notifications
You must be signed in to change notification settings - Fork 919
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Xcode 16 in CI #1306
Xcode 16 in CI #1306
Conversation
120eb0e
to
b51ab0e
Compare
… applied The UITextEffectsWindow directly uses a private initializer, bypassing the public initializer. The `[UIWindow init]` implementation will call through to this private designated initializer, so overriding both is unnecessary. I've added an assertion to the swizzle helpers to prevent this from silently failing in the future if the private APIs change.
There were cases where we were not identifying animations that were still in progress. For example, if I turn on the simulator slow animations setting, we don't wait a sufficient amount of time for animations to complete. This was consistently showing up when running -[TypingTests testEnteringTextIntoFirstResponder]`. As this test was failing on Xcode 16 in CI, it seems like this change is needed to get KIF working reliably.
…er speed When animations are set to 100x speed, the text field popover control is presented without animations. This causes issues in the call to waitForAnimations, because the presentation still happens after some delay. This is a crude hack to prevent significantly sped up animations from failing to tap on popovers.
5163bf0
to
25645e8
Compare
} | ||
} else if (currentTime > completionTime) { | ||
// Otherwise, use the completion time to determine if the animation has been completed. | ||
// This doesn't seem to always be exactly right however. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Curious about the cases where it's not quite right, can you elaborate?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What I was seeing was when running TypingTests.testEnteringTextIntoFirstResponder
, it would try to tap on "Select All" before it was finished being presented on Xcode 16. For some reason, startTime + duration was before the animation completed if I was watching it run in the simulator.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work, thanks for taking this on.
Configure KIF CI to run on Xcode 16.0 & iOS 18.0, bringing us to a total of 6 CI configurations. I've moved the one that does the extra validation to the Xcode 16 build part. If I could test iOS 16 w/ Xcode 15, I'd drop support for Xcode 14.3.1, but that isn't set up on GH hosted runners and I think it is worth still testing on iOS 16.
Aside from needing to land the fix for UICollectionView asserts in #1307,
TypingTests testEnteringTextIntoFirstResponder
was also failing on CI and required some behavior changes to get them working reliably. The behavior was that we were attempting to tap "Select All" after a long press, but we weren't waiting long enough for the popover control to appear. Tapping too early was then dismissing the popover rather than actually performing a "Select All" operation.The KIF framework functional changes are:
I also took this opportunity to speed up the test execution time by a couple seconds by dropping 2 second
longPress
actions to be 1s instead. This wasn't necessary, but I was running some tests that used long presses a lot and it seemed like a nice small improvement.You can review each of these changes in the individual commits, which I do not plan to squash on merging this PR.