field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

commit 7afbc3b60046362e6f12eb677ab202e9768e91d5
parent 67ae44b4b094d73c3272e706ef51eb12edc5b759
Author: triesap <tyson@radroots.org>
Date:   Fri, 28 Aug 2026 18:23:16 +0000

test: qualify virtualized photo evidence

- Wait for the ordinary Photo preparation status before inspecting the form.
- Scroll the visible Add surface until SwiftUI materializes the prepared row.
- Require the governed prepared-media control to exist and remain unobscured.
- Keep the deterministic persona lane bound to ordinary UI interactions.

Diffstat:
MRadrootsUITests/RadrootsRemoteQualificationUITests.swift | 21+++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/RadrootsUITests/RadrootsRemoteQualificationUITests.swift b/RadrootsUITests/RadrootsRemoteQualificationUITests.swift @@ -823,10 +823,23 @@ final class RadrootsRemoteQualificationUITests: XCTestCase { XCTAssertTrue(library.waitForExistence(timeout: 10)) XCTAssertTrue(library.isEnabled) library.tap() - guard app.descendants(matching: .any)["radroots.add.media.prepared"] - .waitForExistence(timeout: 60) - else { - XCTFail("The governed Photo update image was not prepared") + let preparedStatus = app.staticTexts.matching( + identifier: "radroots.add.status" + ).matching( + NSPredicate(format: "label == 'Photo prepared. Add descriptive text before publishing.'") + ).firstMatch + guard preparedStatus.waitForExistence(timeout: 60) else { + XCTFail("The governed Photo update image preparation did not complete") + throw QualificationError.missingProductSurface + } + let prepared = app.descendants(matching: .any)["radroots.add.media.prepared"] + scrollTo(app, element: prepared) + guard prepared.waitForExistence(timeout: 10) else { + XCTFail("The governed prepared Photo update was unavailable through the visible UI") + throw QualificationError.missingProductSurface + } + guard prepared.isHittable else { + XCTFail("The governed prepared Photo update was obscured") throw QualificationError.missingProductSurface } case .event: