Skip to content

Releases

v0.8.0

Choose a tag to compare

@kblok kblok released this 02 Nov 14:47
09f464c

What's Changed

  • docs: remove stale not-ported lines from COMPATIBILITY.md by @kblok in #657
  • Strip the XCUIElementType prefix when normalizing mobile node kinds (upstream 1133) by @kblok in #659
  • Keep exact: false and the role's article in MCP locate advice (upstream #1147) by @kblok in #658
  • Port test filters: the filter seam, change detection, and report fields (upstream #1206, #1345) by @kblok in #662
  • Bound each mobile input by the operation's remaining budget (upstream #1073) by @kblok in #660
  • Port screen.scrollUntilVisible and locator.scrollUntilVisible by @kblok in #664
  • Add Get started and Samples sections to the docfx site by @kblok in #663
  • Refuse an empty verdict summary at the done tool (upstream createVerdictTool) by @kblok in #666
  • Replace DocFX docs with an Astro Starlight site by @kblok in #667
  • Extract StreamRedactor and HoldFrom as upstream does (#656) by @kblok in #679
  • Drive the InputBudget tests with a fake clock (fixes flaky test, #668) by @kblok in #683
  • Port the web Browser fixture's onDialog and waitForDownload, with sanitizeFilename and artifactPath by @kblok in #686
  • TestMu web: session name, Windows 11 default, blank-credential check by @kblok in #671
  • Port the migrate-to-e2e skill, coding-agents and Limrun docs (upstream 1109) by @kblok in #672
  • Retry model requests and replay reasoning on Google and Bedrock (refs #652) by @kblok in #678
  • Create FUNDING.yml by @kblok in #688
  • Port the trace cache identity: key the cache by traceCacheKeyHash (upstream identity.ts) by @kblok in #687
  • Mobile provider parity: provider recording, device.locator, in-flight commands (#650) by @kblok in #697
  • Locate in the engine: WebEngine and DocumentEngine implement LocateAsync by @kblok in #698
  • Record Observation and Engine events, observation size and revision, and the skip reason of an agent step by @kblok in #700
  • Sync docs wording with upstream: queued MCP call cancel and new-tab media values by @kblok in #689
  • Config: app.command, readyUrl and port 0 (refs #645) by @kblok in #699
  • Read a web locate under the wait's remaining budget by @kblok in #703
  • Port the session store and the session-1 schema (refs #649) by @kblok in #707
  • Bedrock: sign each retry attempt again by @kblok in #704
  • Port browser.locator, browser.frameLocator and expect(browser).toHaveClass by @kblok in #710
  • Expect the Dariten local-demo banner by @kblok in #715
  • Serve the docs site under /e2e-dotnet on Vercel by @kblok in #713
  • Retire GitHub Pages for the docs site by @kblok in #716
  • Resolve Bedrock credentials through the AWS credential chain by @kblok in #719
  • Keep agent worktrees out of the Entire Brain seed by @kblok in #724
  • Fix three intermittently failing Linux CI tests by @kblok in #723
  • Rewrite text downloads through the secret ledger (#682) by @kblok in #722
  • Document that a failed explore cleanup joins the outcome by @kblok in #717
  • Replay thoughtSignature on a Gemini plain text part by @kblok in #726
  • Track a cancelled mobile command until the daemon finishes it by @kblok in #718
  • Launch Firefox and WebKit through WebEngineOptions.BrowserName by @kblok in #725
  • Name the engine in the report target (IEngine.Name) by @kblok in #727
  • Fix timing flakes in the filter-deadline tests by @kblok in #730
  • Record observationRevision on explore findings by @kblok in #729
  • Add a dark marketing homepage to the docs site by @kblok in #720
  • Port the agent-judgment-2 response grammar and its schemas (#706) by @kblok in #731
  • Stop CodeRabbit requesting changes; remove Entire Brain files by @kblok in #732
  • Keep a location on the app's own origin as its path (appLocation) by @kblok in #755
  • Port writeHostTrace and the open-host-trace tests (#705) by @kblok in #758
  • Port e2e init: scaffold config, install skill, register MCP by @kblok in #761
  • Record Browser and Device fixture calls as harness steps by @kblok in #762
  • Document that Gemini schemas go unconverted, as the AI SDK does (#676) by @kblok in #763
  • Config: maxObservationBytes and maxInputTokens with observation cutting by @kblok in #711
  • Reference src/E2E and src/E2E.NUnit from the TodoMvc sample by @kblok in #764
  • Replay parity: verifyEndState waitMs, recorded end wait, viewport share of a scrolled list by @kblok in #712
  • Port app.identity, app.environment, launchArguments and permissions (#695) by @kblok in #759
  • Report the screen size as Observation.Viewport from the mobile and Windows engines by @kblok in #768
  • Attribute a tool's nested model generation to its step (AiTrace ExecuteTool) by @kblok in #770
  • Live scroll parity: re-find a scrolled list by its place by @kblok in #769
  • Fix flaky Replaces_a_dropped_playwright_browser test (ECONNREFUSED) (#767) by @kblok in #771
  • ObservationFeed: keep the rendered look under the current redactor (#765) by @kblok in #773
  • Extract retryingObserve and checkStepClock from the agent (agent/phases.ts) by @kblok in #774
  • Keep a web ref strict only when its locator matched alone (#766) by @kblok in #772
  • Phases follow-up: Partial_ ports, guard deadline, fake clock (after #774) by @kblok in #776
  • Fail the attempt with a route or dialog handler error that no step follows (settleAttempt) by @kblok in #777
  • Extract ArtifactStore and createAttemptArtifacts from upstream (#721) by @kblok in #778
  • Port the e2e init prompts (engines, gateway, skill and MCP locations, confirmation) by @kblok in #779
  • Share the app command across holders and stop it at the end of the run (#696) by @kblok in #780
  • Port the run-wide ModelUsage accumulator; rename the per-call DTO to ModelCallUsage (breaking) by @kblok in #781
  • Hide the screenshot caret with a stylesheet (upstream #1288) by @kblok in #784
  • Guard the waitFor capture with the step clock (#775) by @kblok in #783
  • Add Kind and Redaction to StoredArtifactLink and port the putLink tests by @kblok in #785
  • Exit with the cleanup error's code when a passed test's cleanup failed (upstream #1233) by @kblok in #786
  • Add Browser.ClearCookiesAsync (upstream #1046) by @kblok in #789
  • Add locator filter hasNot and hasNotText (upstream #1334, #1037) by @kblok in #790
  • Skip booted devices another agent-device session holds (upstream #1379) by @kblok in #787
  • Point the upstream parity check at docs-site/ by @kblok in #791
  • Add a self-healing tests section; name skipped upstream docs (upstream #1430, #1444, #1441, #1397) by @kblok in #792
  • Bump agent-device to 0.21.33 (upstream #1420) by @kblok in #794
  • Fix the three review threads left open on #792 by @kblok in #800
  • Grant browser pe...
Read more

v0.7.0

Choose a tag to compare

@kblok kblok released this 24 Oct 21:01
1265579

What's Changed

  • Audit COMPATIBILITY.md against upstream main (ee901b3) by @kblok in #463
  • Accept zero for EAS minute limits and name the bad option by @kblok in #464
  • Match Android test ids without their package prefix in DeviceLocator by @kblok in #465
  • Redact explore finding text and cap reportedFindings by @kblok in #466
  • Observe responses before the first navigation by @kblok in #467
  • Add OnAction hook to agent.act by @kblok in #469
  • Resolve locators in the engine, so an unreadable Android snapshot keeps polling by @kblok in #474
  • Show what each step did, the hook it ran in, and what the app logged on the trace page by @kblok in #460
  • Add Browser.UnrouteAllAsync by @kblok in #476
  • Keep artifact screenshots after a secret fill by @kblok in #477
  • Fail a model GitHub Copilot does not serve with MODEL_UNAVAILABLE, naming the model by @kblok in #480
  • Record the agent's turns of a step and show them on the trace page by @kblok in #481
  • Pass the engine's measured keyboard state to executors by @kblok in #482
  • Add Screen.TreeAsync and Screen.DebugAsync by @kblok in #478
  • Explore: accept severity 3.0 and record a cancelled step by @kblok in #485
  • Name an attempt's directory with resultSegment by @kblok in #486
  • Tell what became of each step's recording and which model recorded it by @kblok in #488
  • Test the stored model attribution of a cache entry and document it in the debugging guide by @kblok in #489
  • Explore: surface a cancel in the finding tool as a cancel by @kblok in #490
  • Failure evidence: look at the app before the test's own teardown by @kblok in #491
  • Show the prompt cache split and the cost of each model call in the agent step table by @kblok in #492
  • Read an empty iOS text field as empty, not as its placeholder by @kblok in #494
  • Port the OAuth errors and token-endpoint tests by @kblok in #495
  • Trace page: tell every attempt of a test on one page by @kblok in #497
  • ToHaveScreenshotAsync fails with POLICY_DENIED when masking is unproven by @kblok in #498
  • Make the missing-session DevFlow test independent of the clock by @kblok in #502
  • Read the OAuth token response through readJsonBody by @kblok in #500
  • Attempt directories: tell two tests with one title apart by their class by @kblok in #504
  • Fix the flaky timed-out body test in ExpectSoftInARunTests by @kblok in #505
  • MediaEmulationTests: wait for a popup's media instead of reading it at load by @kblok in #506
  • Report: add the report-1 schema and the atomic report writer by @kblok in #507
  • Test AgentDiscovery.WaitForStatusAsync deadline and never-answers paths by @kblok in #508
  • Record StreamRedactor as not ported by @kblok in #509
  • Port the secret-never-reaches-the-model test from upstream 5b6a731e by @kblok in #510
  • Follow upstream 5b6a731e in the explore tests by @kblok in #511
  • Build the report's run-level parts: targets, summary, usage, limits, status, VCS by @kblok in #514
  • Port the merged unit tests from upstream fe2c3450 by @kblok in #516
  • Port the agent and cache test changes from upstream adcfc2ba and c9445ce6 by @kblok in #517
  • Mask a password inside a closed shadow root in artifact screenshots by @kblok in #519
  • EngineLocateTests: give the retry test a deadline that fits its poll sleeps by @kblok in #520
  • COMPATIBILITY: list the upstream test-only tests the port does not run by @kblok in #522
  • Give the step start observation Truncated and Path by @kblok in #525
  • Port the engine cancellation guards and merged web tests from upstream a13e119c by @kblok in #521
  • Remove port tests whose upstream it was deleted or merged by @kblok in #526
  • Extract StaleOr and port the upstream staleOr tests by @kblok in #530
  • Stop the test host crash from a connection reset before accept by @kblok in #529
  • Write report.json after every attempt by @kblok in #531
  • Bind the OAuth callback server to the IPv4 loopback address by @kblok in #535
  • Remove DecideTraceReplayThroughTheActTests, which have no upstream it by @kblok in #536
  • Wait through an iOS app not running yet after a launch by @kblok in #537
  • Port the tests that need a report now that report.json exists by @kblok in #541
  • Expose the closed session report as E2ESession.Report() by @kblok in #538
  • Classify a content-filter refusal as MODEL_REFUSED by @kblok in #539
  • Report: a blocked run reads exit code 2 by @kblok in #545
  • Reopen the app inside the app.restart and app.clearState step by @kblok in #546
  • Prefix a failed or blocked verdict message with the api and status by @kblok in #547
  • Return a typed Report from E2ESession.Report() by @kblok in #550
  • Make the cleanup budget test independent of machine speed by @kblok in #548
  • Skills: start each test near its screen and fix a failed test from its trace page by @kblok in #555
  • TestMu: take upstream's Edge flag, idleTimeout and project defaults, and capability validation by @kblok in #556
  • Mobile: start the iOS keyboard-dismissing drag clear of controls by @kblok in #557
  • Add a CodeRabbit upstream parity check (warning) by @kblok in #559
  • Pin agent-device 0.21.29 (upstream 07eb481) by @kblok in #561
  • Pick the engine of a config target in e2e explore and e2e mcp by @kblok in #560
  • Make the CodeRabbit Upstream parity check an error by @kblok in #563
  • Launch a device's pinned app before the first observation in explore and mcp by @kblok in #562
  • Make CodeRabbit request changes while findings are open by @kblok in #564
  • Bump Microsoft.Playwright to 1.64.0 by @kblok in #565
  • Support hosted device providers in e2e explore and e2e mcp by @kblok in #566
  • Keep a timeout a timeout in StaleOr and NavigationStaleOr by @kblok in #572
  • Note truncated agent observations in the report (upstream #1301) by @kblok in #575
  • Show the test line for each action in an e2e mcp session by @kblok in #579
  • Keep the request prefix a Claude thinking block is bound to by @kblok in #578
  • Resolve test lines through the engine's LocateAsync by @kblok in #580
  • Extract openStandaloneAttempt and port upstream's host lifecycle tests by @kblok in #582
  • Make a zero git budget deterministic by @kblok in #583
  • docs: record why upstream's off-site iframe text is not ported (#1333) by @kblok in #594
  • Run the drafted test lines of an e2e mcp session in a test run by @kblok in #584
  • docs(skills): rerun one test with the replay cache on while iterating by @kblok in #595
  • test(cli): bound the drafted run's output reads and escape i...
Read more

v0.6.0

Choose a tag to compare

@kblok kblok released this 19 Oct 17:39
0d1ea30

What's Changed

  • Write a trace page for a failed attempt, and an agent step table under E2E_DEBUG by @kblok in #451
  • Take --trace, --video, --debug, and --ai-trace on e2e explore by @kblok in #454
  • Turn off the CodeRabbit docstring coverage check by @kblok in #455
  • Record video on the mobile engine by @kblok in #458
  • Keep the screen, a screenshot, and the closest nodes of a failed attempt, and carry details on errors by @kblok in #459
  • Pin an agent to a test or class, and add test-level agent context by @kblok in #461
  • Add MobileAppTest for NUnit and xUnit, and read the device app from e2e.config.json by @kblok in #462

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@kblok kblok released this 18 Oct 22:18
7c221fb

What's Changed

  • Stop OAuthHandler from refreshing for an already cancelled request by @kblok in #342
  • Show the selected text of a focused field in the agent snapshot by @kblok in #344
  • Fix the whitespace that the format check rejects in Screen.cs by @kblok in #349
  • Add a Contents list to long skill references by @kblok in #350
  • Release browsers, drivers, and processes when a start or a dispose fails by @kblok in #351
  • Fix replay-cache and test-adapter correctness defects by @kblok in #352
  • Add a checklist for reviewing .NET and C# code by @kblok in #355
  • Check vendor and user text before it reaches the terminal, the browser, or a recording by @kblok in #353
  • Surface a caller's cancel as a cancel, and return a malformed tool call to the model by @kblok in #354
  • Document that a cancelled model call stops waiting for a token refresh by @kblok in #356
  • Read the first recognized ARIA role token by @kblok in #357
  • Read OPENCODE_API_KEY in e2e models opencode-console by @kblok in #358
  • Print the e2e login URL on one copyable line by @kblok in #359
  • Name the failed end-state checks in end-mismatch details by @kblok in #360
  • Omit the Next.js route announcer from observations by @kblok in #361
  • Hold keys and modifiers with Keyboard.DownAsync and UpAsync by @kblok in #362
  • Let E2E_CACHE_DIR replace cache.dir by @kblok in #363
  • Define an atomic ActAsync goal and route each job to one reference in the skill by @kblok in #365
  • Locator reads wait for their match until the action timeout by @kblok in #366
  • Point a locate role name that matches nothing at the node's text by @kblok in #367
  • Keep mobile device commands on the selected device after closeApp by @kblok in #368
  • Document the Limrun provider in the setup reference by @kblok in #377
  • Split an act step into its harness and an executor by @kblok in #375
  • Pin agent-device 0.21.25 so Android emulators can fold by @kblok in #374
  • Stop the settle tests from hanging on a lost timer advance by @kblok in #378
  • Let model requests carry images by @kblok in #373
  • Name the action in the cache detail when a replay stops at an action by @kblok in #372
  • Redact secrets in poll, screenshot, waitFor, soft-failure and cause messages by @kblok in #371
  • Evict a replayed cache entry when a later assertion fails on the app by @kblok in #370
  • Emulate dark mode and reduced motion in the web engine by @kblok in #369
  • Let judgments read a masked screenshot by @kblok in #379
  • Rename partial tests that keep an upstream name by @kblok in #389
  • Let a test project bring its own step executor by @kblok in #380
  • Record the windowed-list row key as not applicable by @kblok in #390
  • Add the create-verification-skill skill by @kblok in #391
  • Name STEP_NOT_AWAITED as not applicable; negation window already ported by @kblok in #392
  • Extract the functions upstream's tests call, and review every PR by @kblok in #393
  • Extract SerializeLedger from the act context by @kblok in #395
  • Extract CreateGrammarTools and CreateVerdictTool by @kblok in #394
  • Extract NodeReading and ReadingShape and port the reading tests against them by @kblok in #396
  • Extract replayTrace and ReplayHost from the act harness by @kblok in #398
  • Keep replay's secret and scroll-to-text handling as before the extraction by @kblok in #404
  • Ship the Limrun provider as its own package, E2E.Limrun by @kblok in #406
  • Lease hosted browsers through an IBrowserProvider by @kblok in #408
  • Ship the EAS provider as its own package, E2E.Eas by @kblok in #407
  • Let a browser provider serve downloads and record the browser by @kblok in #409
  • Add E2E.TestMu: TestMu AI hosted browsers by @kblok in #410
  • Add an Appium device client for TestMu mobile devices by @kblok in #411
  • Connect to the TestMu grid with the Playwright protocol by @kblok in #413
  • Add E2E.Kernel: run web targets in Kernel's hosted Chromium by @kblok in #412
  • Fix Limrun devices refusing every command with LEASE_SCOPE_MISMATCH by @kblok in #414
  • Run the MobileApp sample tests on a Limrun iOS simulator by @kblok in #415
  • Keep the prepare failure when the hosted device release fails by @kblok in #416
  • Pack the Release build in CI instead of building ten more times by @kblok in #417
  • Explain how to pick a device when several simulators match by @kblok in #418
  • Fix the MobileApp sample on Limrun without E2E_MOBILE_APP_PATH by @kblok in #419
  • Add Explore.ExploreAsync: explore an app toward a goal by @kblok in #422
  • Read the iOS screen title from the bar identifier only when the bar shows it by @kblok in #421
  • Decide trace replay in one place, as upstream does by @kblok in #420
  • Add a mobile reference to the e2e-dotnet skill by @kblok in #423
  • Extract StepTraceSession and port the step-cache tests against it by @kblok in #425
  • Record steps through TraceRecorder, as upstream does by @kblok in #424
  • Hold modifier keys on agent tap and double tap by @kblok in #430
  • Add the e2e explore command by @kblok in #433
  • Accept trace and video settings in the config by @kblok in #434
  • Record the steps of an attempt and bound the step ledger by @kblok in #437
  • Time the phases of a test with E2E_DEBUG by @kblok in #435
  • Record every model call with E2E_AI_TRACE by @kblok in #438
  • Stop the throwing-read poll test from failing on a busy machine by @kblok in #439
  • Record video on the web engine by @kblok in #436
  • Collect the screen after an action and the environment on the web engine by @kblok in #442
  • Trace calls to the DevFlow agent, and pack the package on release by @kblok in #441
  • Drive a MAUI app through the DevFlow agent by @kblok in #440

Full Changelog: v0.4.1...v0.5.0

v0.4.1

Choose a tag to compare

@kblok kblok released this 15 Oct 12:23
be216cc

What's Changed

  • Test reasoning replay and the MarkLatest cache mark in the model providers by @kblok in #335
  • Port the loop guard, soft failure, and OAuth refresh waiter unit tests by @kblok in #336
  • Document the API and behavior changes the skill and docs missed by @kblok in #337
  • Suggest the nearest config key like upstream does by @kblok in #343
  • Publish E2E.Mobile to NuGet by @kblok in #345

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@kblok kblok released this 14 Oct 21:01
66c1ee9

What's Changed

  • Name the locale and time zone test after its upstream it by @kblok in #214
  • Port the secret ledger near-miss and path-form tests by @kblok in #215
  • Name the budget test after its upstream it by @kblok in #216
  • Port two unit/config tests and match upstream on secret collisions and discovery by @kblok in #217
  • Port the missing step-cache tests, and keep a passing step passing when its end look fails by @kblok in #218
  • Say which tests may have no upstream it by @kblok in #227
  • Normalize and validate the app base URL by @kblok in #228
  • Port the header scoping test and drop duplicate port-only tests by @kblok in #229
  • Port the testbed pages and the tests that need them by @kblok in #230
  • Port the agent config, entry prompt, and verdict unit tests by @kblok in #231
  • Port the web read-node, glyph name, label, and closed-shadow tests by @kblok in #242
  • Port the web unit tests and match upstream option and error checks by @kblok in #243
  • Port the web lifecycle, CDP attach, protected app, and nested frame tests by @kblok in #244
  • Force a verdict when the model repeats itself by @kblok in #246
  • End a too-large model request with CONTEXT_OVERFLOW by @kblok in #247
  • Replay the model's reasoning between turns by @kblok in #248
  • Port the web visibility, evaluate, and observation-metadata tests by @kblok in #245
  • Retry an act verb on a node that went stale by @kblok in #249
  • Redact the basic-auth credential a Secret password becomes by @kblok in #255
  • Read and fill contenteditable editors, and let a generic secret fill one by @kblok in #251
  • Add e2e install to install Playwright browsers by @kblok in #250
  • Redact the part of a secret a cut name or text ends with by @kblok in #254
  • Read the text selected in the focused field by @kblok in #252
  • Require ports to follow upstream's structure and names by @kblok in #262
  • Reduce link targets in observations to origin and path by @kblok in #253
  • Port the scripted, screenshot, skip-after-failure, and secrets tests by @kblok in #261
  • Port the agent act tests, and let the model see a failed navigate by @kblok in #260
  • Port the ledger, reading, secrets, login, help, config, and engine error tests by @kblok in #259
  • Match upstream reads for textContent and inputValue by @kblok in #266
  • Redact session secrets in failed matcher messages by @kblok in #265
  • Use upstream's names and file layout for code already on main by @kblok in #268
  • Port the agent judgment, policy, trace cache hand-off, and named agent tests by @kblok in #270
  • Port the replaced-node, engine contract, engine secret, and soft failure tests by @kblok in #271
  • Replay Anthropic thinking blocks and chat-completions reasoning by @kblok in #274
  • Show href, test id and placeholder in the agent snapshot by @kblok in #276
  • Shrink the history and retry once after a context overflow by @kblok in #277
  • Port the mobile snapshot model by @kblok in #275
  • Report STEP_TIMEOUT when an observation outlives the waitFor deadline by @kblok in #278
  • Add the mobile engine, the agent-device client, and the device pool by @kblok in #279
  • Test the all-dot target name and tighten the session host tests by @kblok in #280
  • Port upstream unit tests for text, trace store, secrets and visible queries by @kblok in #281
  • Sync the mobile engine with upstream 62d55249 by @kblok in #282
  • Port the device surface: actions, device fixture, and tools by @kblok in #286
  • Cut text like upstream's bound by @kblok in #284
  • Sync the mobile engine with upstream fc906441 by @kblok in #306
  • Port the EAS Simulators device provider by @kblok in #307
  • Port more upstream unit tests: params, filters, polls, SSE, logins by @kblok in #285
  • Port the Limrun provider for mobile tests by @kblok in #309
  • Port the remaining unit tests for press, provider hints, tool loop, and trace cache by @kblok in #287
  • Mark the newest Anthropic message for caching only in a tool loop by @kblok in #301
  • Set MarkLatest in the Anthropic cache tests that #301 broke by @kblok in #310
  • Logout returns false when no login is stored by @kblok in #296
  • Add a MAUI sample app and mobile sample tests by @kblok in #308
  • Rethrow a hard stop raised by a replayed action by @kblok in #298
  • Send the extract schema as a shape by @kblok in #297
  • Retry a poll when the matcher complains about the value type by @kblok in #299
  • Strip whole ANSI escape sequences from CLI model text by @kblok in #300
  • Stop CI hanging when Chrome leaves a pipe open by @kblok in #305
  • Share one endpoint listing between callers in DelegatingModel by @kblok in #302
  • Make the RedactFragments memory test stable by @kblok in #312
  • Type a surrogate pair as one keystroke in pressSequentially by @kblok in #303
  • Stop the scroll settle tests from failing at random under load by @kblok in #314
  • Offer project tools to the agent and expose the mobile tools through them by @kblok in #315
  • Run a step live under strict cache mode when its recording stops at a project tool by @kblok in #320
  • Add a solution for the MAUI sample app and its tests by @kblok in #321
  • Give extract its own system prompt by @gkizior in #319
  • Build 0.4 previews so the mobile packages publish as 0.4.0 by @kblok in #334

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@kblok kblok released this 09 Oct 20:51
6bc032e

What's Changed

  • Port browser.route: fulfill, continue, fallback, and abort by @kblok in #141
  • Fail operations on a hung page at the action timeout by @kblok in #76
  • Build the secret redactor once per secret set by @kblok in #149
  • Document E2E_HEADLESS by @kblok in #165
  • Read the text of a labelled status with ToHaveText by @kblok in #84
  • Add init scripts that run before the page's own scripts by @kblok in #72
  • Serve e2e mcp: the four fixed tools and the guide by @kblok in #147
  • Run the tests that waited on #82 by @kblok in #167
  • Recover a persistent CDP session with reconnectEndpoint by @kblok in #88
  • Redact secrets from names and test ids in replay cache entries by @kblok in #73
  • Stop replays passing when the recorded effect did not happen by @kblok in #77
  • Match text inside inline elements with GetByText by @kblok in #85
  • Run the AttemptSession tests without a Playwright driver or real-time budgets by @kblok in #169
  • Update the skill and docs in the same PR as the API by @kblok in #142
  • Fail a strict-cache step whose recording sits under an old key by @kblok in #71
  • Infer row headers and name nodes by upstream's rules by @kblok in #69
  • Read visibility as the page renders it by @kblok in #79
  • Port upstream's settle policy, and read a step's delta from the screen it acted on by @kblok in #174
  • Keep only tests that port an upstream test, laid out like upstream by @kblok in #90
  • Deny GetAttribute on a secure field by @kblok in #101
  • Fail waitFor(detached) at once on several matches by @kblok in #104
  • Fail toHaveValue on an element that is not a form control by @kblok in #102
  • Deny AllTextContents on a secure field by @kblok in #100
  • Stop a negated matcher from reading after its deadline by @kblok in #103
  • Send OpenCode provider options and cache keys as upstream does by @kblok in #180
  • Fail login early on read-only credentials and cancel device-code start by @kblok in #181
  • Report unopened pages, cancelled opens, and classified errors with the right code by @kblok in #183
  • Redact fragments of a secret in any case, whitespace, and base64 by @kblok in #182
  • Name the status and body of a failed model request by @kblok in #185
  • Run poll tests on a fake clock; cancelled and cut-off matcher polls end like upstream by @kblok in #186
  • Show a node's text, purpose, and clean control characters in the screen text by @kblok in #187
  • Replay cache recordings across record ids, fragments and form-encoded values by @kblok in #184
  • Keep the test id out of attributes and stale a ref with a twin by @kblok in #188
  • Keep text out of the snapshot budget and scope shadow landmarks by @kblok in #189
  • Strict cache replays on retries and never writes the cache by @kblok in #190
  • Fix locator descriptions, GetByRole names, waitFor sets, and display-value filters by @kblok in #191
  • Print the observed value escaped in matcher failures by @kblok in #192
  • Wait for a control's checked state after check and uncheck by @kblok in #195
  • Redact the screen location shown to the model by @kblok in #196
  • Fail a test that skips itself after a failed soft assertion by @kblok in #197
  • Read value only for form fields and accept any-case aria states by @kblok in #193
  • Remove pull request trigger from docs workflow by @kblok in #201
  • Read a painted aria-hidden node as visible by @kblok in #198
  • Keep locator text reads whole after the snapshot change by @kblok in #194
  • Read a sentence whole across its inline links and emphasis by @kblok in #199
  • Cancel the ChatGPT code exchange when sign-in is interrupted by @kblok in #205
  • Add DblClickAsync as an alias of DoubleTapAsync by @kblok in #206
  • Compare screenshots with ToHaveScreenshotAsync on the web engine by @kblok in #207
  • Read screenshot PNGs with SkiaSharp, which needs no license by @kblok in #208
  • Add browser.goto and the expect(browser) URL and title matchers by @kblok in #209
  • Walk a snapshot of the child frames while observing a page by @gkizior in #210
  • Build 0.3 previews by @kblok in #212
  • Open live sessions in e2e mcp by @kblok in #211
  • Ship the e2e tool as one package that can open sessions by @kblok in #213

New Contributors

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@kblok kblok released this 08 Oct 11:29
ed6a38d

What's Changed

  • Fix replay misses on list pages by @kblok in #46
  • Let the agent double-tap a control by @kblok in #45
  • Add a TodoMVC sample that ports Playwright's example by @kblok in #47
  • Drop the engine version from the replay cache key by @kblok in #50
  • Port every upstream test, and run the real-model tests before pushing by @kblok in #80
  • Fail an assertion when one repeated value contradicts it by @kblok in #66
  • Add locale and time zone options to the web engine by @kblok in #67
  • Let check pass when the click replaces the control by @kblok in #68
  • Lay out ported tests like upstream's test files by @kblok in #89
  • Send the identity headers on every model request by @kblok in #75
  • Install only the Chromium build the run launches by @kblok in #70
  • Document Locale and TimezoneId in the skill by @kblok in #143
  • Set a relative cookie URL on the base URL, and wait for responses by @kblok in #74
  • Allow only http(s) and about:blank on navigation by @kblok in #78
  • Fail a locator action before app.open with APP_NOT_OPEN by @kblok in #133
  • Add an xUnit v3 fixture and sample by @kblok in #145

Full Changelog: v0.1.4...v0.2.0

v0.1.4

Choose a tag to compare

@kblok kblok released this 06 Oct 14:53
bd4f203

What's Changed

  • Fix the flaky focus check in the Chromium roles test by @kblok in #43
  • Let a negated expect pass when it is false for its whole budget by @kblok in #44

Full Changelog: v0.1.3...v0.1.4

v0.1.3

Choose a tag to compare

@kblok kblok released this 06 Oct 13:29
dda5228

What's Changed

  • Install Chromium on the first WebEngine launch by @kblok in #42

Full Changelog: v0.1.2...v0.1.3