Skip to content

feat!: drop Playwright trace recording - #822

Closed
okwasniewski wants to merge 6 commits into
mainfrom
oskar/drop-playwright-trace
Closed

okwasniewski wants to merge 6 commits into
mainfrom
oskar/drop-playwright-trace

Conversation

@okwasniewski

@okwasniewski okwasniewski commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Playwright trace zips were the debugging artifact for a failed test, but an agent can't read one without a GUI viewer, the screencast is withheld after a secret fill, and devices have no trace at all. This removes trace recording. The failure pages in the stacked PR take its place.

  • trace in the config or on a target is INVALID_CONFIG, on a test, describe, or setup COLLECTION_ERROR, and --trace (bare or with a mode) on run and explore exits 2. Each names the replacement: the markdown reporter's failure pages, or video for a recording.
  • video keeps every mode and the config < target < CLI < test precedence. trace-modes.test.ts is ported to video-modes.test.ts, so on-all-retries, retain-on-failure, serial groups, and test-beats-config stay covered.
  • Engine contract: startTrace/stopTrace leave EngineArtifacts. An engine published before this (@e2e-dev/web@0.11.2 allows e2e >=0.15 <1) still declares them, so the manifest accepts and never calls them (packages/e2e/src/engine/manifest.ts, RETIRED_HOOKS) and updating e2e alone keeps working.
  • report-1 drops the trace artifact kind, trace in artifactCapabilities, and the not-required redaction; TRACE_WITHHELD is gone. Schema, valid fixture, and producer change together.
  • Dead code deleted: run/trace-redaction.ts, internal/zip.ts, the ledger's appearsIn, the web engine's trace segments around restarts and CDP recovery, telemetry's config_trace_modes. redactFragments stays: text downloads use it since fix(e2e): rewrite downloads with the full ledger pass, the way traces are #806.
  • A video segment waits up to 1s for its first frame before it ends (packages/web/src/video.ts). Without the trace keeping the screencast busy, a segment stopped right after a navigation got no frame on Linux, and Playwright writes that as a white video: the video.webm inked 0 failure main also hit. Reproduced and verified in the mcr.microsoft.com/playwright:v1.63.0-noble container.
  • The late route-handler tests route a script the page waits for (/script-flags) instead of a fetch it issues after load, which raced the end of the body once tracing no longer slowed it.

Verified

Ran it locally: yes

  • testbed, e2e run tests/todos.e2e.ts: 7 passed, no trace/ directory or zip written. --video still writes one .webm per attempt.
  • trace: 'on' in a copy of the testbed config, --trace, --trace=on, and explore --trace off: each refused, exit 2, with the replacement message.
  • The packed e2e from this branch with the published @e2e-dev/web@0.11.2 and playwright@1.63.0 in a scratch project: the config loads and the test runs (before the manifest fix it was INVALID_CONFIG: engine "web": artifacts has unknown key "startTrace").
 FAIL  |web| tests/hello.e2e.ts > hello
ASSERTION_FAILED: expect.toHaveText failed
      Tests  1 failed | 0 passed (1)

(The failure is the deliberate assertion; no config error.)

Review in cubic

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e web: 91 passed

All 91 tests in 41 files
Test Time
🟢 tests/aria-hidden-flow.e2e.ts · 2 passed 658ms
🟢 aria hidden flow › picks the Pro plan by its visible text and confirms it 435ms
🟢 aria hidden flow › another plan shows the error and keeps the picker open 223ms
🟢 tests/async-states.e2e.ts · 2 passed 7.1s
🟢 async states › reads the code off the transient toast and verifies it once the button enables 2.2s
🟢 async states › a wrong code is rejected after the toast has gone 4.8s
🟢 tests/canvas-only.e2e.ts · 2 passed 196ms
🟢 canvas only › taps square, circle, then diamond at their pixel coordinates 102ms
🟢 canvas only › a shape out of order paints the error and resets progress 94ms
🟢 tests/canvas-whiteboard.e2e.ts · 2 passed 360ms
🟢 canvas whiteboard › drags both shapes into their slots and saves 194ms
🟢 canvas whiteboard › bounces a shape off the wrong slot and refuses to save early 166ms
🟢 tests/cart-totals.e2e.ts · 2 passed 328ms
🟢 cart totals › increasing a quantity updates the line total but the order summary stays stale (planted bug) 177ms
🟢 cart totals › a quantity never drops below one 151ms
🟢 tests/checkout-review.e2e.ts · 1 passed 201ms
🟢 shows a raw greeting token and an undefined delivery date (planted bug), yet places the order 201ms
🟢 tests/context-menu-trap.e2e.ts · 2 passed 591ms
🟢 context menu trap › right-click opens nothing; the row menu renames the file 308ms
🟢 context menu trap › the decoy menu items refuse and keep the file 283ms
🟢 tests/control-inventory.e2e.ts · 8 passed 3.6s
🟢 control inventory › check sets the checkbox and the radio without flipping a set one 242ms
🟢 control inventory › check picks a radio the pick replaces with its summary 188ms
🟢 control inventory › a long press and a double click are told apart from a tap 984ms
🟢 control inventory › the file menu opens on right-click only and Rename renames the file 218ms
🟢 control inventory › setInputFiles attaches files named from the project root 172ms
🟢 control inventory › the details view is left through the browser history 231ms
🟢 control inventory › scrollIntoView brings the footnote into view 302ms
🟢 control inventory › every exercise done shows the success message 1.3s
🟢 tests/css-content-ui.e2e.ts · 2 passed 300ms
🟢 css content ui › the tile labelled Ship it advances and confirming ships 165ms
🟢 css content ui › a wrong tile shows the CSS-rendered error and keeps the picker 135ms
🟢 tests/date-picker.e2e.ts · 2 passed 511ms
🟢 date picker › navigates three months ahead and books the required date 292ms
🟢 date picker › confirming without the exact date shows the error 219ms
🟢 tests/debounced-search.e2e.ts · 2 passed 2.8s
🟢 debounced search › a decoy one character off is refused 1.4s
🟢 debounced search › picking the exact item adds it to the cart 1.4s
🟢 tests/deferred-dialog.e2e.ts · 1 passed 1.1s
🟢 one submit opens one confirm, even when double-clicked 1.1s
🟢 tests/div-soup.e2e.ts · 2 passed 669ms
🟢 div soup › a wrong code is rejected 322ms
🟢 div soup › the right code grants access after the delete tile fixes a typo 347ms
🟢 tests/drag-and-drop.e2e.ts · 2 passed 649ms
🟢 drag and drop › an out-of-order item resets the dropzone 316ms
🟢 drag and drop › dropping Banana then Cherry passes 333ms
🟢 tests/filter-deep-link.e2e.ts · 2 passed 299ms
🟢 filter deep link › filtering writes the query to the URL 183ms
🟢 filter deep link › opening a shared link restores the filter 116ms
🟢 tests/gift-card-purchase.e2e.ts · 3 passed 514ms
🟢 gift card purchase › refuses to buy without an amount 142ms
🟢 gift card purchase › refuses a recipient without an at sign 182ms
🟢 gift card purchase › sends the gift card 190ms
🟢 tests/hover-menu.e2e.ts · 2 passed 444ms
🟢 hover menu › a decoy leaf is refused 202ms
🟢 hover menu › hovering Account, then Billing, reaches Redeem voucher 242ms
🟢 tests/iframe-form.e2e.ts · 2 passed 414ms
🟢 iframe form › a wrong code is refused by the host page 179ms
🟢 iframe form › the code read from one frame applies through the other 235ms
🟢 tests/image-only-ui.e2e.ts · 3 passed 412ms
🟢 image only ui › the icons have no names, so the bare svg locator is ambiguous 103ms
🟢 image only ui › a wrong icon shows the error image and keeps the icons 143ms
🟢 image only ui › tapping the star, then the heart, verifies the icons 166ms
🟢 tests/infinite-scroll.e2e.ts · 1 passed 3.9s
🟢 scrolls the feed until the Golden Ticket loads, then claims it 3.9s
🟢 tests/kanban-board.e2e.ts · 3 passed 628ms
🟢 kanban board › pointer drags move both cards into the goal layout 350ms
🟢 kanban board › a swipe along a path drags a card as well 131ms
🟢 kanban board › a plain tap moves nothing and the untouched board is rejected 147ms
🟢 tests/login-form.e2e.ts · 4 passed 602ms
🟢 login form › rejects a malformed email 131ms
🟢 login form › rejects a short password 135ms
🟢 login form › rejects an unknown account 151ms
🟢 login form › signs in and logs out 185ms
🟢 tests/lying-labels.e2e.ts · 4 passed 567ms
🟢 lying labels › the button whose accessible name says Pay now is the wrong one 131ms
🟢 lying labels › a text match for Pay now catches the decoy phrase too 85ms
🟢 lying labels › the field whose accessible name says Amount is the wrong one 168ms
🟢 lying labels › visible text drives the payment through 183ms
🟢 tests/native-dialogs.e2e.ts · 3 passed 398ms
🟢 native dialogs › answers the confirm, prompt, and alert chain 129ms
🟢 native dialogs › dismissing the confirm cancels the order 118ms
🟢 native dialogs › a wrong gift code is rejected 151ms
🟢 tests/newsletter-signup.e2e.ts · 1 passed 2.2s
🟢 subscribe renders no feedback and logs a TypeError (planted bug) 2.2s
🟢 tests/onboarding-wizard.e2e.ts · 5 passed 4.0s
🟢 onboarding wizard › back keeps what was typed and the brief comes back with it 221ms
🟢 onboarding wizard › the address step takes the brief through its bare-div dropdown 266ms
🟢 onboarding wizard › the profile step steers the calendar three decades back 1.0s
🟢 onboarding wizard › the preferences step flips the toggles the brief names and leaves the trap off 1.2s
🟢 onboarding wizard › the review step repeats the brief and finishes with the PIN 1.3s
🟢 tests/order-history.e2e.ts · 2 passed 1.4s
🟢 order history › overview and settings render their panels 155ms
🟢 order history › the orders tab never leaves its loading state (planted bug) 1.3s
🟢 tests/otp-auto-advance.e2e.ts · 3 passed 1.4s
🟢 otp auto-advance › focus advances with each digit and the full code verifies 475ms
🟢 otp auto-advance › backspace on an empty box clears and refocuses the previous one 141ms
🟢 otp auto-advance › a wrong code clears every box and starts over 797ms
🟢 tests/overlay-trap.e2e.ts · 1 passed 652ms
🟢 continues only after the banner and the overlay are gone 652ms
🟢 tests/playbook-cleanup.e2e.ts · 2 passed 413ms
🟢 playbook cleanup › deleting the draft removes it from an exact-name search 204ms
🟢 playbook cleanup › cancelling the dialog keeps the draft searchable 209ms
🟢 tests/price-sorting.e2e.ts · 3 passed 430ms
🟢 price sorting › opens in the featured order with sale prices struck through 115ms
🟢 price sorting › low to high sorts by the original price, not the paid one (planted bug) 144ms
🟢 price sorting › high to low is the same wrong order reversed (planted bug) 171ms
🟢 tests/product-reviews.e2e.ts · 1 passed 1.2s
🟢 the running-shoe page lists coffee-grinder reviews (planted bug) 1.2s
🟢 tests/promo-storefront.e2e.ts · 1 passed 1.4s
🟢 buys a deal once the promo chrome is out of the way 1.4s
🟢 tests/rich-text-editor.e2e.ts · 2 passed 497ms
🟢 rich text editor › bolding exactly the required word passes the check 197ms
🟢 rich text editor › bold that spills into the previous word fails the check 300ms
🟢 tests/saved-addresses.e2e.ts · 3 passed 517ms
🟢 saved addresses › adds an address and clears the form 173ms
🟢 saved addresses › ignores an add with an empty field 160ms
🟢 saved addresses › delete shows its toast but keeps the address, on retry too (planted bug) 184ms
🟢 tests/shadow-dom-form.e2e.ts · 2 passed 533ms
🟢 shadow DOM form › rejects a wrong access code 268ms
🟢 shadow DOM form › grants access with the code from the hint inside the root 265ms
🟢 tests/smoke.e2e.ts · 1 passed 372ms
🟢 home lists the scenarios and opens one 372ms
🟢 tests/stale-dom.e2e.ts · 1 passed 2.1s
🟢 taps the moving target three times across rebuilds of the list 2.1s
🟢 tests/sticky-chrome.e2e.ts · 1 passed 200ms
🟢 accepts the terms once the button clears the sticky footer 200ms
🟢 tests/virtualized-table.e2e.ts · 1 passed 1m 5s
🟢 scrolls the windowed table to the Golden Row and claims it 1m 5s
🟢 tests/wishlist.e2e.ts · 2 passed 1.6s
🟢 wishlist › saving toggles the button and the tab badge 318ms
🟢 wishlist › the wishlist tab renders the empty state despite the badge count (planted bug) 1.3s

e2e 0.17.0 · 1m 52s · web · run artifacts

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e web agent: 33 passed

34 agent steps · 26 replayed from cache · 20 model calls · 76.2k tokens (92% cached) · $0.0035

All 33 tests in 5 files
Test Agent Time
🟢 tests-agent/control-inventory.e2e.ts · 7 passed 7 steps 7.3s
🟢 control inventory › check sets the checkbox and the radio 1 step 573ms
🟢 control inventory › check picks a radio the pick replaces with its summary 1 step 273ms
🟢 control inventory › a long press and a double click are chosen over a plain tap 1 step 917ms
🟢 control inventory › a right-click opens the file menu and Rename renames the file 1 step 2.5s
🟢 control inventory › upload attaches the named project files 1 step 2.4s
🟢 control inventory › back returns from the details view to the inventory 1 step 252ms
🟢 control inventory › scroll_to brings the footnote into view 1 step 347ms
🟢 tests-agent/login-form.e2e.ts · 1 passed 1 step 325ms
🟢 act signs in with the benchmark account 1 step 325ms
🟢 tests-agent/planted-bugs.e2e.ts · 3 passed 4 steps · 8 calls 20.6s
🟢 cart totals: a judgment catches the stale order summary 2 steps · 4 calls 13.8s
🟢 checkout review: a judgment catches the broken copy 1 step · 1 call 1.5s
🟢 wishlist: a judgment catches the lost saved items 1 step · 3 calls 5.3s
🟢 tests-agent/scenarios.e2e.ts · 21 passed 21 steps · 12 calls 2m 33s
🟢 act completes shadow-dom-form 1 step · 3 calls 4.2s
🟢 act completes lying-labels 1 step · 3 calls 5.0s
🟢 act completes iframe-form 1 step · 3 calls 7.5s
🟢 act completes infinite-scroll 1 step 5.2s
🟢 act completes virtualized-table 1 step 1m 42s
🟢 act completes overlay-trap 1 step 839ms
🟢 act completes sticky-chrome 1 step 862ms
🟢 act completes async-states 1 step · 3 calls 6.2s
🟢 act completes debounced-search 1 step 2.3s
🟢 act completes hover-menu 1 step 445ms
🟢 act completes drag-and-drop 1 step 437ms
🟢 act completes kanban-board 1 step 703ms
🟢 act completes context-menu-trap 1 step 2.6s
🟢 act completes stale-dom 1 step 430ms
🟢 act completes otp-auto-advance 1 step 663ms
🟢 act completes date-picker 1 step 786ms
🟢 act completes rich-text-editor 1 step 7.8s
🟢 act completes playbook-cleanup 1 step 531ms
🟢 act completes promo-storefront 1 step 2.3s
🟢 act completes gift-card-purchase 1 step 2.3s
🟢 act filters the list and the URL carries the filter 1 step 196ms
🟢 tests-agent/unique-cache.e2e.ts · 1 passed 1 step 257ms
🟢 act adds an address with a run-unique label 1 step 257ms

e2e 0.17.0 · 3m 2s · web · run artifacts

@cubic-dev-ai cubic-dev-ai Bot 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.

All reported issues were addressed across 104 files

Heads up: you’re close to your included review allowance. Set a flex budget so reviews don’t pause.

Re-trigger cubic

Comment thread docs/goals.mdx Outdated
Comment thread docs/reference/errors.mdx
Comment thread skills/e2e/references/explore.md Outdated
Comment thread packages/e2e/tests/integration/filled-secrets.test.ts Outdated
Comment thread docs/reference/engine.mdx Outdated
Comment thread packages/e2e/tests/unit/report-markdown.test.ts
Comment thread packages/e2e/src/engine/manifest.ts
Comment thread packages/web/tests/integration/lifecycle.test.ts
Comment thread docs/migrate/playwright.mdx Outdated
Comment thread docs/reference/config.mdx
@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e ios agent: 21 passed, 1 skipped

25 agent steps · 134 model calls · 809.0k tokens (82% cached) · $0.0547

All 22 tests in 1 file
Test Agent Time
⏭️ tests-agent/scenarios.e2e.ts · 21 passed, 1 skipped 25 steps · 134 calls 13m 42s
🟢 act completes Login Form 1 step · 7 calls 1m 5s
🟢 act completes Infinite Scroll List 1 step · 3 calls 55.3s
🟢 act completes Modal Flow 1 step · 4 calls 16.9s
🟢 act completes Bottom Tabs 1 step · 3 calls 13.7s
🟢 act completes Text Input Variations 1 step · 3 calls 37.8s
🟢 act completes Broken Accessibility 2 steps · 7 calls 34.3s
🟢 act completes Vision Only 2 steps · 6 calls 32.6s
🟢 act completes Gestures 1 step · 13 calls 1m 4s
🟢 act completes Async States 1 step · 9 calls 38.7s
🟢 act completes Debounced Search 1 step · 5 calls 22.4s
🟢 act completes Flattened Registration Form 2 steps · 14 calls 1m 29s
🟢 act completes Flattened Login 2 steps · 11 calls 1m 16s
🟢 act completes Sticky Chrome Target 1 step · 7 calls 40.5s
🟢 act completes WebView Accessibility 1 step · 5 calls 29.4s
🟢 act completes Permission Prompt 1 step · 3 calls 19.3s
🟢 act completes Photo Picker 1 step · 4 calls 22.5s
🟢 act completes Product Catalog 1 step · 5 calls 19.5s
🟢 act completes Error Recovery 1 step · 6 calls 19.7s
🟢 act completes Choice Controls 1 step · 8 calls 46.0s
🟢 act completes Stripe PaymentSheet 1 step · 7 calls 49.4s
🟢 act completes Apple Pay 1 step · 4 calls 29.5s
⏭️ act completes Apple Pay Billing Address (skipped: the CI simulator's Apple Pay sheet skips the billing-address step, so the scenario cannot be completed there)

e2e 0.17.0 · 13m 42s · ios-simulator · run artifacts

@cubic-dev-ai cubic-dev-ai Bot 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.

All reported issues were addressed across 15 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread skills/e2e/references/explore.md
@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e android: 54 passed, 1 skipped

All 55 tests in 7 files
Test Time
⏭️ tests/controls.e2e.ts · 24 passed, 1 skipped 2m 59s
🟢 control inventory › a label query resolves a labeled text field 22.3s
🟢 control inventory › a labeled field answers name, display value, value reads, fill, and clear 12.8s
🟢 control inventory › a placeholder query and attribute reads find the field 5.0s
🟢 control inventory › a secure field takes a fill and denies value reads 6.6s
🟢 control inventory › press sends a character and Enter through the soft keyboard 8.9s
🟢 control inventory › a field autofocuses on mount and focus() moves the focus 13.3s
🟢 control inventory › toBeFocused follows the focus 9.3s
🟢 control inventory › a switch checks, unchecks, and reports its state 9.4s
🟢 control inventory › checkbox and radio roles answer getByRole, and a checkbox toggles by tap 6.9s
🟢 control inventory › checkbox and radio roles check, uncheck, and report their state 11.5s
🟢 control inventory › a tab role answers getByRole 3.8s
🟢 control inventory › a radio group reports the checked option 8.5s
🟢 control inventory › buttons report disabled, enabled, and a state that arrives later 8.1s
🟢 control inventory › a display: none element is absent rather than hidden, its visible twin attached 6.2s
🟢 control inventory › a header answers its accessible name 3.9s
🟢 control inventory › a tab row answers count, all, texts, filters, positions, and switching 5.2s
🟢 control inventory › a list answers counts, list-form text, reads, and boxes in order 5.3s
⏭️ 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 7.6s
🟢 control inventory › a double tap lands inside the 300 ms window 8.7s
🟢 control inventory › an ambiguous locator fails at once 5.2s
🟢 control inventory › screenshot, restart, and clearState reopen the app on its home list 8.4s
🟢 refusals › verbs a device never declares are refused before the engine 12ms
🟢 refusals › keys the soft keyboard cannot send are refused by the engine 1.2s
🟢 refusals › a missing locator fails as not found once its timeout passes 1.1s
🟢 tests/device-fixture.e2e.ts · 8 passed 1m 8s
🟢 device fixture › setOrientation rotates the window the app measures 4.8s
🟢 device fixture › home leaves the app, openApp brings it back where it was 6.0s
🟢 device fixture › foregroundApp sees the home screen after home() 4.5s
🟢 device fixture › closeApp then openApp relaunches on the home list 7.4s
🟢 device fixture › foregroundApp after closeApp reports the closed session as APP_NOT_OPEN 4.8s
🟢 device fixture › device.back pops the scenario 5.1s
🟢 device fixture › setNetwork and setAirplaneMode change what the app sees 15.7s
🟢 device fixture › setLocation and clearLocation change what the app reads 20.1s
🟢 tests/device.e2e.ts · 4 passed 35.2s
🟢 permission prompt › allowing the system dialog enables the microphone 6.6s
🟢 permission prompt › a denied prompt recovers once the permission is granted outside 12.1s
🟢 sequential onboarding echoes the exact values 10.0s
🟢 onboarding rejects a malformed email before advancing 6.5s
🟢 tests/flows-lists.e2e.ts · 7 passed 2m 8s
🟢 infinite scroll reaches the target item 17.7s
🟢 product catalog adds exactly two of the right variant 9.6s
🟢 gestures: long-press, then swipe left 7.9s
🟢 gestures: double-tap completes the flow 9.2s
🟢 sticky chrome: accept below the fold, then continue 10.6s
🟢 async states: load, pull to refresh, claim through the toast 11.6s
🟢 huge virtualized list reaches row 512 1m 2s
🟢 tests/flows.e2e.ts · 7 passed 49.5s
🟢 text inputs unlock the submit button 6.1s
🟢 filled text inputs report their values 4.9s
🟢 modal flow confirms through the native alert 7.7s
🟢 bottom tabs act inside the last tab 6.0s
🟢 error recovery retries, then confirms the delete 8.3s
🟢 choice controls place the exact order 8.3s
🟢 debounced search selects the target once results arrive 8.2s
🟢 tests/login-form.e2e.ts · 3 passed 29.0s
🟢 login form › rejects a malformed email 8.4s
🟢 login form › rejects an unknown account 8.5s
🟢 login form › signs in and logs out 12.1s
🟢 tests/smoke.e2e.ts · 1 passed 5.2s
🟢 home lists the scenarios and opens one 5.2s

e2e 0.17.0 · 8m 16s · android-emulator · run artifacts

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e ios: 2 flaky, 50 passed, 1 skipped

⚠️ 2 flaky tests passed on a retry

⚠️ control inventory › toBeFocused follows the focus
tests/controls.e2e.ts:101

ASSERTION_FAILED at step 5 of 5: expect.toBeFocused getByRole("textbox", name: "Autofocus field"), after 5.2s

  • Expected: focused
  • Observed: default states (1 match)
  • Failed the same way on 2 attempts: ASSERTION_FAILED at step 5. The retry that passed is the exception.
  • Screen: dev.e2e.benchmark / Control Inventory

Evidence: screenshot, log

⚠️ huge virtualized list reaches row 512
tests/flows-lists.e2e.ts:112

ASSERTION_FAILED at step 7 of 7: expect.toHaveText getByTestId("success-message"), after 5.0s

  • Expected: text "Found Row 0512"
  • Observed: no node (0 matches)
  • Screen: dev.e2e.benchmark / Huge Virtualized List

Evidence: screenshot, log

All 53 tests in 7 files
Test Time
⚠️ tests/controls.e2e.ts · 1 flaky, 22 passed, 1 skipped 3m 29s
🟢 control inventory › a label query resolves a labeled text field 11.4s
🟢 control inventory › a labeled field answers name, display value, value reads, fill, and clear 20.0s
🟢 control inventory › a placeholder query and attribute reads find the field 6.0s
🟢 control inventory › a secure field takes a fill and denies value reads 10.0s
🟢 control inventory › press sends a character and Enter through the soft keyboard 9.6s
🟢 control inventory › a field autofocuses on mount and focus() moves the focus 13.8s
⚠️ control inventory › toBeFocused follows the focus (2 failed attempts first) 11.2s
🟢 control inventory › a switch checks, unchecks, and reports its state 12.0s
🟢 control inventory › checkbox and radio roles answer getByRole, and a checkbox toggles by tap 10.3s
🟢 control inventory › checkbox and radio roles check, uncheck, and report their state 15.2s
🟢 control inventory › a radio group reports the checked option 10.2s
🟢 control inventory › buttons report disabled, enabled, and a state that arrives later 9.3s
🟢 control inventory › a display: none element is absent rather than hidden, its visible twin attached 8.3s
🟢 control inventory › a header answers its accessible name 5.0s
🟢 control inventory › a tab row answers count, all, texts, filters, positions, and switching 7.5s
🟢 control inventory › a list answers counts, list-form text, reads, and boxes in order 8.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.4s
🟢 control inventory › pointer verbs land at the point asked for 10.6s
🟢 control inventory › an ambiguous locator fails at once 6.4s
🟢 control inventory › screenshot, restart, and clearState reopen the app on its home list 11.6s
🟢 refusals › verbs a device never declares are refused before the engine 2ms
🟢 refusals › keys the soft keyboard cannot send are refused by the engine 1.4s
🟢 refusals › a missing locator fails as not found once its timeout passes 1.1s
⚠️ tests/flows-lists.e2e.ts · 1 flaky, 6 passed 3m 48s
🟢 infinite scroll reaches the target item 29.5s
🟢 product catalog adds exactly two of the right variant 10.9s
🟢 gestures: long-press, then swipe left 9.7s
🟢 sticky chrome: accept below the fold, then continue 11.3s
🟢 async states: load, pull to refresh, claim through the toast 17.2s
⚠️ huge virtualized list reaches row 512 (1 failed attempt first) 2m 13s
🟢 web view coupon form applies the code shown on the page 16.0s
🟢 tests/device-fixture.e2e.ts · 9 passed 1m 24s
🟢 device fixture › setAppearance flips the color scheme the app reads 12.5s
🟢 device fixture › setOrientation rotates the window the app measures 9.1s
🟢 device fixture › the clipboard reads back what was written 7.0s
🟢 device fixture › home leaves the app, openApp brings it back where it was 7.4s
🟢 device fixture › closeApp then openApp relaunches on the home list 8.0s
🟢 device fixture › foregroundApp after closeApp reports the closed session as APP_NOT_OPEN 5.7s
🟢 device fixture › device.back pops the scenario 6.6s
🟢 device fixture › setLocation and clearLocation change what the app reads 15.9s
🟢 device fixture › enrollBiometrics and setBiometrics answer a biometric prompt 11.5s
🟢 tests/device.e2e.ts · 2 passed 56.3s
🟢 sequential onboarding echoes the exact values 42.7s
🟢 onboarding rejects a malformed email before advancing 13.6s
🟢 tests/flows.e2e.ts · 7 passed 1m 43s
🟢 text inputs unlock the submit button 18.2s
🟢 filled text inputs report their values 32.3s
🟢 modal flow confirms through the native alert 11.3s
🟢 bottom tabs act inside the last tab 8.5s
🟢 error recovery retries, then confirms the delete 10.4s
🟢 choice controls place the exact order 10.5s
🟢 debounced search selects the target once results arrive 12.0s
🟢 tests/login-form.e2e.ts · 3 passed 54.3s
🟢 login form › rejects a malformed email 16.1s
🟢 login form › rejects an unknown account 13.8s
🟢 login form › signs in and logs out 24.3s
🟢 tests/smoke.e2e.ts · 1 passed 16.1s
🟢 home lists the scenarios and opens one 16.1s

e2e 0.17.0 · 8m 56s · ios-simulator · run artifacts

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e android agent: 20 passed

24 agent steps · 111 model calls · 574.4k tokens (87% cached) · $0.0317

All 20 tests in 1 file
Test Agent Time
🟢 tests-agent/scenarios.e2e.ts · 20 passed 24 steps · 111 calls 8m 52s
🟢 act completes Login Form 1 step · 4 calls 38.2s
🟢 act completes Infinite Scroll List 1 step · 3 calls 27.1s
🟢 act completes Modal Flow 1 step · 4 calls 12.8s
🟢 act completes Bottom Tabs 1 step · 3 calls 10.0s
🟢 act completes Text Input Variations 1 step · 5 calls 14.5s
🟢 act completes Broken Accessibility 2 steps · 6 calls 29.3s
🟢 act completes Vision Only 2 steps · 6 calls 29.0s
🟢 act completes Gestures 1 step · 13 calls 1m 0s
🟢 act completes Async States 1 step · 7 calls 29.3s
🟢 act completes Debounced Search 1 step · 4 calls 10.8s
🟢 act completes Huge Virtualized List 1 step · 3 calls 1m 15s
🟢 act completes Flattened Registration Form 2 steps · 8 calls 40.0s
🟢 act completes Flattened Login 2 steps · 6 calls 28.6s
🟢 act completes Sticky Chrome Target 1 step · 4 calls 21.2s
🟢 act completes WebView Accessibility 1 step · 4 calls 15.6s
🟢 act completes Permission Prompt 1 step · 4 calls 10.8s
🟢 act completes Product Catalog 1 step · 5 calls 14.4s
🟢 act completes Error Recovery 1 step · 6 calls 11.7s
🟢 act completes Choice Controls 1 step · 5 calls 25.2s
🟢 act completes Sequential Onboarding 1 step · 11 calls 28.7s

e2e 0.17.0 · 8m 53s · android-emulator · run artifacts

@okwasniewski
okwasniewski force-pushed the oskar/drop-playwright-trace branch from 5e10e1f to 0be324d Compare October 4, 2026 07:50
@okwasniewski

Copy link
Copy Markdown
Member Author

[claude-opus-5-5] responding on behalf of okwasniewski

Everything is green except web agent, and that job fails the same way on main (runs 37185108859, 37185606549). chore: version packages (#774) took @e2e-dev/web from 0.11.2 to 0.12.0. The engine minor is part of the replay cache key, so every committed recording under apps/web-benchmark/.e2e/cache/ now misses with REPLAY_STALE.

Re-recording takes a model key, which I don't have here: AI_GATEWAY_API_KEY=... pnpm --filter @e2e-dev/web-benchmark test:agent, then commit the new entries and delete the old ones. Left unlabeled until that lands.

Overlap: #804 fixes the same video.webm inked 0 failure in the test's frame wait. This stack fixes it in packages/web/src/video.ts (a segment waits up to 1s for its first frame). The cause is that Playwright writes a white video when a screencast got no frame, which a Linux container reproduces right after a navigation. Expect a conflict in lifecycle.test.ts.

trace (config, target, test/describe) and --trace are refused, pointing at
the failure pages and video. Removes startTrace/stopTrace from the engine
contract, the trace artifact kind and not-required redaction from report-1,
TRACE_WITHHELD, trace redaction, and the web engine's tracing. Recording
modes stay, for video.
…replacement for this commit

An @e2e-dev/web published before the removal still declares
artifacts.startTrace/stopTrace and sits inside its e2e peer range; the
manifest now accepts and never calls them. The refusal and docs name the
markdown reporter's failure pages, the replacement at this commit, and stop
calling on-all-retries a Playwright video mode.
…-blocking script in the late handler tests

A screencast on Linux delivers the frame of a page that just painted after
the paint, so a segment stopped right after a navigation had no frame and
Playwright wrote it white (seen on main in the mid-attempt video test). A
segment now waits up to 1s for its first frame. The late route handler
tests routed a fetch the page issues after load, which raced the body's
end; they route a script the document waits for instead.
@okwasniewski

Copy link
Copy Markdown
Member Author

[claude-opus-5-5] responding on behalf of okwasniewski

Superseded by #869: one PR, trace keeps its modes and now writes e2e trace pages under .e2e/traces/.

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