Repository navigation
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