skip to content

Cross-platform tooling & testing

The tooling that sits outside your app code — release automation, code signing, store submission, and end-to-end UI testing — regardless of whether the app is native, Flutter, or React Native. Interviewers ask because shipping a mobile app is mostly this, and it is where teams lose the most time.

on this pageshow

explore

questions

260 · 2 sections

In fastlane, which action uploads an iOS build to TestFlight for beta testers?

level: juniorimportance: must knowfreq 68%
basics
~20 s

The canonical action is upload_to_testflight, better known by its alias pilot. It takes a finished iOS binary, an App Store Connect credential and an optional changelog, and hands the build to Apple's beta service. Android has no core equivalent.

open as a page

In a fastlane Fastfile, what does a lane declare, and how does a CI step invoke one?

level: juniorimportance: must knowfreq 78%
basics
~20 s

A lane is a named, ordered sequence of fastlane actions declared in the Fastfile. CI invokes one by name, such as fastlane ios beta for a lane inside a platform ios block, and the lane's exit status decides the step.

open as a page

What does fastlane's build_app action (gym) produce for an iOS app?

level: juniorimportance: must knowfreq 80%
basics
~10 s

fastlane's build_app action, whose alias is gym, wraps Apple's xcodebuild for iOS: it archives the scheme you name, then exports a signed .ipa plus the archive's dSYM debug-symbol bundles into an output directory.

open as a page

In fastlane, which action captures store screenshots on iOS, and which one on Android?

level: juniorimportance: must knowfreq 72%
basics
~20 s

fastlane captures iOS store screenshots with capture_ios_screenshots, better known as snapshot, which drives an XCUITest on simulators; Android uses capture_android_screenshots, known as screengrab, which drives a separate instrumentation test APK on a device or emulator.

open as a page

How does a fastlane upload lane authenticate to App Store Connect and to Google Play without a human login?

level: juniorimportance: must knowfreq 78%
basics
~20 s

Apple and Google use different credentials. upload_to_app_store takes an App Store Connect API key through api_key or api_key_path; upload_to_play_store takes a Google service-account JSON key through json_key or json_key_data. There is no shared credential model.

open as a page

In Appium, which command accepts a system alert on Android, and which one on iOS?

level: juniorimportance: must knowfreq 66%
basics
~10 s

On Android the UiAutomator2 driver exposes mobile: acceptAlert and mobile: dismissAlert; on iOS the XCUITest driver exposes mobile: alert, and only iOS also has the appium:autoAcceptAlerts capability that handles alerts without a call.

open as a page

In Appium, which browser does a `browserName` session drive on Android, and which on iOS?

level: juniorimportance: must knowfreq 70%
basics
~20 s

Sending browserName instead of an application makes the phone's own browser the app under test: Chrome on Android, whose page commands a Chromedriver answers, and Safari on iOS, driven by XCUITest through Apple's remote web inspector.

open as a page

In Appium, how is a web-view context handle named on Android compared with iOS?

level: juniorimportance: must knowfreq 66%
basics
~20 s

Both platforms share the WEBVIEW_ prefix and then diverge: Android appends the package name of the process hosting the web view, while iOS appends a numeric page id that the remote debugger assigns at runtime.

open as a page

In Appium, which commands foreground, background and terminate the app under test on Android and Apple platforms?

level: juniorimportance: must knowfreq 74%
basics
~20 s

Both sides share mobile: activateApp to foreground an app, mobile: backgroundApp to suspend it, mobile: terminateApp to stop it and mobile: queryAppState to check it. Android adds mobile: startActivity; Apple platforms add mobile: launchApp and mobile: killApp.

open as a page

In Appium on Android, what does the appium:autoGrantPermissions capability do?

level: juniorimportance: must knowfreq 64%
basics
~20 s

It tells the Android drivers to grant every permission the app declares as part of installing it, so no runtime prompt ever appears. It is an install-time switch decided at session start, and the XCUITest driver has no equivalent.

open as a page