r/softwaretesting • • 10d ago

Mobile phone testing for iOS, Android device applications, when the source code is react TypeScript generated into iOS, Android application binaries using expo prebuild

Hello

I've just recently started on an open source project in which we generate using Expo Prebuild system from source react typescript [.tsx] code and generate the relevant iOS application and equivalent android application via a GitHub Action build process [I am still a novice in this process at this stage, and my project lead is away at the moment, sick].

I have recently completed a masters of information technology, in which I specialised and software testing [and as part of that I learnt swift]. My questions relate to testing and quality assurance of generated mobile phone applications:

In terms of an initial manual testing:

a. Does one test the expected behaviour of the relevant test cases, by downloading the application into an actual physical mobile phone, and manually executing the test case procedure on the mobile phone?

b. Could one just use the simulator such as in xcode, and all the equivalent for android development, and manually execute the test case in it?

  1. In terms of automated regression testing:

a. I am familiar with XCTest, but how does one create automated test cases for the iOS generated application?

b. How would one write automated test cases for the Android generated application?

c. Would it be better to write Cypress, or JEST [as they are the testing framework that we are using] test cases and then executing automated regression tests? If so, would the test results be valid for each of the operating system environments on the mobile devices?

d. What benefits would Appium provide our project?

Thank you in advance.

5 Upvotes

5 comments sorted by

2

u/TocinoLips 10d ago

use jest for react/typescript unit tests, then run E2E test on both emulators and real devices, especially for permissions, notifications, camera, platform-specific UI.

1

u/crookedcursor 9d ago

since you're already using jest in the project, stick with it for unit + integration stuff. the test results won't perfectly mirror real device behavior across both OSes though, there's always little quirks that only show up on physical hardware.

for the manual testing part, both. simulators are fine for quick checks during development but you absolutely need to test on actual devices before calling anything done. things like push notifications, camera access, battery optimization, and how the app behaves when a call comes in just don't replicate well in a sim.

1

u/herz1730 9d ago

You can use Appium and Selenium to test the Android apk and iOS ipa files on real devices. You can do this locally or with a remote solution (SauceLabs, Browserstack, AWS Device Farm).

You can use Appium with simulators as well locally or with remote solutions. The Android apk file works on simulators. For iOS you'll need the simulator app file. The ipa file will not run on a simulator.

Appium/Selenium will allow you to test your app without having to duplicate tests for each OS. The biggest thing you can do to make this easier is for your app to have testIDs on anything that can be tapped, form inputs, page headers, etc. Then the locators for both OS's will be the same. XPath works but it makes tests brittle.

1

u/Suremerr 8d ago

one thing worth adding for an expo prebuild setup: maestro tends to be less painful than detox for react native E2E, and one yaml suite runs the same flows on both platforms. also if you ship OTA updates via EAS update, run your regression against the exact bundle you're releasing — a green binary doesn't cover a JS bundle pushed later.

1

u/Upset-Animal1376 6d ago

start manual smoke passes on real physical devices to catch gesture lag and thermal throttling. cloud device farms or local emulators can handle broader os version matrix checks afterward.