Skip to content

demo: Scenario Lab for PR #126 / issue #125 - #1

Open
SynurDevelopers wants to merge 5 commits into
fix/ios-focus-pathfrom
demo/scenario-lab
Open

SynurDevelopers wants to merge 5 commits into
fix/ios-focus-pathfrom
demo/scenario-lab

Conversation

@SynurDevelopers

@SynurDevelopers SynurDevelopers commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Demo PR only: This branch is for manual validation of upstream PR #126. It is not intended to be merged into the library fix.

Summary

This PR adds Scenario Lab to the existing example app. The lab turns the manual checklist for issue #125 into a guided, repeatable test flow.

Scenario Lab provides:

  • 47 guided scenarios covering focus requests, navigation timing, VoiceOver, autofocus, FocusTrap, focus ordering, events, recycling, and memory;
  • instructions and expected results for each scenario;
  • Pass, Fail, or Skip results with optional notes;
  • results that persist across app launches through AsyncStorage;
  • JSON and Markdown exports through the Share sheet; and
  • seven Jest suites with 16 tests covering the scenario registry, navigation contract, result storage, event log, and exports.

Run the demo

git clone https://github.com/SynurDevelopers/react-native-external-keyboard.git
cd react-native-external-keyboard
git checkout demo/scenario-lab
yarn
cd example/ios
pod install
cd ../..
yarn example ios

Open Scenario Lab from the example app home screen.

For hardware, VoiceOver, Simulator, and Instruments requirements, see the Scenario Lab guide.

Scope

The demo is stacked on fix/ios-focus-path. It changes the example app and its test configuration; it does not change the iOS library implementation from upstream PR ArturKalach#126.

Supporting changes include:

  • adding AsyncStorage for result persistence;
  • adding Jest configuration and test dependencies for the demo;
  • correcting the root yarn example workspace target;
  • declaring the existing disabled prop in UseKeyboardFocusContainerProps; and
  • replacing the unused LegacyRef import in MazeRender.tsx with RefObject.

The final two changes fix pre-existing TypeScript errors. They do not change runtime behavior.

Validation

Completed:

  • yarn typecheck
  • yarn test example/__tests__ — 16 tests across seven suites
  • ESLint on the changed files — passed; only existing inline-style warnings remain

Still required:

  • Build and open Scenario Lab on the iOS Simulator.
  • Run representative scenarios on a physical device with a hardware keyboard.
  • Confirm that results persist after relaunch and export correctly.

…h#126

Guided 47-scenario lab in the example app with results persistence,
registry parity tests, and nested navigation for issue ArturKalach#125 / PR ArturKalach#126.

red-confirmed: registry parity failed before SCENARIO_REGISTRY existed
yokoten: pattern not found
saga-ledger: not-applicable
schema-truth: passed
backend-test: not-applicable
[self-reviewed]
[accepted-trade-off: type-only tsc unblocks; no runtime change]

Co-authored-by: Cursor <cursoragent@cursor.com>
@SynurDevelopers SynurDevelopers self-assigned this Aug 26, 2026
Synur Developer and others added 2 commits August 26, 2026 19:01
Fresh clones have no global `pod`. The RN CLI also aborted because
Podfile.lock was 1.16.2 while the example Gemfile installs 1.15.2.
Align the lockfiles and add `yarn example pods`.

red-confirmed: command not found: pod; lockfile 1.16.2 vs executable 1.15.2
yokoten: not-applicable
saga-ledger: not-applicable
schema-truth: not-applicable
backend-test: not-applicable
[self-reviewed]
[accepted-trade-off: regenerate Podfile.lock with CocoaPods 1.15.2]

Co-authored-by: Cursor <cursoragent@cursor.com>
Homebrew Ruby 4 cannot run Bundler 1.17 (String#untaint) or CocoaPods
1.15 (missing default gems). yarn example pods now uses /usr/bin/bundle.

red-confirmed: Bundler 1.17.2 untaint NoMethodError on Ruby 4.0
yokoten: not-applicable
saga-ledger: not-applicable
schema-truth: not-applicable
backend-test: not-applicable
[self-reviewed]

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant