Skip to content

ipad shots#29297

Merged
chrisnojima merged 38 commits into
masterfrom
nojima/HOTPOT-ipad-shots
Jun 10, 2026
Merged

ipad shots#29297
chrisnojima merged 38 commits into
masterfrom
nojima/HOTPOT-ipad-shots

Conversation

@chrisnojima

Copy link
Copy Markdown
Contributor

Switch from maestro since its so flakey

webdriverio@9.27.2, @wdio/cli, @wdio/local-runner, @wdio/mocha-framework,
@wdio/spec-reporter, @wdio/appium-service, appium@3.5.0, @types/mocha@10,
tsx@4.22.4. xcuitest driver 11.10.0 installed to ~/.appium.
Add WebdriverIO 9 + Appium harness under tests/e2e/ios-appium/:
- helpers/app.ts: udidForName, requireSmokeUser, iosCapabilities
- helpers/elements.ts: el/els/waitForTestID/countTestID/byText/tab
- helpers/navigate.ts: navigateTo{People,Chat,Files,Teams,More} using real
  testID values from test-ids.ts; escapeToTabs with pointer swipe
- wdio.conf.ts: wdio 9 config (local runner, mocha, spec reporter, appium svc)
- tsconfig.json: standalone config for wdio files (excluded from main tsconfigs)

Also adds ios-appium tsconfig to eslint parserOptions.project so lint
covers the new files. ios-appium dir excluded from tsconfig.desktop.json
and tsconfig.native.json to avoid missing-browser-global errors.
…a horizontal ScrollView

Each Kb.Tabs tab forced width:100%, which shrinks-to-share in a bounded row but
in the team/channel mobile horizontal ScrollView left every tab at full screen
width, pushing all but the first off-screen (the Settings gear was unreachable).
flexGrow:1 fills the row in both layouts.
…D (avoid last-tab interference), guard own-feed profile
…lti-it flows; detect transitions, faster session caps, tighter polling
…l iOS e2e (test:e2e:ios)

Deletes .maestro/e2e flows/subflows/config, run-ios-devices.sh, generate-ios-report.mts
and the maestro functional yarn scripts. Keeps .maestro/performance and .maestro/visual-diff.
Renames the appium scripts to the canonical test:e2e:ios / :report. Updates the e2e skill.
Parameterizes the appium port so each device runs its own server concurrently.
Caveat documented: macOS render-throttles backgrounded sim windows, so on a single
Mac parallel can flake/not beat serial — real speedup needs separate machines or
headless/cloud sims. Serial runner (run-ios-appium.sh) stays the reliable default.
…orientation, tablet-aware settings-subpages back nav
…tNav; bump mocha timeout

Tablet landscape LeftNav puts lower settings rows below the fold; scroll them
into view (isDisplayed-based) before tapping. Phone stays 16/16. Tablet Files
settings / files-folders remain flaky under the full suite (KBFS/two-pane timing).
…s); scroll member list for the smoke user

Keyboard from a prior input (feedback/chat/crypto) covered below-fold LeftNav rows
on iPad → unhittable. Dismiss it (guarded by isKeyboardShown — hideKeyboard hangs
with no keyboard). team-member scrolls the lazily-loaded member list to find the user.
…on 8100

Both sims defaulted to wdaLocalPort 8100; the second WDA collided with the
first (ECONNREFUSED 127.0.0.1:8100, sessions died mid-suite). Derive
wdaLocalPort/mjpegServerPort from the per-device appium port. Reuse the shared
prebuilt WDA (no derivedDataPath override — a fresh dir has no build to launch,
xcodebuild exits 65). Verified: iPhone+iPad both 16 passing in parallel.
…tandalone

yarn test:e2e:ios:report ran the generator with no env, falling back to the
single default dir (last single run = iphone only). Now scan tests/results for
ios-appium-debug-* and build one section per device, so the standalone report
covers iPhone+iPad. Falls back to the lone default dir when none exist.
testMatch globbed every *.test.ts, so yarn test:unit tried to run the appium
e2e specs (browser globals, no jest env). testPathIgnorePatterns only listed
the electron subdir; broaden to all of tests/e2e to cover ios-appium too.

This comment was marked as outdated.

- add @wdio/globals to devDependencies (imported by flow tests but
  only present transitively)
- escape backslashes and quotes in byText predicate strings
- escapeToTabs throws when tab bar unreachable instead of silently
  returning

This comment was marked as outdated.

- atTabs: tab bar alone not proof of root on iPad (stays visible in
  pushed stacks) — also require no back button
- wait for TLF rows / inbox rows before indexing or early-skip, so
  slow-loading lists don't crash or silently skip tests
- iPhone/iPad runs always write tests/results/ios-appium-debug-{iphone,ipad};
  report reads only those two dirs (env-var/auto-discovery logic removed)
- test:e2e:ios runs both devices in parallel; :iphone/:ipad run one serially
- per-image timestamp overlay (PNG mtime) and (stale) section marker (>1h)
  expose mixed-age runs; header links jump to each device section

This comment was marked as outdated.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chrisnojima chrisnojima merged commit cf8c86f into master Jun 10, 2026
1 of 2 checks passed
@chrisnojima chrisnojima deleted the nojima/HOTPOT-ipad-shots branch June 10, 2026 13:14
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