Skip to content

Add E2E tests#334

Closed
gabrieldonadel wants to merge 4 commits into
mainfrom
claude/cross-platform-e2e-testing-e2oTX
Closed

Add E2E tests#334
gabrieldonadel wants to merge 4 commits into
mainfrom
claude/cross-platform-e2e-testing-e2oTX

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Member

No description provided.

@gabrieldonadel gabrieldonadel force-pushed the claude/cross-platform-e2e-testing-e2oTX branch 3 times, most recently from 11e76e3 to 699d71d Compare April 14, 2026 18:27
@gabrieldonadel gabrieldonadel mentioned this pull request Apr 16, 2026
@gabrieldonadel gabrieldonadel force-pushed the claude/cross-platform-e2e-testing-e2oTX branch 2 times, most recently from b85429f to fbb7753 Compare April 20, 2026 11:30
@gabrieldonadel gabrieldonadel force-pushed the claude/cross-platform-e2e-testing-e2oTX branch 11 times, most recently from 3f4ef59 to 04a2245 Compare April 24, 2026 00:21
@gabrieldonadel gabrieldonadel force-pushed the claude/cross-platform-e2e-testing-e2oTX branch 8 times, most recently from 23a0235 to fd14433 Compare June 15, 2026 17:17
gabrieldonadel and others added 3 commits June 15, 2026 23:02
WebdriverIO-based E2E setup that runs against both the Electron build
(via Chromedriver) and the macOS native build (via Appium mac2). Shared
spec files drive both platforms; a sanitizing testID -> AX-id mapping
in helpers.ts lets the same selectors find elements through either
driver. Adds the testID props the specs depend on across the popover,
device-list, and onboarding components.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@electron-forge/plugin-vite ships only the .vite/build/ output into the
asar, no node_modules. The wdio IPC-bridge hook needs to be reachable
at runtime, so:

- Vite traces a dynamic import('./wdio-hook') in main.ts and a static
  import in preload.ts. The shim files re-export 'wdio-electron-service/
  {main,preload}', so Vite pulls those into the bundle/chunk graph
  instead of leaving them as runtime requires that would fail to
  resolve.
- A define-driven `process.env.WDIO_E2E` gate keeps the main-process
  hook dead-coded out of production builds; the preload-side bridge is
  always exposed (it's a no-op without the main-side handler).
- packagerConfig.ignore strips wdio-electron-service from the asar in
  production for tidiness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three startup paths trigger TCC permission prompts (Local Network,
Screen Recording) or modal sheets that CI runners can't dismiss
non-interactively, blocking the desktop for the whole test session:

- SwifterWrapper's HTTP server binds to non-loopback ports.
- SPUStandardUpdaterController fails on unsigned bundles and pops the
  "Unable to Check For Updates" sheet.
- RSClient.configure spins up reachability monitoring that trips the
  local-network prompt.

Each is now skipped when EXPO_ORBIT_E2E=1 (set via appium:environment
in wdio.macos.ts). Also gates the CLI codesign step in archive_cli.sh
on CODE_SIGNING_ALLOWED so the unsigned E2E build doesn't fail at the
Xcode 'Archive and sign CLI' script phase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitHub Actions workflow that runs the E2E specs on all three platforms.
Each job builds the platform's binary, creates an Android AVD via
sdkmanager/avdmanager (not booted — orbit-cli uses `emulator
-list-avds` which reads from disk, so the device appears in Orbit
without nested-virt setup), runs wdio, and uploads screenshots +
AX-tree dumps as artifacts (if: always()).

Linux uses xvfb-run + a handful of apt-get'd runtime libs that
ubuntu-latest lacks. macOS pins Xcode 26.2 and builds unsigned so the
runner doesn't need a Developer ID cert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gabrieldonadel gabrieldonadel force-pushed the claude/cross-platform-e2e-testing-e2oTX branch from 0df3618 to 19d264a Compare June 16, 2026 02:05
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