From 6c210c1341b5faf978034dce6df322a48144df7e Mon Sep 17 00:00:00 2001 From: Vivian Vijay Ludrick <116781909+vivianludrick@users.noreply.github.com> Date: Tue, 18 Aug 2026 11:39:50 +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/LocalBinary.js | 6 +++++- test/local.js | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/LocalBinary.js b/lib/LocalBinary.js index 8d694b2..cad4d8e 100644 --- a/lib/LocalBinary.js +++ b/lib/LocalBinary.js @@ -93,7 +93,11 @@ function LocalBinary(){ this.getBinaryFilename = function() { if(this.hostOS.match(/darwin|mac os/i)){ - return 'BrowserStackLocal-darwin-x64'; + if(this.isArm64) { + return 'BrowserStackLocal-darwin-arm64'; + } else { + return 'BrowserStackLocal-darwin-x64'; + } } else if(this.hostOS.match(/mswin|msys|mingw|cygwin|bccwin|wince|emc|win32/i)) { this.windows = true; return 'BrowserStackLocal.exe'; diff --git a/test/local.js b/test/local.js index 576ad79..31c1437 100644 --- a/test/local.js +++ b/test/local.js @@ -393,10 +393,19 @@ describe('LocalBinary', function () { it('should return darwin binary filename', function() { ['darwin', 'mac os'].forEach(function(os) { localBinary.hostOS = os; + localBinary.isArm64 = false; expect(localBinary.getBinaryFilename()).to.equal('BrowserStackLocal-darwin-x64'); }); }); + it('should return darwin arm64 binary filename', function() { + ['darwin', 'mac os'].forEach(function(os) { + localBinary.hostOS = os; + localBinary.isArm64 = true; + expect(localBinary.getBinaryFilename()).to.equal('BrowserStackLocal-darwin-arm64'); + }); + }); + it('should return exe binary filename', function() { ['mswin', 'msys', 'mingw', 'cygwin', 'bccwin', 'wince', 'emc', 'win32'].forEach(function(os) { localBinary.hostOS = os;