Fix flaky UI tests: increase calendar wait timeouts and disable parallel UI testing
Calendar navigation buttons used shortTimeout (5s) which was too tight under simulator load, causing cascading failures in wizard and trip saving tests. Bumped to defaultTimeout (15s) and disabled parallel execution for UI tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -253,20 +253,20 @@ struct TripWizardScreen {
|
||||
let targetIdx = monthOrder.firstIndex(of: targetMonth) {
|
||||
if currentIdx > targetIdx {
|
||||
previousMonthButton.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
previousMonthButton.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
previousMonthButton.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
} else if currentIdx < targetIdx {
|
||||
nextMonthButton.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
nextMonthButton.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
nextMonthButton.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
} else {
|
||||
break
|
||||
}
|
||||
} else {
|
||||
nextMonthButton.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
nextMonthButton.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
nextMonthButton.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
}
|
||||
} else {
|
||||
nextMonthButton.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
nextMonthButton.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
nextMonthButton.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
}
|
||||
monthAttempts += 1
|
||||
}
|
||||
@@ -280,27 +280,27 @@ struct TripWizardScreen {
|
||||
let startFallback = dayCells.element(boundBy: 0)
|
||||
let endFallback = dayCells.element(boundBy: min(4, max(1, dayCells.count - 1)))
|
||||
startFallback.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
startFallback.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
startFallback.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
endFallback.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
endFallback.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
endFallback.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
return
|
||||
}
|
||||
|
||||
// Select start date — scroll calendar grid into view first
|
||||
startBtn.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
startBtn.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
startBtn.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
|
||||
// Select end date
|
||||
let endBtn = dayButton(endDay)
|
||||
if endBtn.exists {
|
||||
endBtn.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
endBtn.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
endBtn.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
} else {
|
||||
let dayCells = app.buttons.matching(NSPredicate(format: "identifier BEGINSWITH 'wizard.dates.day.'"))
|
||||
guard dayCells.count > 1 else { return }
|
||||
let fallback = dayCells.element(boundBy: min(4, max(1, dayCells.count - 1)))
|
||||
fallback.scrollIntoView(in: app.scrollViews.firstMatch)
|
||||
fallback.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap()
|
||||
fallback.waitUntilHittable(timeout: BaseUITestCase.defaultTimeout).tap()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user