Skip to content

test(web-benchmark): re-record agent recordings for @e2e-dev/web 0.13 - #925

Merged
okwasniewski merged 2 commits into
mainfrom
oskar/rerecord-web-benchmark-0-18
Oct 6, 2026
Merged

okwasniewski merged 2 commits into
mainfrom
oskar/rerecord-web-benchmark-0-18

Conversation

@okwasniewski

@okwasniewski okwasniewski commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

What and why

  • The web agent job fails on main and every open PR with 30 REPLAY_STALE. chore: version packages #825 (chore: version packages) bumped @e2e-dev/web from 0.12.0 to 0.13.0. The engine reports its own package version (packages/web/src/engine.ts ownVersion()), and the cache key keeps its major.minor (engineCompatibilityVersion in packages/e2e/src/cache/identity.ts). So every committed entry sat under an old hash, and --strict-cache refused each step whose recording was stored under another key. No cache code changed.
  • Re-recorded tests-agent/ live: 30 new entries, one per old entry (same recordedFor step), and deleted the 30 old ones. Cache JSON only.
  • Recorded on macOS, CI replays on Linux. The first rich-text-editor trace selected with Control+Shift+ArrowLeft then 8x Shift+ArrowRight. On macOS Chromium that chord selects to line start, so the presses leave "approved". On Linux it selects one word, so they collapse it and bold nothing. Re-recorded until the trace passes on Linux Chromium too: it now selects with Shift+ArrowLeft from the end. No other entry uses a modifier chord.
  • Re-recorded playbook-cleanup: the first trace opened with two redundant taps on another playbook's menu.
  • Steps not replayed are the same as test(web-benchmark): re-record agent recordings for @e2e-dev/web 0.12 #833: two planted-bug acts with no entry (missed by design), two gap misses, two gap handoffs.

Verified

Ran it locally: yes

  • Web benchmark, e2e run --config e2e.agent.config.ts --strict-cache against the built packages, the same command CI runs.
main this branch (run 1) this branch (run 2)
Tests 30 failed (REPLAY_STALE) 33 passed 33 passed
Replayed 0 26 26
Handed off - 2 2
Missed 32 4 4
Model calls 8 20 20
Cost $0.0015 $0.0035 $0.0035
  • rich-text-editor trace replayed key by key in Linux Chromium (mcr.microsoft.com/playwright:v1.63.0-noble): old trace "Only the word approved must be bold", new trace "Document approved". Strict replay of that test 3x on macOS: 1 replayed each, plus a full strict suite: 33 passed, same counts as above.

Recording run: 33 passed, 32 missed, 124 model calls, $0.028.

Follow-up

Same as #833: every minor release of an engine invalidates all committed recordings, and the release PR does not catch it. Separate change.

Checklist

  • Changeset added (pnpm changeset) for any change to a published package, or the change is testbed, docs, or CI only.
  • Breaking change: title carries !, the changeset body names what breaks and what replaces it, and the deprecation warning landed a window earlier (stability policy in CONTRIBUTING.md).
  • Docs updated in the same PR: the docs/**/*.mdx page for the behavior, and skills/e2e/ if the skill describes it.
  • Contract change: emitted .d.ts reviewed, tests/types/sdk-types.ts updated; wire change edits the schema and both fixtures.
  • Engine contract change (e2e/engine): changesets for e2e, @e2e-dev/web, and @e2e-dev/mobile.

#825 bumped @e2e-dev/web to 0.13.0. The cache key carries the engine minor, so every committed entry sat under an old hash and the strict web agent job failed 30 tests with REPLAY_STALE. Re-recorded live; old entries deleted.

@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 31 files

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

Turn on auto-fix | Re-trigger cubic

@github-actions

github-actions Bot commented Oct 6, 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 441ms
🟢 aria hidden flow › picks the Pro plan by its visible text and confirms it 300ms
🟢 aria hidden flow › another plan shows the error and keeps the picker open 141ms
🟢 tests/async-states.e2e.ts · 2 passed 7.0s
🟢 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 228ms
🟢 canvas only › taps square, circle, then diamond at their pixel coordinates 115ms
🟢 canvas only › a shape out of order paints the error and resets progress 113ms
🟢 tests/canvas-whiteboard.e2e.ts · 2 passed 338ms
🟢 canvas whiteboard › drags both shapes into their slots and saves 193ms
🟢 canvas whiteboard › bounces a shape off the wrong slot and refuses to save early 145ms
🟢 tests/cart-totals.e2e.ts · 2 passed 314ms
🟢 cart totals › increasing a quantity updates the line total but the order summary stays stale (planted bug) 164ms
🟢 cart totals › a quantity never drops below one 150ms
🟢 tests/checkout-review.e2e.ts · 1 passed 161ms
🟢 shows a raw greeting token and an undefined delivery date (planted bug), yet places the order 161ms
🟢 tests/context-menu-trap.e2e.ts · 2 passed 548ms
🟢 context menu trap › right-click opens nothing; the row menu renames the file 302ms
🟢 context menu trap › the decoy menu items refuse and keep the file 246ms
🟢 tests/control-inventory.e2e.ts · 8 passed 3.4s
🟢 control inventory › check sets the checkbox and the radio without flipping a set one 263ms
🟢 control inventory › check picks a radio the pick replaces with its summary 155ms
🟢 control inventory › a long press and a double click are told apart from a tap 972ms
🟢 control inventory › the file menu opens on right-click only and Rename renames the file 201ms
🟢 control inventory › setInputFiles attaches files named from the project root 139ms
🟢 control inventory › the details view is left through the browser history 139ms
🟢 control inventory › scrollIntoView brings the footnote into view 236ms
🟢 control inventory › every exercise done shows the success message 1.2s
🟢 tests/css-content-ui.e2e.ts · 2 passed 330ms
🟢 css content ui › the tile labelled Ship it advances and confirming ships 196ms
🟢 css content ui › a wrong tile shows the CSS-rendered error and keeps the picker 134ms
🟢 tests/date-picker.e2e.ts · 2 passed 530ms
🟢 date picker › navigates three months ahead and books the required date 297ms
🟢 date picker › confirming without the exact date shows the error 233ms
🟢 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 621ms
🟢 div soup › a wrong code is rejected 281ms
🟢 div soup › the right code grants access after the delete tile fixes a typo 340ms
🟢 tests/drag-and-drop.e2e.ts · 2 passed 672ms
🟢 drag and drop › an out-of-order item resets the dropzone 343ms
🟢 drag and drop › dropping Banana then Cherry passes 329ms
🟢 tests/filter-deep-link.e2e.ts · 2 passed 309ms
🟢 filter deep link › filtering writes the query to the URL 148ms
🟢 filter deep link › opening a shared link restores the filter 161ms
🟢 tests/gift-card-purchase.e2e.ts · 3 passed 668ms
🟢 gift card purchase › refuses to buy without an amount 232ms
🟢 gift card purchase › refuses a recipient without an at sign 217ms
🟢 gift card purchase › sends the gift card 219ms
🟢 tests/hover-menu.e2e.ts · 2 passed 433ms
🟢 hover menu › a decoy leaf is refused 197ms
🟢 hover menu › hovering Account, then Billing, reaches Redeem voucher 236ms
🟢 tests/iframe-form.e2e.ts · 2 passed 614ms
🟢 iframe form › a wrong code is refused by the host page 367ms
🟢 iframe form › the code read from one frame applies through the other 247ms
🟢 tests/image-only-ui.e2e.ts · 3 passed 491ms
🟢 image only ui › the icons have no names, so the bare svg locator is ambiguous 114ms
🟢 image only ui › a wrong icon shows the error image and keeps the icons 179ms
🟢 image only ui › tapping the star, then the heart, verifies the icons 198ms
🟢 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 767ms
🟢 kanban board › pointer drags move both cards into the goal layout 382ms
🟢 kanban board › a swipe along a path drags a card as well 165ms
🟢 kanban board › a plain tap moves nothing and the untouched board is rejected 220ms
🟢 tests/login-form.e2e.ts · 4 passed 846ms
🟢 login form › rejects a malformed email 213ms
🟢 login form › rejects a short password 183ms
🟢 login form › rejects an unknown account 182ms
🟢 login form › signs in and logs out 268ms
🟢 tests/lying-labels.e2e.ts · 4 passed 781ms
🟢 lying labels › the button whose accessible name says Pay now is the wrong one 183ms
🟢 lying labels › a text match for Pay now catches the decoy phrase too 126ms
🟢 lying labels › the field whose accessible name says Amount is the wrong one 207ms
🟢 lying labels › visible text drives the payment through 265ms
🟢 tests/native-dialogs.e2e.ts · 3 passed 479ms
🟢 native dialogs › answers the confirm, prompt, and alert chain 147ms
🟢 native dialogs › dismissing the confirm cancels the order 164ms
🟢 native dialogs › a wrong gift code is rejected 168ms
🟢 tests/newsletter-signup.e2e.ts · 1 passed 2.3s
🟢 subscribe renders no feedback and logs a TypeError (planted bug) 2.3s
🟢 tests/onboarding-wizard.e2e.ts · 5 passed 4.3s
🟢 onboarding wizard › back keeps what was typed and the brief comes back with it 309ms
🟢 onboarding wizard › the address step takes the brief through its bare-div dropdown 297ms
🟢 onboarding wizard › the profile step steers the calendar three decades back 1.1s
🟢 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.5s
🟢 order history › overview and settings render their panels 171ms
🟢 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 464ms
🟢 otp auto-advance › backspace on an empty box clears and refocuses the previous one 139ms
🟢 otp auto-advance › a wrong code clears every box and starts over 810ms
🟢 tests/overlay-trap.e2e.ts · 1 passed 731ms
🟢 continues only after the banner and the overlay are gone 731ms
🟢 tests/playbook-cleanup.e2e.ts · 2 passed 475ms
🟢 playbook cleanup › deleting the draft removes it from an exact-name search 225ms
🟢 playbook cleanup › cancelling the dialog keeps the draft searchable 250ms
🟢 tests/price-sorting.e2e.ts · 3 passed 367ms
🟢 price sorting › opens in the featured order with sale prices struck through 107ms
🟢 price sorting › low to high sorts by the original price, not the paid one (planted bug) 126ms
🟢 price sorting › high to low is the same wrong order reversed (planted bug) 134ms
🟢 tests/product-reviews.e2e.ts · 1 passed 1.1s
🟢 the running-shoe page lists coffee-grinder reviews (planted bug) 1.1s
🟢 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 559ms
🟢 rich text editor › bolding exactly the required word passes the check 275ms
🟢 rich text editor › bold that spills into the previous word fails the check 284ms
🟢 tests/saved-addresses.e2e.ts · 3 passed 543ms
🟢 saved addresses › adds an address and clears the form 187ms
🟢 saved addresses › ignores an add with an empty field 177ms
🟢 saved addresses › delete shows its toast but keeps the address, on retry too (planted bug) 179ms
🟢 tests/shadow-dom-form.e2e.ts · 2 passed 550ms
🟢 shadow DOM form › rejects a wrong access code 270ms
🟢 shadow DOM form › grants access with the code from the hint inside the root 280ms
🟢 tests/smoke.e2e.ts · 1 passed 425ms
🟢 home lists the scenarios and opens one 425ms
🟢 tests/stale-dom.e2e.ts · 1 passed 2.2s
🟢 taps the moving target three times across rebuilds of the list 2.2s
🟢 tests/sticky-chrome.e2e.ts · 1 passed 238ms
🟢 accepts the terms once the button clears the sticky footer 238ms
🟢 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.5s
🟢 wishlist › saving toggles the button and the tab badge 237ms
🟢 wishlist › the wishlist tab renders the empty state despite the badge count (planted bug) 1.3s

e2e 0.18.0 · 1m 53s · web · run artifacts

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e web agent: 33 passed

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

All 33 tests in 5 files
Test Agent Time
🟢 tests-agent/control-inventory.e2e.ts · 7 passed 7 steps 8.9s
🟢 control inventory › check sets the checkbox and the radio 1 step 807ms
🟢 control inventory › check picks a radio the pick replaces with its summary 1 step 516ms
🟢 control inventory › a long press and a double click are chosen over a plain tap 1 step 1.2s
🟢 control inventory › a right-click opens the file menu and Rename renames the file 1 step 2.8s
🟢 control inventory › upload attaches the named project files 1 step 2.6s
🟢 control inventory › back returns from the details view to the inventory 1 step 466ms
🟢 control inventory › scroll_to brings the footnote into view 1 step 580ms
🟢 tests-agent/login-form.e2e.ts · 1 passed 1 step 447ms
🟢 act signs in with the benchmark account 1 step 447ms
🟢 tests-agent/planted-bugs.e2e.ts · 3 passed 4 steps · 8 calls 11.6s
🟢 cart totals: a judgment catches the stale order summary 2 steps · 4 calls 5.7s
🟢 checkout review: a judgment catches the broken copy 1 step · 1 call 1.4s
🟢 wishlist: a judgment catches the lost saved items 1 step · 3 calls 4.5s
🟢 tests-agent/scenarios.e2e.ts · 21 passed 21 steps · 12 calls 2m 42s
🟢 act completes shadow-dom-form 1 step · 3 calls 3.9s
🟢 act completes lying-labels 1 step · 3 calls 4.9s
🟢 act completes iframe-form 1 step · 3 calls 4.0s
🟢 act completes infinite-scroll 1 step 6.7s
🟢 act completes virtualized-table 1 step 1m 56s
🟢 act completes overlay-trap 1 step 886ms
🟢 act completes sticky-chrome 1 step 1.0s
🟢 act completes async-states 1 step · 3 calls 6.7s
🟢 act completes debounced-search 1 step 2.4s
🟢 act completes hover-menu 1 step 574ms
🟢 act completes drag-and-drop 1 step 485ms
🟢 act completes kanban-board 1 step 773ms
🟢 act completes context-menu-trap 1 step 2.9s
🟢 act completes stale-dom 1 step 759ms
🟢 act completes otp-auto-advance 1 step 996ms
🟢 act completes date-picker 1 step 972ms
🟢 act completes rich-text-editor 1 step 2.9s
🟢 act completes playbook-cleanup 1 step 607ms
🟢 act completes promo-storefront 1 step 2.3s
🟢 act completes gift-card-purchase 1 step 2.4s
🟢 act filters the list and the URL carries the filter 1 step 263ms
🟢 tests-agent/unique-cache.e2e.ts · 1 passed 1 step 351ms
🟢 act adds an address with a run-unique label 1 step 351ms

e2e 0.18.0 · 3m 4s · web · run artifacts

…traces

rich-text-editor bolded via Control+Shift+ArrowLeft then Shift+ArrowRight x8: on macOS the chord selects to line start, on Linux one word, so CI collapsed the selection and bolded nothing. New trace selects with Shift+ArrowLeft from the end, same result on both. playbook-cleanup dropped two redundant taps on an unrelated menu.
@okwasniewski
okwasniewski merged commit b7ba009 into main Oct 6, 2026
22 checks passed
@okwasniewski
okwasniewski deleted the oskar/rerecord-web-benchmark-0-18 branch October 6, 2026 13:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant