Skip to content

Releases: majdukovic/frontrow

v0.1.0 — First public release

Choose a tag to compare

@majdukovic majdukovic released this 11 May 17:04

FrontRow is an open-source React Native ticketing app built as a QA automation training playground. Same testID contract carries through to Maestro, Appium, Espresso, and XCUITest, with a deep QA Debug Menu, deterministic seed scenarios, and a bridged native screen (Swift + Kotlin) on top.

Try it out

Android — FrontRow.apk

Release-variant, signed with a debug keystore (sideload only — not Play Store ready). Works on emulators and real devices with USB debugging enabled.

adb install FrontRow.apk
adb shell am start -n app.frontrow.qa/.MainActivity

Or copy the APK to the device, tap it in Files, and accept the "install from unknown source" prompt.

iOS — FrontRow.app.zip

Release build for the iOS Simulator on Apple Silicon (arm64) only. Will not run on a physical iPhone or on Intel Macs — for those, build from source.

unzip FrontRow.app.zip
xcrun simctl list devices booted          # confirm a sim is running
xcrun simctl install booted FrontRow.app
xcrun simctl launch booted app.frontrow.qa

Or drag-and-drop the unzipped .app onto a Simulator window.

What's inside

  • Realistic product surfaces — onboarding, browse/search/filter, infinite pagination, buy flow with tier picker, ticket detail with QR + cancel + transfer, edit profile with dirty-state guard, forgot-password (email → OTP → reset), notifications inbox, offline banner.
  • QA Debug Menu — Build info · Jump-to-screen · Device-capability demos · Seed scenarios · Time travel · Force error (4xx / 5xx / timeout / offline) · Network latency profiles · Locale override · Replay onboarding · Fake push · Crash · Failure triggers (8 toggles) · IAP outcome control · Analytics event log · Reset.
  • Hand-rolled native screen — Swift UIViewController (iOS) + Kotlin AppCompatActivity (Android) bridged to JS so testIDs carry through to raw native surfaces. Open from Debug → Native demo.
  • Stable test IDs — central registry in src/testIds.ts. ESLint plugin (eslint-plugin-frontrow) flags any interactive component missing a testID or accessibilityLabel.
  • 28 Maestro flows across smoke / events / auth / tickets / billing / capabilities / debug / native.
  • 181 Jest tests for state, hooks, services, and deep-link routing.

First five minutes

  1. Onboarding → swipe or skip.
  2. Sign in (demo creds pre-filled).
  3. Browse events, buy a ticket, see it in My Tickets with a QR.
  4. Visit the Debug tab → try Scenarios → Expired tickets, Network → Force error → 5xx, Device capabilities → Native demo, Time travel → +1w.
  5. Trigger a deep link from a terminal:
    xcrun simctl openurl booted "frontrow://debug/seed/many_events"

Full deep-link catalog: docs/DEEPLINKS.md.

Notes

  • The Debug tab is intentionally visible in this release build — exposing the QA surface is the whole point of the app. If you fork FrontRow as the base for a real product, gate the registration behind __DEV__ or a build flag.
  • The APK is debug-keystore-signed because it's meant as a sideload demo, not a Play Store build.
  • No crash reporting is wired in (no Sentry / Crashlytics). The included ErrorBoundary catches React errors only.

Build from source

git clone https://github.com/majdukovic/frontrow.git
cd frontrow
npm install
npm run ios      # or: npm run android

See the README for details.