Skip to content

v0.8.0

Latest

Choose a tag to compare

@kblok kblok released this 02 Nov 14:47
· 150 commits to main since this release
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 permissions from a web target's app.permissions (upstream #1429) by @kblok in #795
  • Add App.ScreenshotAsync returning the absolute path (upstream #1326) by @kblok in #797
  • Fix the two review threads left open on #800 by @kblok in #802
  • Docs: after a replayed act, wait for content that loads (upstream #1450) by @kblok in #810
  • Bump agent-device to 0.21.35 (upstream #1449, #1458) by @kblok in #811
  • Add Device.UnstableRaw exposing the test's agent-device session (upstream #1380) by @kblok in #813
  • Retain the verdict attempt's duration for interrupted retries (upstream #1056) by @kblok in #815
  • Read an ISO 8601 instant in an alert as one placeholder (upstream #1447) by @kblok in #812
  • Keep closed shadow roots tracked on pages that replace WeakMap (upstream #1448) by @kblok in #816
  • Port the run summary's cache tally (upstream cacheText, stepsCacheTally) by @kblok in #820
  • Port FilledSecrets 'keeps a screenshot after a fill' and engine-secrets 'screenshots are kept' (#798) by @kblok in #821
  • Mark an attempt's cleanup as failed when session teardown throws (#788) by @kblok in #822
  • Format the hand-off prompt as upstream's formatReplayedPrefix (#793) by @kblok in #823
  • Extract WebEngine.ValidateApp so target-app tests port in full (upstream #1429) by @kblok in #824
  • Port upstream #1421: iOS Enter taps unfocused field, open_app returns to app under test by @kblok in #827
  • Keep the earlier verdict when a retry is interrupted (upstream retryVerdict) by @kblok in #825
  • Replay a multi-line unique() value the screen shows on one line (upstream #1452) by @kblok in #829
  • Collect multiple downloads from one trigger (upstream #1048) by @kblok in #834
  • Register the selector engines in the CDP default context (upstream registerCdpSelectors) by @kblok in #832
  • Replay: treat every stop before the first action as a miss by @kblok in #828
  • Cache: port the uri and slug encodings of unique() values (upstream template.ts) by @kblok in #838
  • Add route.FetchAsync to inspect upstream responses in route handlers (upstream #1044) by @kblok in #840
  • Support upload buttons that open file choosers (upstream #958) by @kblok in #841
  • Extract a message-channel seam in CdpSelectors (upstream cdp-selectors tests) by @kblok in #845
  • COMPATIBILITY: web engine calls Downloads from waitForDownload (#640) by @kblok in #855
  • Docs: TesterArmy in migrate-to-e2e skill and coding-agents (upstream b81b7d7) by @kblok in #854
  • Port SessionStaging and the engine state hooks (upstream run/sessions.ts) by @kblok in #853
  • Cache: record agent navigations to the app without its origin (upstream #1191) by @kblok in #852
  • Fix whitespace format errors on main by @kblok in #851
  • Mobile: read Compose Multiplatform text fields on iOS (upstream #1427) by @kblok in #849
  • Write each test line while walking the flow over MCP (upstream 1312) by @kblok in #848
  • Name the ACTION_FAILED difference of locator engine errors (refs #735) by @kblok in #847
  • Cache: track literal segments in CacheKeys.Template (upstream templateText) by @kblok in #842
  • Add the run-level interrupt flag so an interrupted retry still exits 130 (upstream interruptController) by @kblok in #836
  • Engine name in the engine-target test; drop delivered report gaps (Refs #648) by @kblok in #858
  • Keep a cancelled xUnit test a cancellation in the run's interrupt flag (refs #837) by @kblok in #859
  • Record one span of the screen with app.StartRecordingAsync and StopRecordingAsync (upstream #1381) by @kblok in #862
  • Cache: port upstream's placeholder grammar (template.ts) by @kblok in #863
  • Mobile: pin each action's ref to its snapshot and reject stale refs after transition refresh by @kblok in #866
  • Extract ListReporter so the run summary prints the Cache row by @kblok in #844
  • Port locator secondaryTap, longPress, hover, dragTo, swipe and click modifiers (upstream locator/screen.ts) by @kblok in #860
  • Breaking: keep model screenshots after a secret fill (upstream #1437) by @kblok in #874
  • Record Locator click and dblclick as upstream does; port the full 'performs with a timeout' by @kblok in #876
  • Port the agent upload tool and its path policy (upstream upload-paths.ts) by @kblok in #864
  • Refuse fill and clear on nodes that cannot take text (upstream #1427) by @kblok in #878
  • Port RenderMarkdownReport (upstream report/markdown.ts) by @kblok in #880
  • Report engine failures at the locator as ACTION_FAILED (translateLocatorError) by @kblok in #884
  • Breaking: app.baseUrl has no trailing slash; CONFIG_NOT_FOUND names the path (upstream #1479, #1478) by @kblok in #879
  • Port the reporter seam: Reporter, FinishedRun, onRunFinished by @kblok in #883
  • Quote the app's first errors in the list reporter failure block (upstream #1480) by @kblok in #886
  • Cache placeholders part 2: refuse spelled placeholders, nested pointers, descriptor templating by @kblok in #888
  • MCP screenshot saves to a path; open_session names the app command, URL and port (upstream #1481, #1483) by @kblok in #889
  • Take params on agent.assert and agent.waitFor (upstream #1463) by @kblok in #891
  • Bound mobile reads by the operation budget and give the last read of a wait grace by @kblok in #893
  • Port the app setup step with its URL (upstream #1483) by @kblok in #894
  • Extract TemplateTrace, ExpandTrace and MapTraceText (upstream cache/template.ts, cache/trace.ts) by @kblok in #895
  • Add Expect.Soft(screen) and wheel-gesture scrolling on the web engine by @kblok in #897
  • Finish translateLocatorError: stale-node retry and wrapping of every engine code by @kblok in #898
  • Run one NUnit test in an e2e mcp session (upstream #1315, in part) by @kblok in #899
  • Let explore run in a given working directory by @kblok in #896
  • Word the act tools' results as upstream's acting and failureLead do by @kblok in #900
  • Rename NOT_FOUND and STRICT_MODE to LOCATOR_NOT_FOUND and LOCATOR_AMBIGUOUS by @kblok in #907
  • Bound observe and screenshots by the operation budget (upstream #1464, in part) by @kblok in #909
  • Port the public host: E2EHost.OpenAsync and host.OpenSessionAsync (upstream run/open-session.ts) by @kblok in #910
  • Drop stale not-ported notes for the hosted session by @kblok in #911
  • Port the select layer: select with excluded, filterSelection, filterCandidates by @kblok in #914
  • Port observe's pixels option (capturePixels) to the engine session by @kblok in #915
  • Add .NET-only example guides for i18n, file uploads, location, biometrics, and deep links by @kblok in #912
  • Indent ListReporter switch-section blocks so dotnet format passes by @kblok in #917
  • Docs generator: keep underscores and escaped angle brackets in plain() by @kblok in #918
  • Wire writeHostTrace into hosted sessions (#705) by @kblok in #919
  • Cache: key the projected params tree and port templatesCollide (upstream template.ts) by @kblok in #921
  • Record anchors that hold a unique value, as upstream does by @kblok in #916
  • CI: check formatting with dotnet format by @kblok in #923
  • Mobile: revalidate input bindings before fill and clear, reobserve after keyboard transitions (upstream #1410, #1297) by @kblok in #925
  • Wire test filters into an NUnit run: reflection discovery, E2ERunFixture filters, ChangedSince (#913, first slice) by @kblok in #926
  • Port the setup runner for NUnit: E2ESetup, E2ESession, SaveSessionAsync, stateCapability by @kblok in #928
  • Make the flaky timing tests deterministic by @kblok in #930

Full Changelog: v0.7.0...v0.8.0