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 d22d42d4f4ec9526fb8781f86363672c98fcde00
parent df3a9a82c55ef4fbcc691467d54f7247b24e9194
Author: triesap <tyson@radroots.org>
Date:   Fri, 28 Aug 2026 18:04:09 +0000

test: close persona settings before add flows

- dismiss the ordinary account sheet after reading each public identity
- keep Add navigation on visible semantic buttons at accessibility text size
- record the exact forward-repair commit in deterministic result evidence
- validate repair ancestry before starting the remotely bound persona run

Diffstat:
MRadrootsUITests/RadrootsRemoteQualificationUITests.swift | 10++++++++++
Mscripts/xcode.sh | 17+++++++++++++++--
2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/RadrootsUITests/RadrootsRemoteQualificationUITests.swift b/RadrootsUITests/RadrootsRemoteQualificationUITests.swift @@ -633,6 +633,16 @@ final class RadrootsRemoteQualificationUITests: XCTestCase { else { throw QualificationError.invalidPublicKey } + let back = app.navigationBars.buttons["Me"].firstMatch + XCTAssertTrue(back.waitForExistence(timeout: 10)) + back.tap() + let done = app.navigationBars.buttons["Done"].firstMatch + XCTAssertTrue(done.waitForExistence(timeout: 10)) + done.tap() + XCTAssertTrue( + app.descendants(matching: .any)["radroots.support.me.sheet"] + .waitForNonExistence(timeout: 10) + ) return value } diff --git a/scripts/xcode.sh b/scripts/xcode.sh @@ -207,10 +207,19 @@ case "$operation" in source_commit=$(git rev-parse HEAD) source_tree=$(git rev-parse 'HEAD^{tree}') upstream=$(git rev-parse '@{upstream}') + persona_repair_commit=${RADROOTS_IOS_UI_TEST_FORWARD_REPAIR_COMMIT:-} if [[ "$source_commit" != "$upstream" ]]; then echo "error: persona qualification source is not equal to its configured upstream" >&2 exit 1 fi + if [[ -n "$persona_repair_commit" ]]; then + if [[ ! "$persona_repair_commit" =~ ^[0-9a-f]{40}$ ]] || \ + ! git merge-base --is-ancestor "$persona_repair_commit" "$source_commit" + then + echo "error: persona forward-repair commit is invalid" >&2 + exit 1 + fi + fi python3 scripts/local-social-fixture.py verify-persona-fixture \ --fixture "$persona_fixture" \ --fixture-schema test-fixtures/local-social-personas.v1.schema.json \ @@ -289,7 +298,7 @@ case "$operation" in exit "$test_status" fi if [[ "$scenario" == persona ]]; then - python3 scripts/local-social-fixture.py "$evidence_command" \ + persona_result_command=(python3 scripts/local-social-fixture.py "$evidence_command" \ --fixture "$persona_fixture" \ --fixture-schema test-fixtures/local-social-personas.v1.schema.json \ --result-schema test-fixtures/local-social-persona-results.v1.schema.json \ @@ -299,7 +308,11 @@ case "$operation" in --source-commit "$source_commit" \ --source-tree "$source_tree" \ --run-id "$qualification_run_id" \ - --simulator-id "$simulator_id" + --simulator-id "$simulator_id") + if [[ -n "$persona_repair_commit" ]]; then + persona_result_command+=(--forward-repair-commit "$persona_repair_commit") + fi + "${persona_result_command[@]}" else python3 scripts/local-social-fixture.py "$evidence_command" --evidence "$evidence" fi