tools/manual_tests/frb-local-vmware-windows-dev-env.md
Verify that a local Apple Silicon macOS host can run FRB Windows validation through VMware Fusion, Vagrant, and a Packer-built Windows 11 Arm base box stored on an external disk.
.claude/skills/frb-dev-env/SKILL.md, .claude/skills/frb-vmware-windows-prepare/SKILL.md, .claude/skills/frb-manual-test/SKILL.mdRun this after changing the VMware Windows helper, Packer template, Vagrantfile, Windows provision scripts, Flutter/Rust/Visual Studio toolchain versions, or Windows manual validation workflow.
fzyzcjy/flutter_rust_bridgefrb/windows11-arm64 Vagrant box.vm_root must be configured through ~/.config/flutter_rust_bridge/vmware_windows.json, FRB_WINDOWS_VM_ROOT, or a command-specific flag; it must exist or be creatable and have at least 100GB free.host_proxy_url or FRB_WINDOWS_HOST_PROXY_URL.FRB_WINDOWS_ISO_CHECKSUM=sha256:<digest> or an .iso.sha256 file next to the Windows ISO.nogui mode.flutter --version inside the Windows VM.dart --version inside the Windows VM.rustc --version and cargo --version inside the Windows VM.Run preparation commands from the repository root.
git rev-parse --show-toplevel
git status --short
git submodule status --recursive
tools/vmware_windows/frb_vmware_windows_env.py init-root
tools/vmware_windows/frb_vmware_windows_env.py info
tools/vmware_windows/frb_vmware_windows_env.py check-host
tools/vmware_windows/frb_vmware_windows_env.py self-test
tools/vmware_windows/validate_offline.zsh
Confirm the helper reports the expected storage_root and, when needed, the expected host_proxy_url.
If the base box is not imported yet, build and import it:
tools/vmware_windows/run_packer_build.zsh \
--iso /path/to/frb-windows-vmware/downloads/iso/Windows11_Arm64.iso \
--preflight-only
tools/vmware_windows/run_packer_build.zsh \
--iso /path/to/frb-windows-vmware/downloads/iso/Windows11_Arm64.iso \
--add-box
The wrapper records a full build log under the configured VM root, applies the configured host proxy when present, regenerates the UEFI remastered autounattend ISO, and stops the active build if / or the VM storage root drops below 100GB free.
If the full VMware build is not ready to run yet, first validate only the ISO remastering path:
tools/vmware_windows/run_packer_build.zsh \
--iso /path/to/frb-windows-vmware/downloads/iso/Windows11_Arm64.iso \
--prepare-only
frb_example/flutter_via_create.Start the per-worktree Windows VM.
tools/vmware_windows/frb_vmware_windows_env.py start
Record Windows and toolchain versions.
tools/vmware_windows/frb_vmware_windows_env.py exec -- powershell -NoProfile -Command "Get-ComputerInfo | Select-Object WindowsProductName,OsArchitecture,WindowsVersion; flutter --version; dart --version; rustc --version; cargo --version; cmake --version; ninja --version"
Upload the host checkout to the VM-local build path.
tools/vmware_windows/frb_vmware_windows_env.py upload
Run a focused Windows Flutter native test.
tools/vmware_windows/frb_vmware_windows_env.py test-flutter-windows --package frb_example/flutter_via_create
Confirm the host checkout did not gain unexpected generated or cache files.
git status --short
Stop the VM if it is not needed for follow-up debugging.
tools/vmware_windows/frb_vmware_windows_env.py stop
The VMware Windows environment coverage test passes when the helper resolves all heavy paths under the configured VM root, the Windows guest command channel works, the checkout uploads to the VM-local worktree, and the Flutter Windows native test completes successfully.
The test fails if any of the following happens:
git status --short shows unexpected local changes after the run.The test is blocked, not failed, if VMware Fusion or the Windows 11 Arm ISO cannot be installed or downloaded on the host.
run_packer_build.zsh log path if the base box was built during this run.git status --short output.check-host reports missing tools, install VMware Fusion Pro, Vagrant, Packer, and the Vagrant VMware Desktop provider.init-root.FRB_WINDOWS_VM_USERNAME, FRB_WINDOWS_VM_PASSWORD, or the helper-generated credentials/guest-password.txt under FRB_WINDOWS_VM_ROOT without printing the password.FRB_WINDOWS_VM_GUI=false before rerunning start.VCTargetsPath or BaseOutputPath/OutputPath error, reinstall the Visual Studio Build Tools VCTools workload with Microsoft.VisualStudio.Component.VC.Tools.ARM64 and Microsoft.VisualStudio.Component.VC.CMake.Project, then delete the guest build\windows\arm64 directory before retrying.C:\frb\worktree, not directly from C:\frb-host.packer/autounattend/autounattend.xml path or the PowerShell provision scripts.Stop the VM:
tools/vmware_windows/frb_vmware_windows_env.py stop
git status --short
Delete the disposable per-worktree VM only when reclaiming external disk space:
tools/vmware_windows/frb_vmware_windows_env.py destroy --force
Keep the Packer-built base box unless rebuilding the Windows base.
The helper commands are intended to become automatable on a dedicated Apple Silicon Windows validation host once VMware Fusion, Windows licensing, and base box refresh are managed outside individual PRs.