Skip to content

Commit 5de973a

Browse files
committed
test windows ci
Signed-off-by: Andrei Gherghescu <[email protected]>
1 parent d6f822f commit 5de973a

File tree

1 file changed

+235
-1
lines changed

1 file changed

+235
-1
lines changed

.github/workflows/ci.yml

Lines changed: 235 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ jobs:
7070
strategy:
7171
fail-fast: false
7272
matrix:
73-
os: [ubuntu-latest, windows-latest, macos-latest]
73+
# os: [ubuntu-latest, windows-latest, macos-latest]
74+
os: [ubuntu-latest, macos-latest]
7475
runs-on: ${{ matrix.os }}
7576
steps:
7677
- name: Setup Chrome
@@ -145,6 +146,239 @@ jobs:
145146
targets: wasm32-unknown-unknown
146147
- run: cd ${{ github.workspace }}/examples/wasm-yew/${{ matrix.example }} && cargo build --target wasm32-unknown-unknown
147148

149+
test_static_export_chrome:
150+
name: Test Static Export with Chrome (Windows)
151+
runs-on: windows-latest
152+
timeout-minutes: 30
153+
steps:
154+
- uses: actions/checkout@v4
155+
156+
- name: Setup Chrome and chromedriver
157+
id: setup-chrome
158+
uses: browser-actions/setup-chrome@v1
159+
with:
160+
chrome-version: 'latest'
161+
install-chromedriver: true
162+
163+
- uses: dtolnay/rust-toolchain@stable
164+
165+
- name: Cache cargo registry
166+
uses: actions/cache@v4
167+
with:
168+
path: |
169+
~/.cargo/registry/index/
170+
~/.cargo/registry/cache/
171+
~/.cargo/git/db/
172+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
173+
restore-keys: |
174+
${{ runner.os }}-cargo-registry-
175+
176+
- name: Debug - Show setup-chrome outputs
177+
run: |
178+
Write-Host "=== Setup Chrome Action Outputs ==="
179+
Write-Host "chrome-version: ${{ steps.setup-chrome.outputs.chrome-version }}"
180+
Write-Host "chrome-path: ${{ steps.setup-chrome.outputs.chrome-path }}"
181+
Write-Host "chromedriver-version: ${{ steps.setup-chrome.outputs.chromedriver-version }}"
182+
Write-Host "chromedriver-path: ${{ steps.setup-chrome.outputs.chromedriver-path }}"
183+
Write-Host "================================"
184+
185+
- name: Debug - System information
186+
run: |
187+
Write-Host "=== System Information ==="
188+
Write-Host "OS Version: $(Get-ComputerInfo | Select-Object -ExpandProperty WindowsProductName)"
189+
Write-Host "Architecture: $(Get-ComputerInfo | Select-Object -ExpandProperty OsArchitecture)"
190+
Write-Host "Available memory: $((Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / 1MB) MB"
191+
Write-Host "=========================="
192+
193+
- name: Debug - Check Chrome and chromedriver installation
194+
run: |
195+
Write-Host "=== Chrome and Chromedriver Check ==="
196+
197+
# Check if Chrome is in PATH
198+
try {
199+
$chromeVersion = & chrome.exe --version 2>$null
200+
Write-Host "Chrome in PATH: $chromeVersion"
201+
} catch {
202+
Write-Host "Chrome not found in PATH"
203+
}
204+
205+
# Check if chromedriver is in PATH
206+
try {
207+
$chromedriverVersion = & chromedriver.exe --version 2>$null
208+
Write-Host "Chromedriver in PATH: $chromedriverVersion"
209+
} catch {
210+
Write-Host "Chromedriver not found in PATH"
211+
}
212+
213+
# Check specific paths from action outputs
214+
$chromePath = "${{ steps.setup-chrome.outputs.chrome-path }}"
215+
$chromedriverPath = "${{ steps.setup-chrome.outputs.chromedriver-path }}"
216+
217+
Write-Host "Chrome path from action: $chromePath"
218+
Write-Host "Chromedriver path from action: $chromedriverPath"
219+
220+
if (Test-Path $chromePath) {
221+
Write-Host "Chrome file exists: $(Get-Item $chromePath | Select-Object -ExpandProperty FullName)"
222+
Write-Host "Chrome file size: $((Get-Item $chromePath).Length) bytes"
223+
} else {
224+
Write-Host "Chrome file does not exist at specified path"
225+
}
226+
227+
if (Test-Path $chromedriverPath) {
228+
Write-Host "Chromedriver file exists: $(Get-Item $chromedriverPath | Select-Object -ExpandProperty FullName)"
229+
Write-Host "Chromedriver file size: $((Get-Item $chromedriverPath).Length) bytes"
230+
} else {
231+
Write-Host "Chromedriver file does not exist at specified path"
232+
}
233+
234+
Write-Host "================================"
235+
236+
- name: Debug - Check Rust toolchain and dependencies
237+
run: |
238+
Write-Host "=== Rust Toolchain Check ==="
239+
rustc --version
240+
cargo --version
241+
Write-Host "Current directory: $(Get-Location)"
242+
Write-Host "Workspace contents:"
243+
Get-ChildItem -Name | Sort-Object
244+
Write-Host "=========================="
245+
246+
- name: Debug - Check plotly_static package
247+
run: |
248+
Write-Host "=== Plotly Static Package Check ==="
249+
cd plotly_static
250+
Write-Host "Package contents:"
251+
Get-ChildItem -Name | Sort-Object
252+
Write-Host "Cargo.toml contents:"
253+
Get-Content Cargo.toml
254+
Write-Host "================================"
255+
256+
- name: Debug - Pre-update cargo index
257+
run: |
258+
Write-Host "=== Pre-update Cargo Index Check ==="
259+
Write-Host "Current cargo index status:"
260+
cargo search --limit 1 plotly 2>&1 | Select-String -Pattern "Updating|Downloading|error" || Write-Host "Index seems up to date"
261+
Write-Host "================================"
262+
263+
- name: Update cargo index (if needed)
264+
run: |
265+
Write-Host "=== Updating Cargo Index ==="
266+
# Force update the index with a timeout
267+
$timeout = 300 # 5 minutes
268+
$job = Start-Job -ScriptBlock {
269+
cargo update --dry-run
270+
}
271+
272+
try {
273+
Wait-Job $job -Timeout $timeout
274+
$result = Receive-Job $job
275+
Write-Host "Cargo update result: $result"
276+
if ($job.State -eq "Completed") {
277+
Write-Host "Cargo index updated successfully"
278+
} else {
279+
Write-Host "Cargo index update timed out, continuing anyway"
280+
Stop-Job $job
281+
}
282+
} catch {
283+
Write-Host "Cargo index update failed: $_"
284+
Write-Host "Continuing with test anyway..."
285+
} finally {
286+
if ($job) {
287+
Remove-Job $job -Force -ErrorAction SilentlyContinue
288+
}
289+
}
290+
Write-Host "================================"
291+
292+
- name: Run PNG export test with Chrome
293+
run: |
294+
Write-Host "=== Starting PNG Export Test ==="
295+
296+
# Set environment variables
297+
$env:WEBDRIVER_PATH = "${{ steps.setup-chrome.outputs.chromedriver-path }}"
298+
$env:CHROME_PATH = "${{ steps.setup-chrome.outputs.chrome-path }}"
299+
$env:RUST_LOG = "debug"
300+
$env:RUST_BACKTRACE = "1"
301+
302+
Write-Host "Environment variables set:"
303+
Write-Host "WEBDRIVER_PATH: $env:WEBDRIVER_PATH"
304+
Write-Host "CHROME_PATH: $env:CHROME_PATH"
305+
Write-Host "RUST_LOG: $env:RUST_LOG"
306+
Write-Host "RUST_BACKTRACE: $env:RUST_BACKTRACE"
307+
308+
# Verify the paths exist
309+
if (-not (Test-Path $env:WEBDRIVER_PATH)) {
310+
Write-Error "Chromedriver not found at: $env:WEBDRIVER_PATH"
311+
exit 1
312+
}
313+
if (-not (Test-Path $env:CHROME_PATH)) {
314+
Write-Error "Chrome not found at: $env:CHROME_PATH"
315+
exit 1
316+
}
317+
318+
Write-Host "All paths verified, starting cargo test..."
319+
320+
# Run with verbose output and longer timeout
321+
$timeout = 900 # 15 minutes (increased from 10)
322+
$job = Start-Job -ScriptBlock {
323+
param($webdriverPath, $chromePath)
324+
$env:WEBDRIVER_PATH = $webdriverPath
325+
$env:CHROME_PATH = $chromePath
326+
$env:RUST_LOG = "debug"
327+
$env:RUST_BACKTRACE = "1"
328+
Set-Location $PWD
329+
330+
# Add progress indicators
331+
Write-Host "Starting cargo test with progress monitoring..."
332+
$process = Start-Process -FilePath "cargo" -ArgumentList "test", "--package", "plotly_static", "--features", "chromedriver,webdriver_download", "tests::save_png", "--", "--nocapture" -PassThru -NoNewWindow
333+
334+
# Monitor the process with progress updates
335+
$startTime = Get-Date
336+
while (-not $process.HasExited) {
337+
$elapsed = (Get-Date) - $startTime
338+
if ($elapsed.TotalSeconds -gt $timeout) {
339+
Write-Host "Timeout reached, terminating process..."
340+
$process.Kill()
341+
exit 1
342+
}
343+
344+
# Show progress every 30 seconds
345+
if ([math]::Floor($elapsed.TotalSeconds) % 30 -eq 0) {
346+
Write-Host "Test running... Elapsed: $([math]::Floor($elapsed.TotalSeconds))s"
347+
}
348+
349+
Start-Sleep -Seconds 5
350+
}
351+
352+
$exitCode = $process.ExitCode
353+
Write-Host "Process exited with code: $exitCode"
354+
exit $exitCode
355+
} -ArgumentList $env:WEBDRIVER_PATH, $env:CHROME_PATH
356+
357+
try {
358+
Wait-Job $job -Timeout $timeout
359+
$result = Receive-Job $job
360+
Write-Host $result
361+
if ($job.State -eq "Completed") {
362+
Write-Host "Test completed successfully"
363+
} else {
364+
Write-Host "Test timed out or failed"
365+
Stop-Job $job
366+
Remove-Job $job
367+
exit 1
368+
}
369+
} catch {
370+
Write-Host "Exception occurred: $_"
371+
Stop-Job $job
372+
Remove-Job $job
373+
exit 1
374+
} finally {
375+
if ($job) {
376+
Remove-Job $job -Force -ErrorAction SilentlyContinue
377+
}
378+
}
379+
380+
Write-Host "=== PNG Export Test Completed ==="
381+
148382
build_book:
149383
name: Build Book
150384
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)