diff --git a/tests/PSProxmoxVE.Tests/Integration/16_Cluster.Tests.ps1 b/tests/PSProxmoxVE.Tests/Integration/16_Cluster.Tests.ps1 index 405ccc7..a14a26f 100644 --- a/tests/PSProxmoxVE.Tests/Integration/16_Cluster.Tests.ps1 +++ b/tests/PSProxmoxVE.Tests/Integration/16_Cluster.Tests.ps1 @@ -205,11 +205,18 @@ Describe 'Cluster Config & HA Lifecycle — Integration' -Tag 'Integration' { if (Skip-IfNoNodeB) { return } if (Skip-IfNoCluster) { return } - $status = Get-PveClusterStatus -ErrorAction Stop - $nodeEntries = @($status) | Where-Object { $_.Type -eq 'node' } - @($nodeEntries).Count | Should -BeGreaterOrEqual 2 + # Corosync membership reaches the status endpoint seconds after + # the join task completes — poll rather than assert instantly. + $deadline = [DateTime]::UtcNow.AddSeconds(60) + do { + $status = Get-PveClusterStatus -ErrorAction Stop + $nodeEntries = @($status) | Where-Object { $_.Type -eq 'node' } + $onlineNodes = @($nodeEntries) | Where-Object { $_.Online -eq 1 } + if (@($onlineNodes).Count -ge 2) { break } + Start-Sleep -Seconds 3 + } while ([DateTime]::UtcNow -lt $deadline) - $onlineNodes = @($nodeEntries) | Where-Object { $_.Online -eq 1 } + @($nodeEntries).Count | Should -BeGreaterOrEqual 2 @($onlineNodes).Count | Should -BeGreaterOrEqual 2 } }