From d797eb630d3d916440ffcd7ac0ad82438ec5d37a Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Wed, 1 Apr 2026 19:03:05 +0200 Subject: [PATCH 1/4] add xbox retry on connect failure --- .../Private/DeviceProviders/XboxProvider.ps1 | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app-runner/Private/DeviceProviders/XboxProvider.ps1 b/app-runner/Private/DeviceProviders/XboxProvider.ps1 index 52281b6..79e8481 100644 --- a/app-runner/Private/DeviceProviders/XboxProvider.ps1 +++ b/app-runner/Private/DeviceProviders/XboxProvider.ps1 @@ -79,7 +79,26 @@ class XboxProvider : DeviceProvider { [hashtable] Connect() { Write-Debug "$($this.Platform): Connecting to device" $this.InvokePowerOn() # Wakes up the device - needs to run before connect. - $this.InvokeCommand('connect', @()) + + # Retry in case the device SYSTEM is temporarily unreachable (e.g. recovering + # from a previous test crash). xbconnect exits non-zero immediately in that case, + # which bypasses the timeout-based retry in InvokeCommandWithTimeoutAndRetry. + $maxAttempts = 4 + $retryDelaySeconds = 10 + for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) { + try { + $this.InvokeCommand('connect', @()) + break + } catch { + if ($attempt -lt $maxAttempts) { + Write-Warning "$($this.Platform): Connect attempt $attempt of $maxAttempts failed, retrying in $retryDelaySeconds seconds... ($_)" + Start-Sleep -Seconds $retryDelaySeconds + } else { + throw + } + } + } + return $this.CreateSessionInfo() } From b8c799cfb1a07cb031b26d93e8c553cfb7b2139e Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Wed, 1 Apr 2026 19:28:06 +0200 Subject: [PATCH 2/4] increase delay --- app-runner/Private/DeviceProviders/XboxProvider.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app-runner/Private/DeviceProviders/XboxProvider.ps1 b/app-runner/Private/DeviceProviders/XboxProvider.ps1 index 79e8481..1e3d136 100644 --- a/app-runner/Private/DeviceProviders/XboxProvider.ps1 +++ b/app-runner/Private/DeviceProviders/XboxProvider.ps1 @@ -84,7 +84,7 @@ class XboxProvider : DeviceProvider { # from a previous test crash). xbconnect exits non-zero immediately in that case, # which bypasses the timeout-based retry in InvokeCommandWithTimeoutAndRetry. $maxAttempts = 4 - $retryDelaySeconds = 10 + $retryDelaySeconds = 30 for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) { try { $this.InvokeCommand('connect', @()) From 7cd0df4c0d4dd6da97ec28f0e1e82d071127105c Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Thu, 2 Apr 2026 14:17:10 +0200 Subject: [PATCH 3/4] also retry if CreateSessionInfo() fails --- app-runner/Private/DeviceProviders/XboxProvider.ps1 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app-runner/Private/DeviceProviders/XboxProvider.ps1 b/app-runner/Private/DeviceProviders/XboxProvider.ps1 index 1e3d136..3c9e3af 100644 --- a/app-runner/Private/DeviceProviders/XboxProvider.ps1 +++ b/app-runner/Private/DeviceProviders/XboxProvider.ps1 @@ -88,7 +88,7 @@ class XboxProvider : DeviceProvider { for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) { try { $this.InvokeCommand('connect', @()) - break + return $this.CreateSessionInfo() } catch { if ($attempt -lt $maxAttempts) { Write-Warning "$($this.Platform): Connect attempt $attempt of $maxAttempts failed, retrying in $retryDelaySeconds seconds... ($_)" @@ -98,8 +98,6 @@ class XboxProvider : DeviceProvider { } } } - - return $this.CreateSessionInfo() } # Override Connect to support target parameter From d14f838a79bc85e3d3e0b8e41ec063d1d4b9113c Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Thu, 2 Apr 2026 14:30:26 +0200 Subject: [PATCH 4/4] update --- app-runner/Private/DeviceProviders/XboxProvider.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/app-runner/Private/DeviceProviders/XboxProvider.ps1 b/app-runner/Private/DeviceProviders/XboxProvider.ps1 index 3c9e3af..2384e4e 100644 --- a/app-runner/Private/DeviceProviders/XboxProvider.ps1 +++ b/app-runner/Private/DeviceProviders/XboxProvider.ps1 @@ -98,6 +98,7 @@ class XboxProvider : DeviceProvider { } } } + throw "Connect failed after $maxAttempts attempts" } # Override Connect to support target parameter