diff --git a/scripts/run-wasm-tests.ps1 b/scripts/run-wasm-tests.ps1 new file mode 100644 index 0000000..adc4c7d --- /dev/null +++ b/scripts/run-wasm-tests.ps1 @@ -0,0 +1,58 @@ +$ErrorActionPreference = "Stop" + +function Set-WasmToolchainEnv { + param() + $clang = $env:CC + if (-not $clang -or -not (Test-Path $clang)) { + $defaultClang = "C:\\Program Files\\LLVM\\bin\\clang.exe" + if (Test-Path $defaultClang) { + $clang = $defaultClang + } else { + $cmd = Get-Command clang.exe -ErrorAction SilentlyContinue + if ($cmd) { $clang = $cmd.Path } + } + } + if (-not $clang) { throw "Clang introuvable. Installez LLVM/Clang et relancez." } + + $env:CC = $clang + $llvmBin = Split-Path $clang -Parent + $env:AR = Join-Path $llvmBin "llvm-ar.exe" + $env:NM = Join-Path $llvmBin "llvm-nm.exe" + + $env:TARGET_CC = $env:CC + $env:CC_wasm32_unknown_unknown = $env:CC + $env:AR_wasm32_unknown_unknown = $env:AR + $env:NM_wasm32_unknown_unknown = $env:NM + $env:CC_wasm32-unknown-unknown = $env:CC + $env:AR_wasm32-unknown-unknown = $env:AR + $env:NM_wasm32-unknown-unknown = $env:NM +} + +function Invoke-WasmPackTests { + param( + [switch]$Chrome, + [switch]$Firefox, + [switch]$Node + ) + if ($Chrome) { wasm-pack test --headless --chrome } + if ($Firefox) { wasm-pack test --headless --firefox } + if ($Node) { wasm-pack test --node } +} + +$scriptsDir = Split-Path -Parent $MyInvocation.MyCommand.Path +$repoRoot = Split-Path -Parent $scriptsDir +Push-Location $repoRoot +try { + Set-WasmToolchainEnv + cargo clean --target wasm32-unknown-unknown | Out-Null + try { + Invoke-WasmPackTests -Chrome -Firefox + } catch { + Write-Warning "Tests headless navigateur échoués, tentative avec Node." + Invoke-WasmPackTests -Node + } +} finally { + Pop-Location +} + +