Repository navigation
✅ e2e: sign up and in with real native passkeys - #1484
cruzdanilo wants to merge 6 commits into
Conversation
🦋 Changeset detectedLatest commit: d06e2cd The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe local E2E setup serves non-localhost domains over HTTPS. Android and iOS workflows use sandbox settings and configure certificate trust. Maestro coverage adds passkey and biometric flows. ChangesLocal E2E coverage
Priority: ⚪ Pending latest changes Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Other Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant EASWorkflow
participant AndroidEmulator
participant SandboxServer
participant Maestro
EASWorkflow->>AndroidEmulator: Provision emulator and prepare fingerprint
EASWorkflow->>SandboxServer: Retrieve TLS certificate
EASWorkflow->>AndroidEmulator: Install app, MyVault, and trusted certificate
Maestro->>AndroidEmulator: Run passkey and biometric flows
Merge Risk: 🟡 Moderate · up to
|
|
cefd2e7 to
dcb1812
Compare
dcb1812 to
dbbc4f4
Compare
dbbc4f4 to
ee5b862
Compare
ee5b862 to
a2f161d
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Organization UI
- Review profile: ASSERTIVE
- Plan: Advanced
- Run ID:
74bed3dc-3fc0-4251-9271-7d72e53351be
⛔ Files ignored due to path filters: 1
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing: 9
.changeset/secure-otters-serve.md.eas/workflows/local.yaml.maestro/flows/local.yaml.maestro/subflows/matchBiometrics.yaml.maestro/subflows/passkey.yamlapp.config.tsserver/package.jsonserver/test/e2e.tsserver/vitest.config.mts
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
a2f161d to
5e2e87d
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4a771d5229
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
4a771d5 to
c32e062
Compare
c32e062 to
091186c
Compare
091186c to
1a8401e
Compare
1a8401e to
32eb9c2
Compare
|
[edit: both fixed in main. eas run 01a1603f-6465 on a585237 (main 17260bf) passed Generated by Claude Code |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6ec866250a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Generated by Claude Code |
Before: the native e2e apps can only sign in through the injected browser wallet. The iOS simulator build has no team id and claims
webcredentials:localhost, and the Android emulator has no credential provider, so neither can create or use a passkey.After: on iOS and Android,
e2e:localfirst signs up with a real passkey, confirmed with Maestro's biometrics (Face ID on iOS, an enrolled fingerprint on Android). It then logs out and signs back in with that passkey before the existing flows run. Both apps talk to the local stack athttps://sandbox.exactly.app. The whole flow passes on both platforms in EAS run 01a15f50.How:
APP_DOMAIN, using a self-signed P-256 leaf (ported from ✅ e2e: run webauthn flow over https #1447). Both e2e jobs pointsandbox.exactly.appat the runner and trust the leaf. iOS checkswebcredentialsthrough Apple's CDN and Android checks asset links through Google's API, so the deployed sandbox AASA andassetlinks.jsonstill vouch for the apps.common/pandaCertificate.ts, which the e2e server's mock can't decrypt, so card details answered 555. Both e2e jobs setEXPO_PUBLIC_PANDA_PUBLIC_KEYto the e2e key.passkey.yaml, runs first on both platforms. Platform steps cover the iOS sheet buttons ("Add Passkey", "Use Passkey").simctl keychain add-root-cert. The app builds from thee2e:productionprofile, withAPP_DOMAIN=sandbox.exactly.appandAPPLE_TEAM_ID=665NDX7LBZas job env, since build jobs ignore job env for keys the profile sets.app.config.tsreadsios.appleTeamIdfrom env. Release fingerprints match main on both platforms; only the iOS e2e fingerprint moves, to041b44f2, with its own fingerprint job.041b44f2. An app built with the iOS 27 SDK doesn't launch on the iOS 27 simulator ("UIScene life cycle is required", Apple TN3187), so the job runs on themacos-tahoe-26.5-xcode-26.6image.-gpu swangleand uses Google's MyVault sample (android/identity-samples) as the credential provider, built from a pinned commit and cached (vault). A background step sets PIN 1111 and enrolls a fingerprint through Settings (fingerprint.yaml) while the vault apk, the build download and repack run, so enrollment adds no time to the flow. The job forwards 443 withadb reverseand bind-mounts the leaf and a hosts entry into the conscrypt store and/system/etc/hoststhroughnsenter. The app keeps thee2e:localbuild; repack bundles the sandbox domain.Latency against main (run 01a15f50 vs d1c02b9): fingerprint enrollment adds nothing, since it finishes before the device prep step. The passkey sign-up and sign-in add 41s to the iOS flow and 37s to the Android flow. The Android flow is also about 16s slower across the other flows, from the API 35 emulator and the clipboard tap.
Generated by Claude Code
Summary by CodeRabbit