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