From af31327f0412f45f9748947767c9a8944b361e50 Mon Sep 17 00:00:00 2001 From: Vivian Vijay Ludrick <116781909+vivianludrick@users.noreply.github.com> Date: Tue, 18 Aug 2026 11:42:04 +0530 Subject: [PATCH] LOC-7291: download darwin-arm64 binary on Apple Silicon On macOS the binding now selects BrowserStackLocal-darwin-arm64 when the runtime reports arm64 (same runtime-arch detection the linux-arm64 path already uses); x64 runtimes (including x64-under-Rosetta) keep BrowserStackLocal-darwin-x64, preserving current behavior. Co-Authored-By: Claude Fable 5 --- lib/browserstack/localbinary.rb | 6 +++++- test/browserstack-local-test.rb | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/browserstack/localbinary.rb b/lib/browserstack/localbinary.rb index 737c590..72f4121 100644 --- a/lib/browserstack/localbinary.rb +++ b/lib/browserstack/localbinary.rb @@ -55,7 +55,11 @@ def compute_binary_filename when /mswin|msys|mingw|cygwin|bccwin|wince|emc/ 'BrowserStackLocal.exe' when /darwin|mac os/ - 'BrowserStackLocal-darwin-x64' + if host_cpu =~ /arm64|aarch64/ + 'BrowserStackLocal-darwin-arm64' + else + 'BrowserStackLocal-darwin-x64' + end when /linux/ if host_cpu =~ /arm64|aarch64/ 'BrowserStackLocal-linux-arm64' diff --git a/test/browserstack-local-test.rb b/test/browserstack-local-test.rb index 2c6218b..20de26a 100644 --- a/test/browserstack-local-test.rb +++ b/test/browserstack-local-test.rb @@ -141,9 +141,16 @@ def test_alpine_x64_picks_alpine_binary end end - def test_darwin_arm64_picks_darwin_x64 - # No darwin-arm64 binary; runs under Rosetta. Matches Node. + def test_darwin_arm64_picks_darwin_arm64 with_host_config('darwin22', 'arm64') do + assert_equal 'BrowserStackLocal-darwin-arm64', + BrowserStack::LocalBinary.new.send(:compute_binary_filename) + end + end + + def test_darwin_x64_picks_darwin_x64 + # x64 runtime (including x64-under-Rosetta) keeps the x64 binary + with_host_config('darwin22', 'x86_64') do assert_equal 'BrowserStackLocal-darwin-x64', BrowserStack::LocalBinary.new.send(:compute_binary_filename) end