Skip to content

Cut Chrome/Firefox/iPhone/iPad UI tests over to Device Farm#72522

Merged
davidsbailey merged 4 commits intostagingfrom
launch-device-farm
May 5, 2026
Merged

Cut Chrome/Firefox/iPhone/iPad UI tests over to Device Farm#72522
davidsbailey merged 4 commits intostagingfrom
launch-device-farm

Conversation

@davidsbailey
Copy link
Copy Markdown
Member

@davidsbailey davidsbailey commented May 5, 2026

Starts running UI tests in Device Farm alongside SauceLabs within rake test:ui_all. Renames the SauceLabs UI task regular_ui to saucelabs_ui, drops its parallelism from 50 to 15, and narrows it to -c Safari since Chrome/Firefox/iPhone/iPad now run on Device Farm. Removes the unused devicefarm_ui combined task.

Reframes the user-visible labeling so oncall sees suites by the browsers they cover, not the provider:

  • saucelabs_ui => "Safari UI"
  • devicefarm_desktop_ui => "Chrome + Firefox UI"
  • devicefarm_mobile_ui => "Mobile UI"
  • eyes_ui => "Eyes"

slack message and status page prefixes also now derive from the active browser configs (Safari, Chrome + Firefox, etc) instead of the device_farm flag, making it easier to find test failures for a certain browser without having to remember whether it runs on SauceLabs or Device Farm. The cross-page navigation row also now links to all 4 pages.

The _df disambiguator in the _output.html filenames is no longer needed and has been removed.

Screenshots

status page navigation

Screen.Recording.2026-05-05.at.2.42.34.PM.mov

slack output

Screenshot 2026-05-05 at 2 48 14 PM

Testing story

  • tested locally against test-studio.code.org and just one feature file (see screen recording) via locally modified version of this command: Dave-M4:~/src/cdo (test *)$ bundle exec rake test:ui_all
    • clicked through resulting status pages to verify status page nav linkage, rerun cmds, and saucelabs + device farm links in cucumber logs.
  • after merging Revamp UI test status pages #72453, I ran rake test:devicefarm_ui on the test machine. All Device Farm Desktop UI tests passed (slack). 2 Mobile UI tests failed (slack), but then passed after a total of 3 reruns.

Deployment notes

to do on the test machine after DTT:

  • verify linkage between new status pages
  • remove old test_status*.html pages, to ensure no one is relying on old bookmarks
  • run bin/reset_flakiness, to clear out the slew of errors from multiple saucelabs problems in the past week

Wires devicefarm_desktop_ui and devicefarm_mobile_ui into
rake test:ui_all so they run alongside SauceLabs Safari and Eyes.
Renames the SauceLabs UI task regular_ui to saucelabs_ui (provider
is the only thing left that distinguishes it from the Device Farm
suites), drops its parallelism from 50 to 15, and narrows it to
-c Safari since Chrome/Firefox/iPhone/iPad now run on Device Farm.
Removes the unused devicefarm_ui combined task.

Reframes the user-visible labeling so oncall sees suites by the
browsers they cover, not the provider:
  - saucelabs_ui            => "Safari"
  - devicefarm_desktop_ui   => "Chrome + Firefox"
  - devicefarm_mobile_ui    => "Mobile"
  - eyes_ui                 => "Eyes"

test_type_label and status_page_filename now derive from the active
browser configs instead of the device_farm flag, yielding stable
filenames test_status_{Safari,Chrome_Firefox,Mobile,Eyes}.html and
matching slack message prefixes. STATUS_PAGES_NAVIGATION lists all
four pages so the cross-page navigation row links to the full set.

The _df disambiguator on test_run_identifier is no longer needed --
no non-eyes browser runs on both providers anymore -- so it and its
JS counterpart in test_status.js (plus the now-unused #device-farm
hidden DOM input in test_status.haml) come out together.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@davidsbailey davidsbailey marked this pull request as ready for review May 5, 2026 19:05
@davidsbailey davidsbailey requested a review from sureshc May 5, 2026 19:05
@davidsbailey
Copy link
Copy Markdown
Member Author

davidsbailey commented May 5, 2026

tagging @sureshc for review. heads up @cat5inthecradle that this forces us onto latest browser versions for Chrome and Firefox, since Device Farm only supports latest through latest minus 2. Mobile is more complicated -- we run on a pool of devices in which are all on iOS 18 or higher, but could be a different model, screen size and/or iOS version on each run.

Replaces the single-line description (which still claimed "all browsers
configured in browsers_saucelabs.json") with a table showing the four
test:ui_all suites, the provider backing each, and the browsers each
covers. Notes that providers stay out of the user-visible labeling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
test_type_label now returns "Safari UI" / "Chrome + Firefox UI" /
"Mobile UI" for the three non-eyes suites (Eyes is unchanged --
"Eyes UI Test Status" reads awkwardly and Eyes was its own branch
in the helper before this change anyway). That propagates through
to:
  - <title> and <h1>: "Safari UI Test Status", etc.
  - Slack banners: "SAFARI UI TEST REPORT", "*SAFARI UI* TESTS PASSED"
  - Cross-page nav row: "Safari UI | Chrome + Firefox UI | Mobile UI | Eyes"

Status page filenames pick up the suffix the same way:
  test_status_{Safari_UI,Chrome_Firefox_UI,Mobile_UI,Eyes}.html.
STATUS_PAGES_NAVIGATION and the README's DTT table follow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment thread dashboard/test/ui/README.md Outdated
Comment on lines +25 to +28
| Safari UI | SauceLabs | `Safari` (`browsers_saucelabs.json`) |
| Chrome + Firefox UI | AWS Device Farm | `Chrome`, `Firefox` (`browsers_device_farm.json`) |
| Mobile UI | AWS Device Farm | `iPhone`, `iPad` (`browsers_device_farm.json`) |
| Eyes | SauceLabs | `Chrome`, `iPhone` (Applitools visual diff, `@eyes` / `@eyes_mobile`) |
Copy link
Copy Markdown
Contributor

@sureshc sureshc May 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we add some clarity and explain that we're running macOS Safari in SauceLabs, and mobile (iOS/iPadOS) Safari in Device Farm? There are a bunch of places where we could replace "Safari UI" with "macOS Safari UI" and "Mobile UI" with "Mobile Safari UI", so not sure it's worth making this type of change when we have a more pressing goal of completing this transition quickly.

Suggested change
| Safari UI | SauceLabs | `Safari` (`browsers_saucelabs.json`) |
| Chrome + Firefox UI | AWS Device Farm | `Chrome`, `Firefox` (`browsers_device_farm.json`) |
| Mobile UI | AWS Device Farm | `iPhone`, `iPad` (`browsers_device_farm.json`) |
| Eyes | SauceLabs | `Chrome`, `iPhone` (Applitools visual diff, `@eyes` / `@eyes_mobile`) |
| macOS Safari UI | SauceLabs | `macOS Safari` (`browsers_saucelabs.json`) |
| Chrome + Firefox UI | AWS Device Farm | `Chrome`, `Firefox` (`browsers_device_farm.json`) |
| Mobile Safari UI | AWS Device Farm | `iPhone Safari`, `iPad Safari` (`browsers_device_farm.json`) |
| Eyes | SauceLabs | `Chrome`, `iPhone` (Applitools visual diff, `@eyes` / `@eyes_mobile`) |

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the feedback Suresh! I've added some clarifying info to the "Browsers" column to clarify macOS, Windows, and Safari as needed.

I haven't changed the Suite name here because I want to keep it consistent with everywhere else we show the suite name (slack messages, status pages), and I don't want to clutter up those places with extra wording just yet.

I suspect that most of the team will intuit that an unqualified Safari means desktop since that's been the convention on the actual browser config name for quite a while now, but if there turns out to be confusion about it then I'd be happy to add more wording at that time.

@davidsbailey davidsbailey merged commit 694ceeb into staging May 5, 2026
7 of 8 checks passed
@davidsbailey davidsbailey deleted the launch-device-farm branch May 5, 2026 23:26
@davidsbailey davidsbailey restored the launch-device-farm branch May 5, 2026 23:26
@davidsbailey davidsbailey deleted the launch-device-farm branch May 5, 2026 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants