Skip to content

test: [SDK-4333] add Appium E2E test suite for mobile SDKs#28

Merged
fadi-george merged 24 commits intomainfrom
fadi/sdk-4333-appium-tests
Apr 14, 2026
Merged

test: [SDK-4333] add Appium E2E test suite for mobile SDKs#28
fadi-george merged 24 commits intomainfrom
fadi/sdk-4333-appium-tests

Conversation

@fadi-george
Copy link
Copy Markdown
Contributor

@fadi-george fadi-george commented Apr 14, 2026

Description

Adds an Appium E2E test suite for validating OneSignal mobile SDK functionality. This PR covers iOS only and tests more than half of the demo app's features. Android support and additional test coverage will follow in subsequent PRs.

The WDIO config is currently set to accept any permission prompts. As you can see in the video.
I also hid app id and push id for the recording, this change will not be committed for flutter.

flutter-ios-1.mov

Can use the run-local.sh script if you clone the OneSignal-Flutter-SDK and configure .env file. Then run like so:
./run-local.sh --platform=ios --sdk=flutter

Can run with skip if theres no change to the flutter sdk:
./run-local.sh --platform=ios --sdk=flutter --skip

Details

Test specs covering core SDK features (run in dependency order):

  • User login/logout and anonymous state
  • Push subscription
  • In-app messaging
  • Alias operations
  • Email and SMS subscriptions
  • Tag operations

Local test runner (appium/scripts/run-local.sh) that handles the full lifecycle:

  • Builds the Flutter demo app for iOS simulator
  • Boots the simulator and starts Appium
  • Resets app state and runs the WebdriverIO test suite
  • Supports --skip-build, --skip-device, --skip-reset, and --spec flags

CI workflow (.github/workflows/appium-e2e.yml) as a reusable workflow_call that uploads the app to BrowserStack and runs tests there.

Shared test helpers for element selection, scrolling, login flows, and structured logging.

Other changes:

  • Removed .cursor/rules/ config files (moved to project-wide rules)
  • Switched editor formatter to oxc
  • Added README docs for the test suite and local runner

Replace smoke placeholder with real E2E test specs:
- Init: verify SDK initialization and app ID logging
- User: login/logout flow with external ID verification
- Push: subscription state, tooltip info, simple notification
- Tags: section display validation (skipped pending UI stabilization)

Made-with: Cursor
Adds a cross-platform helper to verify system notification delivery
by opening the notification shade/center, searching for the
notification title, and returning to the app.

Made-with: Cursor
@fadi-george fadi-george requested a review from a team as a code owner April 14, 2026 01:34
- maxInstances was 0 for BrowserStack runs, meaning no workers would be
  scheduled. Changed to 5 for parallel execution.
- Help text for IOS_SIMULATOR and IOS_RUNTIME still referenced iPhone 16
  and iOS-18-2 instead of iPhone 17 and iOS-26-2.

Made-with: Cursor
@fadi-george fadi-george force-pushed the fadi/sdk-4333-appium-tests branch from 4cf75f8 to 48f5446 Compare April 14, 2026 01:43
@fadi-george fadi-george merged commit b47230b into main Apr 14, 2026
2 checks passed
@fadi-george fadi-george deleted the fadi/sdk-4333-appium-tests branch April 14, 2026 16:44
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.

2 participants