FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

feat(a11y): complete WASM and Appium validation by morning4coffe-dev · Pull Request #23755 · unoplatform/uno · GitHub

feat(a11y): complete WASM and Appium validation - #23755

Open
morning4coffe-dev wants to merge 22 commits into
masterfrom
dev/doti/appium-a11y-validation
Open

feat(a11y): complete WASM and Appium validation#23755
morning4coffe-dev wants to merge 22 commits into
masterfrom
dev/doti/appium-a11y-validation

Conversation

morning4coffe-dev commented Jul 14, 2026
edited
Loading

Copy link
Copy Markdown
Member

GitHub Issue: closes #23751

PR Type:

✨ Feature

What changed? 🚀

This completes the Skia WebAssembly accessibility object model, including roles, names, relationships, live state, focus and tab order, landmarks, standalone text, hidden-subtree pruning, and virtualized control behavior.

The Appium validation layer now uses canonical accessibility snapshots, actionable element-based differences, strict driver lifecycle handling, and interaction coverage for invoke, toggle, selection, value, and focus behavior. The adapters consistently escape selectors and normalize platform roles, while the dedicated Skia WebAssembly CI path validates the published SamplesApp through ChromeDriver.

Windows UIA and macOS NSAccessibility adapters remain available for host-specific runs. Their baselines must be recorded on matching hosts before those lanes are enabled; the repository does not use synthetic platform baselines.

Validation

  • The focused accessible DataGrid runtime tests pass repeatedly, 3 of 3 per run.
  • All 12 host-independent Appium tests pass.
  • All 8 live WebAssembly Appium snapshot, interaction, and standards tests pass.
  • Skia accessibility projects build successfully.
  • The WebAssembly SamplesApp publishes successfully.
  • The managed macOS accessibility project compiles successfully.

PR Checklist ✅

Copilot AI lite review requested due to automatic review settings July 14, 2026 08:31
github-actions Bot added platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform area/automation Categorizes an issue or PR as relevant to project automation kind/documentation labels Jul 14, 2026

github-actions Bot commented Jul 14, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @morning4coffe-dev's task in 5m 8s —— View job


Code Review

  • Gather context and read changed files
  • Review infrastructure files
  • Review platform adapters
  • Review test files
  • Review macOS native changes
  • Post inline comments
  • Update summary

Summary

The PR is a well-structured foundation for cross-platform accessibility smoke tests and snapshot baselines. The adapter abstraction, canonical-role normalization, and tree-dumping pipeline are all sound. The macOS native changes (exposing AutomationId through AXIdentifier / accessibilityIdentifier) are the right approach.

Since the PR is explicitly marked draft / not ready for review, findings are filed as early guidance rather than blocking issues.

Issues by severity

Severity Count Topics
Medium 4 Argument-splitting bug in ReadBundleId, tabpanel→tabitem semantic mismatch, [CallerFilePath] unreliable on CI, TreatWarningsAsErrors=false + NU190x suppression
Low 5 Dead code (SpawnDotnet/WaitForWindow), WrapperBundleId constant duplication, Thread.Sleep(3s) in baseline test, Assert.Pass() with no assertion, incomplete selector escaping in Mac XPath + WASM CSS
Nit 1 SnapshotComparer.Extras exclusion undocumented

Cross-cutting observations

  • No OutputType=Library: the .csproj declares OutputType=Exe which is unusual for a test project — NUnit tests are typically class-library projects. Verify this is intentional and doesn't cause runner-detection issues.
  • AccessibilityBaselineTests does not inherit AppiumFixtureBase: per-test driver lifecycle is re-implemented inline. That's correct for parameterized snapshot tests (each case needs its own session), but worth noting that the two code paths for driver creation must stay in sync if initialization logic changes.
  • macOS native changes look correct: uno_accessibility_update_identifier wired end-to-end (C# P/Invoke → Objective-C property → accessibilityIdentifier / NSAccessibilityIdentifierAttribute), with the required accessibilityAttributeNames override so Appium/XCUITest's legacy attribute path finds the element. The approach in UNOAccessibility.m is the standard workaround for custom NSAccessibilityElement subclasses not being found by XCUITest's identifier shortcut.

Copilot AI 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.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Adds an Appium-driven accessibility validation harness for SamplesApp (smoke tests + golden-file accessibility-tree snapshots) and extends the macOS Skia accessibility backend to expose AutomationProperties.AutomationId via the native NSAccessibility identifier so Appium Mac2/XCUITest can locate elements consistently.

Changes:

  • Expose AutomationId on macOS Skia through -accessibilityIdentifier / AXIdentifier and add a native update hook.
  • Add SamplesApp.AppiumTests with platform adapters (Win32 UIA, macOS NSAccessibility, WASM DOM/ARIA), tree capture/normalize/serialize infrastructure, and baseline comparison tests.
  • Add documentation for running/recording Appium snapshots and line-ending normalization for committed JSON baselines.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/Uno.UI.Runtime.Skia.MacOS/UnoNativeMac/UnoNativeMac/UNOAccessibility.m Adds identifier exposure through NSAccessibility and a native update function.
src/Uno.UI.Runtime.Skia.MacOS/UnoNativeMac/UnoNativeMac/UNOAccessibility.h Declares unoIdentifier and the new update API.
src/Uno.UI.Runtime.Skia.MacOS/Native/NativeUno.cs Adds P/Invoke for uno_accessibility_update_identifier.
src/Uno.UI.Runtime.Skia.MacOS/Accessibility/MacOSAccessibility.cs Pushes AutomationId into the native accessibility element.
src/SamplesApp/SamplesApp.AppiumTests/Tests/AutomationTreeSmokeTests.cs Adds cross-platform smoke tests validating tree presence and basic interaction.
src/SamplesApp/SamplesApp.AppiumTests/Tests/AccessibilityBaselineTests.cs Adds golden-file snapshot comparisons with optional record mode.
src/SamplesApp/SamplesApp.AppiumTests/Snapshots/.gitattributes Forces LF for committed snapshot JSON files.
src/SamplesApp/SamplesApp.AppiumTests/SamplesApp.AppiumTests.csproj New Appium/NUnit-based test project.
src/SamplesApp/SamplesApp.AppiumTests/README.md Documents prerequisites, platform setup, and baseline workflows.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/WindowsAdapter.cs Windows UIA adapter for role/name/value/pattern extraction and locators.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/WasmAdapter.cs WASM adapter using DOM/ARIA + xamlname-based locators.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/TreeDumper.cs Walks the automation tree and builds normalized snapshot nodes.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/SnapshotSerializer.cs Deterministic JSON serialization for snapshots.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/SnapshotComparer.cs Structural diffing for snapshots.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/MacAdapter.cs macOS Mac2 adapter with wrapper-bundle launching and AX queries.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/IPlatformAdapter.cs Common adapter contract.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/CanonicalRole.cs Normalizes platform-specific roles into shared tokens.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/AppiumPlatform.cs Platform selection and env-var configuration.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/AppiumFixtureBase.cs Shared fixture lifecycle and wait helpers.
src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/AccessibilityNode.cs Platform-neutral accessibility node model for snapshots.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23755/wasm-skia-net9/index.html

morning4coffe-dev and others added 4 commits July 30, 2026 18:00
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
github-actions Bot added platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform area/build Categorizes an issue or PR as relevant to build infrastructure labels Jul 31, 2026

github-actions Bot commented Jul 31, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @morning4coffe-dev's task in 5m 0s —— View job


Code Review

  • Read changed files
  • Review infrastructure
  • Review platform adapters
  • Review test files
  • Review macOS/WASM native changes
  • Post inline comments
  • Update summary

Summary

The PR is still in draft state so these are early-guidance findings. The prior review pass covered the main medium-severity issues well; these comments add four new items not previously filed.

New findings

Severity File Finding
Medium CanonicalRole.cs:50 s_win32["tabitem"] → "tabpanel" is a semantic mismatch — WinUI TabItem is the clickable tab header (ARIA "tab"), not the content pane. s_win32["tab"] should also be "tablist", not "tab".
Medium MacAdapter.cs:421 sampleQuery embedded in the bash wrapper script without shell-escaping — a value containing ", $, or backtick breaks or injects into the script.
Low WindowsAdapter.cs:213 AddIfTrue private helper is dead code — no call sites remain after GetSupportedPatterns was refactored.
Low WasmAccessibilityStandardsTests.cs:19 Wrong-platform guard throws InvalidOperationException (test ERROR) instead of Assert.Inconclusive (test SKIP/inconclusive).

Cross-cutting observations

  • SnapshotPaths.cs [CallerFilePath]: the prior review already flagged this. The env-var override (UNO_APPIUM_SNAPSHOTS_DIR) is the right CI path; the compile-time [CallerFilePath] fallback only works when build and test run on the same machine.
  • TreatWarningsAsErrors=false + NU190x suppression in .csproj: also flagged in the prior review. The vulnerability NuGet warnings (NU1902/NU1903) should not be globally suppressed — if a specific package version is intentionally below a vulnerability advisory, document the reason inline instead.
  • SnapshotComparer.Compare silently skips Extras: the prior review requested a doc comment explaining the intentional exclusion. Still missing.
  • s_win32 tab-container vs WASM tablist: the s_win32 dict has no "tablist" entry at all, while s_wasm correctly maps "tablist" → "tablist". Once "tab" is corrected to "tablist" in s_win32, cross-platform snapshot comparison for tab strips will be meaningful.

Copilot AI review requested due to automatic review settings August 25, 2026 11:00

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 39s —— View job


I'll analyze this and get back to you.

Copilot AI 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.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Copilot reviewed 88 out of 89 changed files in this pull request and generated no new comments.

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

src/SamplesApp/SamplesApp.AppiumTests/Infrastructure/TreeDumper.cs:22

  • The comment for s_noiseAutomationIds says these IDs are “Excluded from snapshots”, but TreeDumper is used to write the diagnostic *.tree.json artifact (via AppiumTestSession.TryWriteDiagnosticTree), not to build/compare the committed canonical baselines. Updating the wording would avoid confusion about what is actually being filtered here.
	/// <summary>
	/// AutomationIds that come from WinUI control templates / window chrome
	/// rather than the sample under test. Excluded from snapshots so the
	/// recorded baselines are stable across host frameworks and sample
	/// changes that don't touch these parts.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23755/wasm-skia-net9/index.html

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 30s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23755/docs/index.html

Copy link
Copy Markdown
Member Author

ComboBox light-dismiss audit: now green on both halves

Following up on the analysis above with the CI result, since the browser half could only be proven there.

Assertion layer Test Where it ran Result
Automation peer (all Uno backends) Given_AccessibleComboBox.When_DropDown_Open_Then_Peer_Children_Are_Items_And_Collapse_Dismisses Skia Desktop, locally pass — closed ComboBox exposes 0 children; open exposes exactly Items.Count, every one AutomationControlType.ListItem and none named "Close"; Collapse() closes the drop-down, flips ExpandCollapseState, and retracts the item peers
Browser object model Given_AccessibleComboBox.When_DropDown_Opened_Then_No_LightDismiss_Node_And_Aria_Contract_Holds WebAssembly Skia Runtime Tests 1, CI pass

The browser test needed two corrections before it was sound, and both are worth recording because they were my errors, not product defects:

  1. It sampled aria-expanded/aria-controls on the frame the drop-down opened. Those attributes are published by the accessibility update pass that follows the open, so the assertion raced it. Now settled with UITestHelper.WaitFor — synchronisation, not a relaxed assertion.
  2. It scanned for viewport-sized nodes with a bespoke getBoundingClientRect probe. That encoded the right intent — "the light-dismiss surface must not leak into the tree" — but through a layout-timing-sensitive measurement I could not reproduce locally (headless Chrome and Edge are both blocked in my environment, so the browser lane is CI-only for me). It is replaced by the file's existing, already-green probes that assert the same contract structurally: VerifyOptionsParentedUnderListBox (the aria-controls target really is the role="listbox" owning the options, with correct aria-posinset/aria-setsize), GetDuplicateParagraphsAndOptionDialogs (no role="dialog" wrapper, no duplicated option text), and an explicit count of nodes named "Close" — the name WinUI gives its light-dismiss element via UIA_LIGHTDISMISS_NAME — which must be zero while open and after closing.

All four WebAssembly Skia Runtime Tests shards are green on 6b3418ff80, as is WebAssembly Skia Accessibility Automation (4m12s).

So the adaptation is now pinned from both directions: the peer tree cannot gain a synthesized light-dismiss child without failing the first test, and the browser tree cannot gain a "Close" node or an extra popup wrapper without failing the second. The generic PopupRootAutomationPeer gap remains tracked in #24191.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 38s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Contributor

The build 230074 found UI Test snapshots differences: skia-linux-screenshots: 57, skia-windows-screenshots: 2348, wasm: 11

Details
  • skia-linux-screenshots: 57 changed over 2348

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • DisplayInformation.png-dark
    • DropDownButtonPage.png-dark
    • DropDownButtonPage.png
    • ImageIconPage.png-dark
    • ClipboardTests.png-dark
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • Buttons.png-dark
    • Buttons.png
    • ElementLevelTheme.png-dark
    • ElementLevelTheme.png
    • Focus_FocusVisual_Properties.png-dark
    • CalendarView_Theming.png-dark
    • CalendarView_Theming.png
    • ContextRequested.png-dark
    • ContextRequested.png
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
  • skia-windows-screenshots: 2348 changed over 2396

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AppBarButtonWithIconTest.png-dark
    • AppWindowFeatures.png-dark
    • AppWindowTitleBar Properties.png-dark
    • Attributed_text_Simple.png
    • AutomationPropertiesExtensions_Role.png
    • AutoSuggestBox_Icons.png
    • BasicEnability.png
    • BitmapIcon_Foreground.png-dark
    • BorderVersusPanelClipping.png-dark
    • BorderVersusPanelClipping.png
    • Border_CornerRadius_Clipping2.png-dark
    • Border_CornerRadius_Clipping2.png
    • Border_With_Off_Centre_ScaleTransform.png
    • ApplicationViewSizing.png-dark
    • Border_With_RotateTransform.png-dark
    • ArcSegment.png-dark
    • Button_Opacity_Automated.png-dark
    • AutoBorderStretchwithtopmargin.png-dark
    • Button_Opacity_Automated.png
    • AutoSizedTopLeft.png
  • wasm: 11 changed over 1076

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ListView.ListView_IsSelected
    • UITests.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_NavigationProperties
    • UITests.Uno_Web.Http.CookieManagerTests
    • UITests.Windows_UI_Xaml_Controls.CalendarView.CalendarView_Theming
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Minimal
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_Extension
    • Uno.UI.Samples.Content.UITests.WebView.WebView_AnchorNavigation
    • SamplesApp.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_EnableDevTools
    • UITests.Windows_UI_Xaml_Media_Animation.ColorAnimation_Background
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewSelectedItems
    • UITests.Shared.Microsoft_UI_Xaml_Controls.ExpanderTests.WinUIExpanderPage

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 30s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 21s —— View job


I'll analyze this and get back to you.

Copilot AI review requested due to automatic review settings August 25, 2026 14:11

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 30s —— View job


I'll analyze this and get back to you.

Copilot AI 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.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Copilot reviewed 88 out of 89 changed files in this pull request and generated no new comments.

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

src/SamplesApp/SamplesApp.AppiumTests/Tests/AppiumConfigurationTests.cs:11

  • These tests mutate process-wide environment variables via EnvironmentVariableScope. If MSTest runs classes/tests in parallel, this can cause flaky cross-test interference; mark the class (or assembly) as non-parallelizable, matching the existing pattern used in other test projects that touch env vars.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23755/wasm-skia-net9/index.html

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 27s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23755/docs/index.html

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 23s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 26s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 23s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Contributor

The build 230130 found UI Test snapshots differences: skia-linux-screenshots: 57, skia-windows-screenshots: 2348, wasm: 11

Details
  • skia-linux-screenshots: 57 changed over 2348

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • CalendarView_Theming.png-dark
    • CalendarView_Theming.png
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • DisplayInformation.png-dark
    • ContextRequested.png-dark
    • ContextRequested.png
    • ClipboardTests.png-dark
    • ImageIconPage.png-dark
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • Gamepad_Enumeration.png
    • Focus_FocusVisual_Properties.png-dark
    • Buttons.png-dark
    • Buttons.png
  • skia-windows-screenshots: 2348 changed over 2396

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AppBarButtonWithIconTest.png-dark
    • AutoBorderStretchwithbottommargin.png
    • AutoSizedTopLeft.png-dark
    • BackGesture.png
    • BasicAutoSuggestBox.png-dark
    • Battery.png-dark
    • BezierSegment.png-dark
    • BorderCenteredwithmargins.png-dark
    • BorderRightwithmargins.png-dark
    • BorderRightwithmargins.png
    • Border_Clipped_Change_Property.png-dark
    • Border_Clipped_Change_Property.png
    • Border_CornerRadius_Gradient.png-dark
    • Border_CornerRadius_Gradient.png
    • Border_Simple_with_non_Uniform_Thickness.png-dark
    • Border_Simple_with_non_Uniform_Thickness.png
    • BreadcrumbBarPage.png-dark
    • BreadcrumbBarPage.png
    • CalendarDatePicker_Description.png-dark
    • CalendarDatePicker_Description.png
  • wasm: 11 changed over 1076

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_Extension
    • UITests.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_NavigationProperties
    • UITests.Shared.Microsoft_UI_Xaml_Controls.ExpanderTests.WinUIExpanderPage
    • UITests.Windows_UI_Xaml_Controls.CalendarView.CalendarView_Theming
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewSelectedItems
    • SamplesApp.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_EnableDevTools
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Minimal
    • UITests.Uno_Web.Http.CookieManagerTests
    • Uno.UI.Samples.Content.UITests.WebView.WebView_AnchorNavigation
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ListView.ListView_IsSelected
    • UITests.Windows_UI_Xaml_Media_Animation.ColorAnimation_Background

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 38s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Member Author

Status on e0aebcd862: everything green except review

73 success, 1 neutral (Mergify Merge Queue, skipped by design), 1 failure (review), 0 pending. 96/96 review threads resolved.

Since the last update:

  • fix(a11y): clear macOS identifier when unset (e0aebcd862) — uno_accessibility_update_identifier maps null to nil but an empty string to @"", so an element with no AutomationId was advertising a present-but-empty AXIdentifier and a previously set one was never cleared. Now sends null when empty. Also corrects the TreeDumper doc comment, which claimed its noise filter applies to snapshots when it actually applies to the diagnostic tree dump. Both were raised as suppressed reviewer comments; both were valid.
  • Two infrastructure interruptions were absorbed without touching the branch: Desktop Skia macOS Runtime Tests failed a checkout with Failed to connect to github.com port 443 and Android Skia Runtime Tests 0 hit the 45-minute agent ceiling. Azure DevOps retried both stages automatically and both passed on attempt 2.

review — 17th consecutive failure, root cause unchanged

Retried on schedule (hourly, never more often) across six head commits — 76ae4aa0ac, d2251277c4, d13c41f566, 3310cf55b1, 6b3418ff80, e0aebcd862 — plus the automatic run on each push. Every attempt ends identically: abort on turn 2, permission_denials_count: 0, no repository content evaluated.

The measurement from run 32821649561 still holds and the diff has only grown since:

  • injected <formatted_context>: 77,475 chars ≈ 21k tokens
  • git diff merge-base → head: 21,359 lines / 900,702 chars ≈ 250k tokens
  • claude-sonnet-4-6 context window: 200K tokens

The agent's only route to the code is Bash(gh pr diff:*) — the tool allowlist grants nothing else that can read the repository — so the request carrying that diff is unservable. No change I can make to this branch reduces that number.

I have deliberately not touched claude-code-review.yml. Its header documents an explicit security posture — trigger gate for repo members only, tool allowlist, no id-token: write, SHA-pinned action — and relaxing any of it to turn a check green would trade a real safeguard for a cosmetic result.

This needs a maintainer decision. Options, in the order I'd suggest:

  1. Waive review for this PR. Everything the branch is accountable for is green, including both lanes it exists to add.
  2. Reconfigure the workflow for large PRs — a larger-context model, or a chunked/per-file review strategy — which fixes it for feat(richeditbox): implement Skia support #23924, feat: Add cross-platform app notifications #24174, feat(a11y): add mobile automation support #23935 and feat: AutoSuggestBox porting #22432 too, all failing the same way today.
  3. Tell me to split the PR into reviewable parts (browser semantics / Appium harness / CI wiring). I'll do it if that's the call, but it costs the shared history and the cross-cutting tests that span those parts.

I'll keep retrying hourly and watching for new review threads until one of those happens.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 24s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 26, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 14s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Member Author

Post-cooldown re-check (2026-08-26): reviewer config unchanged, blocker unchanged

Re-checked the reviewer configuration before spending another attempt, then ran exactly one fresh attempt. No code was pushed — head is still e0aebcd862.

Reviewer settings — nothing moved overnight

Setting Value Last changed
Action anthropics/claude-code-action@459ad358ae43fea66bfefd0a1f8d840b4b9791fb (v1.0.194) dce100643b, 2026-08-20 — before the first failure
Model claude-sonnet-4-6 unchanged
Tool allowlist create_inline_comment, update_claude_comment, Bash(gh pr diff:*), Bash(gh pr view:*) unchanged
max_turns not set
REVIEW.md unchanged since 2ed1829bc6, 2026-06-03

The workflow file on the PR head is byte-identical to master's, so the merge-ref run uses exactly this configuration. I confirmed the values at runtime from the new job log rather than only from the file — it reports "model": "claude-sonnet-4-6" and the same four-tool allowlist.

The one fresh attempt — run 32857939581, attempt 8

{ "type": "result", "subtype": "success", "is_error": true,
  "duration_ms": 14412, "num_turns": 2, "total_cost_usd": 0.82, "permission_denials_count": 0 }

Same signature as all eighteen previous attempts: aborts on turn 2, no tool denied, no repository content evaluated. Re-measured inputs:

Quantity 2026-08-25 2026-08-26
Injected <formatted_context> 77,475 chars 69,280 chars ≈ 19k tokens
git diff merge-base → head 900,702 chars 901,410 chars / 21,377 lines ≈ 250k tokens
claude-sonnet-4-6 window 200K tokens 200K tokens

The context shrank slightly (fewer bot comments after the overnight quiet period) and the diff is essentially flat, so the sum is still ~269k tokens against a 200K window. The failure is pre-agent and deterministic; it is not a transient the cooldown could clear.

Per instruction I am not looping on retries any further.

Everything else is still green

e0aebcd862: 73 success, 1 neutral (Mergify Merge Queue, skipped by design), 1 failure (review), 0 pending. The lanes this PR exists to add are green — WebAssembly Skia Accessibility Automation and all four WebAssembly Skia Runtime Tests shards. All 96 review threads resolved; no new threads and no maintainer response since yesterday's request.

The decision options from #issuecomment-5414937414 stand unchanged: waive review for this PR, reconfigure the workflow for large PRs (#23924, #24174, #23935 and #22432 fail identically today), or authorize splitting the PR. I'll act on whichever you pick.

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/automation Categorizes an issue or PR as relevant to project automation area/build Categorizes an issue or PR as relevant to build infrastructure kind/documentation platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Appium accessibility tree validation for SamplesApp

4 participants


Back | FazBrowse Home | New Git URL