Skip to content

Fix iOS real device workflows and use test-runner retries in CI - #441

Merged
diemol merged 1 commit into
mainfrom
fix-ios-rdc-and-native-retries
Oct 6, 2026
Merged

diemol merged 1 commit into
mainfrom
fix-ios-rdc-and-native-retries

Conversation

@diemol

@diemol diemol commented Oct 6, 2026

Copy link
Copy Markdown
Member

Fix iOS real device workflows and use test-runner retries in CI

Description

The iOS Real Devices and Real Devices (RDC + Safari) workflows have been failing on main.

  • iOS Real Devices (IOSNativeAppTest) has failed on every run since Oct 1. It requested an iOS 14 iPhone in the EU data center, which no longer has any (the lowest available is iOS 15). It is now pinned to iOS 18. iOS 17+ requires appiumVersion, so it now uses appium3-2026-04, matching mobile-web. The simulator configuration keeps iOS 14.
  • Real Devices – RDC Safari failed in 10 of the last 13 runs. iPhone.* with no version picks a random device. In the last run, all 11 failing jobs were on iOS 14.7–15.7 ("element not visible" on add-to-cart buttons), and no job on iOS 16+ failed. This is now pinned to iOS 18.

This PR also replaces nick-fields/retry (which reran the whole mvn test up to 3 times) with retries from the test runner, so only failed tests are retried:

  • The JUnit 4 and JUnit 5 modules use Surefire's -Dsurefire.rerunFailingTestsCount=2. A test that passes on retry is reported as a flake.
  • Surefire's rerun doesn't support TestNG, so selenium-testng-examples and selenium-cucumber-examples get a small RetryListener (an IAnnotationTransformer and IRetryAnalyzer) that reads the same property. It defaults to 0, so local runs don't change.
  • The 30-minute limit moves to the step's timeout-minutes.
  • Also fixes the Mobile Web step name, which was missing $ on the browser matrix value.

Types of Changes

  • Bug fix (non-breaking change which fixes an issue)
  • Configuration change

Tasks

  • IOSNativeAppTest with -Dregion=eu passes against real devices
  • mobile-web with -Dsauce.cloud=RDC -Dsauce.browser=safari passes 15/15 against real devices
  • Checked retries with a throwaway test that fails once (TestNG with a data provider, JUnit 4, JUnit 5): fails without the flag, passes with it
  • selenium-cucumber-examples compiles with the listener
  • CI green on this PR

Review

  • Tests
  • Documentation
  • CHANGELOG

Deployment Notes

None. Retries only run in CI, through -Dsurefire.rerunFailingTestsCount=2 in the workflows.

🤖 Generated with Claude Code

- Pin iOS RDC sessions to iOS 18. The EU data center no longer has iOS 14
  iPhones, and unpinned Safari sessions failed on iOS 14/15 devices.
- Set appiumVersion for the native iOS RDC test (required for iOS 17+).
- Replace nick-fields/retry with Surefire's rerunFailingTestsCount, so only
  failed tests are retried instead of the whole Maven run. TestNG modules
  get a RetryListener reading the same property.
- Fix the Mobile Web step name missing the browser matrix value.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@diemol
diemol merged commit 3375bfc into main Oct 6, 2026
9 checks passed
@diemol
diemol deleted the fix-ios-rdc-and-native-retries branch October 6, 2026 09:57
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