[eas-build-job] add DeviceRunSession.Job - #4412
Draft
szdziedzic wants to merge 1 commit into
Draft
szdziedzic wants to merge 1 commit into
szdziedzic wants to merge 1 commit into
Conversation
szdziedzic
added this pull request to stack #4415
September 15, 2026 19:45
szdziedzic
force-pushed
the
szdziedzic-claude/eas-simulator-job-schema
branch
from
September 15, 2026 19:47
f4682fc to
37c3973
Compare
This was referenced Sep 15, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4412 +/- ##
==========================================
+ Coverage 72.42% 72.44% +0.02%
==========================================
Files 975 976 +1
Lines 46617 46642 +25
Branches 10069 10076 +7
==========================================
+ Hits 33760 33785 +25
Misses 11857 11857
Partials 1000 1000 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
szdziedzic
force-pushed
the
szdziedzic-claude/eas-simulator-job-schema
branch
from
September 24, 2026 15:56
37c3973 to
0034062
Compare
|
✅ Thank you for adding the changelog entry! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
EAS Simulator sessions (device run sessions) currently reach the worker as a
Generic.Jobwith a hand-built list ofeas/*steps. The steps engine runs strictly in sequence, so the build download, tool installs, and TURN credential fetch all wait for the simulator boot, and ordering rules such as "capture must start before the app launches" live only in the API server's step lists. See the discussion in expo/universe#30577.This is the first PR of a stack that gives sessions a typed job payload and a worker-owned lifecycle:
[eas-build-job]theDeviceRunSession.Jobpayload[build-tools]the session runner[worker]dispatchHow
DeviceRunSession.Job(packages/eas-build-job/src/deviceRunSessionJob.ts): a Zod schema describing the session (controller, duration, idle timeout, tunnel domain), the device (iOS or Android, discriminated onplatform), the optional application to install and launch, and the optional local egress.type: 'device-run-session'is the job-family discriminator.Generic.JobZalready reservesplatformandtypeasneverfor this purpose; build jobs usetypefor theirWorkflow, generic jobs leave itundefined, and session jobs set this literal. The comment ingeneric.tsnow names all three families.Generic.BuilderEnvironmentSchemaZso the new schema reuses it.metricsCorsOriginfield: since [build-tools] pass the website origin to serve-sim #4437 the worker derives the serve-sim CORS and framing origins from the website origin itself, and expo/universe#31252 stopped sendingEAS_SIMULATOR_METRICS_CORS_ORIGIN.sessionis a non-strict object, so a payload that still carries the field parses and the field is dropped.Jobunion yet; [build-tools] add device run session runner #4413 does that together with the code that handles it.Test Plan
type, a setplatform, and an empty session id.yarn typecheck,yarn lint,yarn fmt:check, andcd packages/eas-build-job && yarn testpass.🤖 Generated with Claude Code