Repository navigation
Add the desktop-test harness, package-owned desktop testing guidance, and focused test runs - #4389
Merged
Merged
Conversation
…-appium # Conflicts: # apps/storybook/AGENTS.md
Fix macOS-only harness defects found while running the neutral desktop-test harness and Storybook integration on macOS: - Canonicalize the reporting root (/var -> /private/var) and its contract fixture root. - Skip stop frames to producers whose Unix sockets already half-closed. - Request the renderer-scoped Storybook target the embedded driver registers. - Launch the exact built RN Test App product on macOS, failing closed on a bundle identifier, renderer, or embedded bundle mismatch. - Label retried attempts by ordinal. Scroll FluentTester buttons until their click point is unobscured, and let specs that share a page find it already selected. Extend the RNmacOS patch so accessible Fabric <Text> paragraphs are exposed to accessibility on macOS. macOS Fabric and Paper both pass Storybook 280/280 and the FluentTester pilot and legacy (62 tests) suites with no skips or retries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The package PLAN.md was removed, but the macOS and Windows helper READMEs still linked to it, which fails the link check. Point the remaining qualification work at its open tracking issue and drop the two prose mentions of the plan. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Bundle size reportTree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.
The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail. |
Jason Morse (JasonVMo)
requested review from
Patrick Boyd (PPatBoyd) and
Saad Najmi (Saadnajmi)
October 22, 2026 22:47
…ules check-agent-instructions verified agent-map sources on the file system, so the gitignored, prebuild-generated storybook.requires.ts passed locally and failed in a clean CI checkout. Check sources against the Git-aware file list and exempt entries whose policy declares them generated. Address the code-scanning alerts on #4389: - js/polynomial-redos: the duplicated secret-assignment redaction regex let two whitespace runs compete across an optional quote, which is quadratic on a keyword followed by many spaces. Share one linear-time pattern with identical output, and add a regression test with adversarial input. - js/bad-code-sanitization: contract fixtures spliced JSON.stringify'd paths into executed Node source. Keep the source constant and pass values through process.argv or import.meta.url. Add references/agents/repository/code-scanning.md (R-SCAN-001 to 003), cite it from the root safeguards, the review skill, and the desktop maintenance skill, document generated agent-map sources, and add a development evaluation case. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Anandraj (mganandraj)
approved these changes
Oct 23, 2026
Vladimir Morozov (vmoroz)
approved these changes
Oct 23, 2026
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Platforms Impacted
Description of changes
Replaces the Storybook-specific desktop lifecycle with an application-neutral
desktop-testharness on top of theexisting
desktop-driver, and keeps Storybook as an optional integration. The PR also:yarn testrun a subset of a package's tests.Legacy desktop Appium and all mobile lanes are unchanged. They stay until native semantic parity and multi-day
reliability qualification are complete (#4345).
Summary
@fluentui-react-native/desktop-test(new):Actions output.
storybook-desktop,apps/storybook): uses the shared lifecycle and reporting, while keepingisolated CSF callback workers, authenticated readiness, exact app leases, and platform exclusions.
desktop-driver:behavior.
apps/fluent-tester,apps/win32, andapps/E2Edeclare canonical desktop targets andsuites in
desktop.config.mtswithout importing test tooling into the app. E2E page objects gain native desktopadapters.
/varto/private/var);mismatch;
<Text>paragraphs to accessibility.desktop-driver,desktop-test,storybook-desktop, andstorybook-desktop-runtimeeach get an agentAGENTS.md, a userREADME.md, and an indexedreferences/directory.yarn check-agent-instructions.yarn check-package-contents, part ofbuildci, checks actualyarn packinventories.filesallowlists keep build caches out of the four packages.
desktop-testingandmaintain-desktop-testing.agentic-storybook-developmentnow covers only theapp toolchain.
driver-next-plan.mdanddesktop-driver/PLAN.mdare removed; Infrastructure: Complete Desktop Driver production release qualification #4345 tracks the remaining qualification.fluentui-scripts jest, behindyarn testandyarn update-snapshots, used topass every discovered test file to Jest, so
yarn test popoverran the whole suite.-t,--findRelatedTests,-o, and--changedSince.yarn clean-lage-cacheandyarn lage buildcionce as final acceptance.
js/polynomial-redos: the duplicated secret-redaction regex was quadratic on a keyword followed by manyspaces (7.3 s on 200 KB). One shared linear-time pattern now gives identical output (0.2 ms), with a regression
test.
js/bad-code-sanitization:desktop-testcontract fixtures splicedJSON.stringify'd paths into executedNode source. The source is now constant, and values arrive through
process.argvorimport.meta.url.check-agent-instructionschecked agent-map paths on the file system. The generated, gitignoredstorybook.requires.tstherefore passed locally but failed the clean CI checkout. It now checks against Git andexempts sources declared
policy: generated-….references/agents/repository/code-scanning.md(R-SCAN-001 to R-SCAN-003) is cited from the rootsafeguards and the review and desktop maintenance skills.
Findings worth reviewing
fluentui-scripts jest, a bare argument that used to do nothing now narrowsthe run, and one that matches no test file exits 1. Unselected runs are unchanged, except for a one-line tip printed
locally (not under
CIorTF_BUILD) in packages with 10 or more test files. No pipeline or package script passespositional arguments to the runner.
<Text>accessibility fix belongs upstream in react-native-macos. Until then, the Yarnpatch is required for accessible Fabric paragraphs.
packages/agentic/desktop-driver/PLAN.mdas the remaining-work inventory, which thisPR removes. Its acceptance criteria still list the work; update the description when this merges.
knip.config.ts: a narrow Windows portability fix for backslash-separated workspace keys, found during Windowsvalidation.
Deferred and follow-ups
Infrastructure: Complete Desktop Driver production release qualification #4345:
Retiring desktop Appium waits on these.
Extend package-owned agent guidance to agentic and framework-base packages #4388: extend package-owned guidance to the remaining
packages/agentic/*packages andframework-base.Harness cleanup: a failed readiness hook can leave "owned reporting producers did not finish their shutdown
handshake" noise. A crashed session leaves the per-user interactive lock behind, and the harness correctly refuses to
run until it is removed.
Dead scripts: 23 packages declare a
start-testscript that calls a nonexistentfluentui-scripts jest-watch.Verification
PR head 3c40367, macOS, October 22, 2026
yarn clean-lage-cache, thenyarn lage buildciyarn lage test-linksyarn change:checkyarn check-package-contentsyarn check-agent-instructionswith the generatedstorybook.requires.tsremoved, as in CIpackages/agentic/desktop-test:yarn testapps/storybook:yarn storybook smoke --macos --mode stories-and-tests(Fabric), at d683ca8Focused test runner, macOS
yarn workspace @fluentui-react-native/scripts test: passed, 49/49, including selection unit tests that load theinstalled Jest's option table.
packages/agentic/components:yarn test popoverselected 2 of 66 files, 19 tests, in 2.5 s; the unfilteredyarn teststill ran 66 suites and561 tests in 5.3 s.
yarn update-snapshots buttonselected 4 files with no snapshot changes.--findRelatedTestson a shared primitive selected 16 files; a missing source path exited 1.-oand--changedSince=HEADselected the 5 related tests.--changedSince=<commit>^selected 25 tests from committed history.react-platform packages:packages/components/Button,yarn test ColorTokens.test.win32ran only the win32 platform group.packages/theming/default-theme(five platforms) passed.packages/agentic/desktop-test(reactplatform) passed.macOS qualification at 31098f4, October 22, 2026 (after merging
mainat 60121de)No skips or retries:
legacy(62 tests)desktop-testcontracts: 16/16;storybook-desktop: 175 passed, 2 skipped;desktop-drivertests: 68 passed, 2 skipped.buildci: the first run hit a Jest worker SIGSEGV in the unchangeddesignpackage, whose tests had all passed. Thererun passed.
Win32 at 238db96, October 21, 2026 (before merging
main)yarn workspace @fluentui-react-native/e2e-testing desktop-test --target win32 test --suite behavioral-pilot: passed37/37. These are the unchanged Button, Checkbox, Switch, directional FocusZone, and Callout assertions.
STORYBOOK_SMOKE_STORY=components-button--default,yarn workspace @fluentui-react-native/agentic-components-storybook desktop-test --target win32 test --suite stories:passed 154/154, which is 152 navigations plus both native Button callbacks.
FURN_NATIVE_DRIVER_TEST=1,yarn workspace @fluentui-react-native/desktop-driver test --runInBand: 68 passed;2 macOS-only tests skipped.
test:appium: 3 discovery and configuration tests passed; this is not legacy native execution.yarn clean-lage-cache,yarn lage buildci --concurrency 4: passed.Not run
main(Add Popover, Menu, MenuButton, and Dropdown for macOS, Windows, and Win32 #4386) or after the macOS fixes. The Win32 evidenceabove is from 238db96.
runner, and the four packages'
filesallowlists have changed, and none of these depend on the renderer. The macOSPaper Storybook CI job runs on this PR.
--runInBandpath underTF_BUILDis unexercised.<Text>paragraphs.check-agent-instructionsvalidates structurally only.Pull request checklist
This PR has considered (when applicable):