Repository navigation
fix(e2e): resolve ./x.jsx and ./x.js in TypeScript's order, like tsx did - #915
Conversation
🟢 e2e web: 91 passedAll 91 tests in 41 files
e2e 0.17.0 · 1m 50s · web · run artifacts |
There was a problem hiding this comment.
1 issue found across 6 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="docs/reference/config.mdx">
<violation number="1" location="docs/reference/config.mdx:87">
P2: This says every missing `./x.jsx` target maps to `x.ts`, but an existing `x.tsx` is tried first. Document the first matching candidate or qualify the example as having no `x.tsx`.</violation>
</file>
Heads up: you’re close to your included review allowance. Set a flex budget so reviews don’t pause.
Re-trigger cubic
🟢 e2e web agent: 33 passed34 agent steps · 26 replayed from cache · 20 model calls · 76.5k tokens (92% cached) · $0.0035 All 33 tests in 5 files
e2e 0.17.0 · 2m 51s · web · run artifacts |
🟢 e2e ios agent: 21 passed, 1 skipped25 agent steps · 132 model calls · 793.7k tokens (82% cached) · $0.0538 All 22 tests in 1 file
e2e 0.17.0 · 14m 5s · ios-simulator · run artifacts |
🟢 e2e ios: 1 flaky, 51 passed, 1 skipped
|
| Test | Time | |
|---|---|---|
| tests/device-fixture.e2e.ts · 1 flaky, 8 passed | 1m 21s | |
| device fixture › setAppearance flips the color scheme the app reads (2 failed attempts first) | 12.0s | |
| 🟢 | device fixture › setOrientation rotates the window the app measures | 7.1s |
| 🟢 | device fixture › the clipboard reads back what was written | 5.8s |
| 🟢 | device fixture › home leaves the app, openApp brings it back where it was | 7.0s |
| 🟢 | device fixture › closeApp then openApp relaunches on the home list | 11.4s |
| 🟢 | device fixture › foregroundApp after closeApp reports the closed session as APP_NOT_OPEN | 6.7s |
| 🟢 | device fixture › device.back pops the scenario | 7.5s |
| 🟢 | device fixture › setLocation and clearLocation change what the app reads | 12.0s |
| 🟢 | device fixture › enrollBiometrics and setBiometrics answer a biometric prompt | 11.4s |
| ⏭️ | tests/controls.e2e.ts · 23 passed, 1 skipped | 3m 27s |
| 🟢 | control inventory › a label query resolves a labeled text field | 11.8s |
| 🟢 | control inventory › a labeled field answers name, display value, value reads, fill, and clear | 17.8s |
| 🟢 | control inventory › a placeholder query and attribute reads find the field | 5.7s |
| 🟢 | control inventory › a secure field takes a fill and denies value reads | 11.2s |
| 🟢 | control inventory › press sends a character and Enter through the soft keyboard | 9.5s |
| 🟢 | control inventory › a field autofocuses on mount and focus() moves the focus | 18.4s |
| 🟢 | control inventory › toBeFocused follows the focus | 10.8s |
| 🟢 | control inventory › a switch checks, unchecks, and reports its state | 11.3s |
| 🟢 | control inventory › checkbox and radio roles answer getByRole, and a checkbox toggles by tap | 9.4s |
| 🟢 | control inventory › checkbox and radio roles check, uncheck, and report their state | 13.5s |
| 🟢 | control inventory › a radio group reports the checked option | 9.5s |
| 🟢 | control inventory › buttons report disabled, enabled, and a state that arrives later | 8.9s |
| 🟢 | control inventory › a display: none element is absent rather than hidden, its visible twin attached | 8.2s |
| 🟢 | control inventory › a header answers its accessible name | 5.2s |
| 🟢 | control inventory › a tab row answers count, all, texts, filters, positions, and switching | 7.9s |
| 🟢 | control inventory › a list answers counts, list-form text, reads, and boxes in order | 7.8s |
| ⏭️ | control inventory › a row contains its texts (skipped: React Native flattens a plain View out of the accessibility tree on both platforms: XCTest and the Android helper report a View with a testID as a leaf beside its children, so filter({ has }) and a query scoped to it match nothing; only Sc…) | |
| 🟢 | control inventory › a long press lands as one | 9.0s |
| 🟢 | control inventory › pointer verbs land at the point asked for | 10.8s |
| 🟢 | control inventory › an ambiguous locator fails at once | 6.6s |
| 🟢 | control inventory › screenshot, restart, and clearState reopen the app on its home list | 11.9s |
| 🟢 | refusals › verbs a device never declares are refused before the engine | 1ms |
| 🟢 | refusals › keys the soft keyboard cannot send are refused by the engine | 733ms |
| 🟢 | refusals › a missing locator fails as not found once its timeout passes | 1.2s |
| 🟢 | tests/device.e2e.ts · 2 passed | 57.3s |
| 🟢 | sequential onboarding echoes the exact values | 43.2s |
| 🟢 | onboarding rejects a malformed email before advancing | 14.1s |
| 🟢 | tests/flows-lists.e2e.ts · 7 passed | 3m 44s |
| 🟢 | infinite scroll reaches the target item | 27.6s |
| 🟢 | product catalog adds exactly two of the right variant | 11.2s |
| 🟢 | gestures: long-press, then swipe left | 9.9s |
| 🟢 | sticky chrome: accept below the fold, then continue | 11.7s |
| 🟢 | async states: load, pull to refresh, claim through the toast | 17.5s |
| 🟢 | huge virtualized list reaches row 512 | 2m 11s |
| 🟢 | web view coupon form applies the code shown on the page | 15.1s |
| 🟢 | tests/flows.e2e.ts · 7 passed | 1m 17s |
| 🟢 | text inputs unlock the submit button | 15.0s |
| 🟢 | filled text inputs report their values | 11.2s |
| 🟢 | modal flow confirms through the native alert | 11.6s |
| 🟢 | bottom tabs act inside the last tab | 8.0s |
| 🟢 | error recovery retries, then confirms the delete | 10.5s |
| 🟢 | choice controls place the exact order | 9.1s |
| 🟢 | debounced search selects the target once results arrive | 11.5s |
| 🟢 | tests/login-form.e2e.ts · 3 passed | 50.7s |
| 🟢 | login form › rejects a malformed email | 12.5s |
| 🟢 | login form › rejects an unknown account | 14.0s |
| 🟢 | login form › signs in and logs out | 24.2s |
| 🟢 | tests/smoke.e2e.ts · 1 passed | 9.4s |
| 🟢 | home lists the scenarios and opens one | 9.4s |
e2e 0.17.0 · 6m 42s · ios-simulator · run artifacts
🟢 e2e android: 54 passed, 1 skippedAll 55 tests in 7 files
e2e 0.17.0 · 8m 24s · android-emulator · run artifacts |
🟢 e2e android agent: 20 passed24 agent steps · 114 model calls · 603.4k tokens (86% cached) · $0.0343 All 20 tests in 1 file
e2e 0.17.0 · 8m 32s · android-emulator · run artifacts |
Regression from #790 (unreleased, ships in #825):
import { C } from './Comp.jsx'with onlyComp.tsxon disk failed withCannot find module '.../Comp.jsx'. TypeScript and e2e 0.17.0 (tsx) load it.writtenfield, so./x.jsxhad none, and./x.jstriedx.jsxbeforex.js.packages/e2e/src/config/compiled-files.tsnow spells out TypeScript's table (tryAddingExtensionsin TS 5.9, same as tsx's map):paths, and#imports and package exports, because they all resolve through it.Verified
Ran it locally: yes
e2eand@e2e-dev/webfrom main and from this branch into a scratch project in/tmp, then rannpx e2e runon a test that imports./lib/Comp.jsx(onlyComp.tsx),./lib/helper.jsx(onlyhelper.ts),./lib/plain.jsx(onlyplain.js), and./lib/both.js(bothboth.jsandboth.jsxexist).tsc5.9--traceResolutionon the same project resolves the four imports toComp.tsx,helper.ts,plain.js, andboth.js. The branch loads the same files.COLLECTION_ERROR: Cannot find module '.../tests/lib/Comp.jsx'✓ jsx specifiers resolve like TypeScript./both.jstest:expected "jsx" to be "js"✓ ./both.js loads both.js, as TypeScript does