Show action buttons in export previews
QLPreviewController only renders its share, print and open-in actions when it is inside a navigation controller, so diagram and report previews were dead ends. Wrap it in one, add an explicit Done button and assert both in a UI test.
This commit is contained in:
@@ -40,6 +40,50 @@ final class SystemExportButtonUITests: XCTestCase {
|
||||
)
|
||||
}
|
||||
|
||||
@MainActor
|
||||
func testReportPreviewOffersActionButtons() throws {
|
||||
let app = launch(arguments: ["--uitest-reset-data", "--uitest-sample-data"])
|
||||
|
||||
openFirstSystem(in: app)
|
||||
|
||||
let shareButton = app.buttons["system-overview-share-button"]
|
||||
XCTAssertTrue(shareButton.waitForExistence(timeout: 15))
|
||||
shareButton.tap()
|
||||
|
||||
let reportItem = app.buttons.matching(
|
||||
NSPredicate(format: "label CONTAINS[c] 'PDF'")
|
||||
).firstMatch
|
||||
XCTAssertTrue(reportItem.waitForExistence(timeout: 10))
|
||||
reportItem.tap()
|
||||
|
||||
// Quick Look lives in its own navigation stack; the Done button proves
|
||||
// the navigation bar exists, the share item proves the file can leave
|
||||
// the preview.
|
||||
let doneButton = app.buttons["quick-look-done-button"]
|
||||
XCTAssertTrue(
|
||||
doneButton.waitForExistence(timeout: 60),
|
||||
"Quick Look preview must be embedded in a navigation bar"
|
||||
)
|
||||
|
||||
// Scope the action lookup to the preview's own navigation bar so the
|
||||
// Overview share button underneath can never satisfy it.
|
||||
let previewBar = app.navigationBars.containing(
|
||||
.button,
|
||||
identifier: "quick-look-done-button"
|
||||
).firstMatch
|
||||
XCTAssertTrue(previewBar.waitForExistence(timeout: 10))
|
||||
|
||||
let actionButtons = previewBar.buttons.allElementsBoundByIndex
|
||||
.filter { $0.identifier != "quick-look-done-button" }
|
||||
XCTAssertFalse(
|
||||
actionButtons.isEmpty,
|
||||
"Quick Look preview must offer an action button to share or open the file"
|
||||
)
|
||||
|
||||
doneButton.tap()
|
||||
XCTAssertTrue(shareButton.waitForExistence(timeout: 10))
|
||||
}
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
private func launch(arguments: [String]) -> XCUIApplication {
|
||||
|
||||
Reference in New Issue
Block a user