Run on iOS
Native React Native (no WebView) hosted in .NET MAUI, talking to the in-process backend over
127.0.0.1:5001. Prereqs: Xcode + a booted simulator, CocoaPods, and the AXe CLI
(brew install cameroncooke/axe/axe) for driving the UI.
Build and run
Run in order from the repo root:
./src/Client.MAUI/Scripts/build-rn-frameworks.sh --simulator-only(runspod installon first use). Done whensrc/Client.MAUI/Frameworks/holds the xcframeworks + a simulator static-lib build../src/Client.MAUI/Scripts/generate-rn-linker-flags.sh../src/Client.MAUI/Scripts/bundle-js.sh. Done whensrc/Client.MAUI/Resources/Raw/main.jsbundleexists../src/Client.MAUI/Scripts/e2e-ios.sh(add--udid <UDID>for a specific simulator). This builds the app, installs it, launches, and proves the round-trip. Done when it printsiOS end-to-end test PASSED.
Steps 1-3 produce the gitignored artifacts the build consumes; the csproj fails loudly if they are missing.
Drive or screenshot the running UI
RN testID becomes the accessibility identifier (AXUniqueId) for the input and button; plain Text is
matched by its visible label.
- Inspect:
axe describe-ui --udid <UDID>. - Add a note:
axe tap --id notes.text.input --udid <UDID>,axe type 'Buy groceries' --udid <UDID>,axe tap --id notes.add.button --udid <UDID>. - Screenshot:
xcrun simctl io <UDID> screenshot shot.png(dismiss the debug LogBox banner first if it is showing).