Deprecate kaleido #600
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| branches: [ main ] | |
| push: | |
| branches: [ main ] | |
| # Cancel any in-flight jobs for the same PR/branch so there's only one active | |
| # at a time | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| RUST_BACKTRACE: full | |
| jobs: | |
| rustfmt: | |
| name: Rustfmt | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: rustfmt | |
| - run: cargo fmt --all -- --check | |
| - run: cd ${{ github.workspace }}/examples && cargo fmt --all -- --check | |
| clippy: | |
| name: Clippy | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Chrome | |
| uses: browser-actions/setup-chrome@v1 | |
| with: | |
| chrome-version: 'latest' | |
| install-chromedriver: true | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| targets: wasm32-unknown-unknown | |
| # lint the main library workspace for non-wasm target | |
| - run: cargo clippy --features all -- -D warnings -A deprecated | |
| # lint the non-wasm examples | |
| - run: cd ${{ github.workspace }}/examples && cargo clippy --workspace --exclude "wasm*" --exclude "kaleido" -- -D warnings | |
| # lint the plotly library for wasm target | |
| - run: cargo clippy --package plotly --target wasm32-unknown-unknown -- -D warnings | |
| # lint the wasm examples | |
| - run: cd ${{ github.workspace }}/examples/wasm-yew && cargo clippy --target wasm32-unknown-unknown --all | |
| semver: | |
| name: semver | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check semver | |
| uses: obi1kenobi/cargo-semver-checks-action@v2 | |
| with: | |
| package: plotly | |
| feature-group: only-explicit-features | |
| features: kaleido | |
| rust-toolchain: stable | |
| release-type: minor | |
| test: | |
| name: Tests | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Setup Chrome | |
| uses: browser-actions/setup-chrome@v1 | |
| with: | |
| chrome-version: 'latest' | |
| install-chromedriver: true | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo test --features plotly_ndarray,plotly_image,static_export_default | |
| - if: ${{ matrix.os == 'windows-latest' }} | |
| run: gci -recurse -filter "*example*" | |
| test-static-export: | |
| name: Test Static Export | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| browser: [firefox, chrome] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Firefox | |
| if: matrix.browser == 'firefox' | |
| uses: browser-actions/setup-firefox@v1 | |
| with: | |
| firefox-version: 'latest' | |
| - name: Setup Chrome | |
| if: matrix.browser == 'chrome' | |
| uses: browser-actions/setup-chrome@v1 | |
| with: | |
| chrome-version: 'latest' | |
| install-chromedriver: true | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Test plotly and plotly_static | |
| shell: bash | |
| run: | | |
| echo "=== Platform Information ===" | |
| echo "OS: $(uname -a)" | |
| echo "Architecture: $(uname -m)" | |
| echo "Current directory: $(pwd)" | |
| echo "=== Checking for existing processes ===" | |
| ps aux | grep -E "(chromedriver|geckodriver|firefox|chrome)" || echo "No browser processes found" | |
| echo "=== Checking port availability ===" | |
| netstat -an | grep -E ":(4444|4445|4446|4447|4448|4449|4450)" || echo "No WebDriver ports in use" | |
| echo "=== Running tests ===" | |
| if [ "${{ matrix.browser }}" = "firefox" ]; then | |
| echo "Testing with Firefox/geckodriver..." | |
| timeout 600 cargo test -p plotly --features static_export_default --lib -- --nocapture | |
| timeout 600 cargo test -p plotly_static --features geckodriver,webdriver_download -- --nocapture | |
| else | |
| echo "Testing with Chrome/chromedriver..." | |
| timeout 600 cargo test -p plotly --features static_export_chromedriver,static_export_downloader --lib -- --nocapture | |
| timeout 600 cargo test -p plotly_static --features chromedriver,webdriver_download -- --nocapture | |
| fi | |
| echo "=== Cleanup after tests ===" | |
| pkill -f chromedriver || echo "No chromedriver processes to kill" | |
| pkill -f geckodriver || echo "No geckodriver processes to kill" | |
| pkill -f firefox || echo "No firefox processes to kill" | |
| pkill -f chrome || echo "No chrome processes to kill" | |
| test-macos-compatibility: | |
| name: Test macOS Compatibility | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Chrome | |
| uses: browser-actions/setup-chrome@v1 | |
| with: | |
| chrome-version: 'latest' | |
| install-chromedriver: true | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Test Chrome and chromedriver installation | |
| run: | | |
| echo "=== System Information ===" | |
| echo "macOS version: $(sw_vers)" | |
| echo "Architecture: $(uname -m)" | |
| echo "PATH: $PATH" | |
| echo "Current user: $(whoami)" | |
| echo "Home directory: $HOME" | |
| echo "=== Chrome Installation Check ===" | |
| ls -la "/Applications/Google Chrome.app/Contents/MacOS/" || echo "Chrome not found in Applications" | |
| which google-chrome || echo "Chrome not found in PATH" | |
| google-chrome --version || echo "Chrome version check failed" | |
| echo "=== chromedriver Installation Check ===" | |
| chromedriver --version || echo "chromedriver not found in PATH" | |
| ls -la /usr/local/bin/chromedriver || echo "chromedriver not found in /usr/local/bin" | |
| ls -la /opt/homebrew/bin/chromedriver || echo "chromedriver not found in /opt/homebrew/bin" | |
| echo "=== Environment Variables ===" | |
| echo "WEBDRIVER_PATH: ${WEBDRIVER_PATH:-not set}" | |
| echo "CHROMEDRIVER_PATH: ${CHROMEDRIVER_PATH:-not set}" | |
| echo "CHROME_PATH: ${CHROME_PATH:-not set}" | |
| - name: Run macOS-specific tests | |
| run: | | |
| echo "Running macOS compatibility tests..." | |
| echo "Current directory: $(pwd)" | |
| echo "Rust version: $(rustc --version)" | |
| echo "Cargo version: $(cargo --version)" | |
| # Run tests with verbose output and capture failures | |
| set -x # Enable debug mode | |
| echo "=== Testing Chrome installation ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_chrome_installation -- --nocapture || echo "Chrome installation test failed" | |
| echo "=== Testing chromedriver installation ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_chromedriver_installation -- --nocapture || echo "chromedriver installation test failed" | |
| echo "=== Testing static exporter creation ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_static_exporter_creation_macos -- --nocapture || echo "Static exporter creation test failed" | |
| echo "=== Testing basic PNG export ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_basic_png_export_macos -- --nocapture || echo "Basic PNG export test failed" | |
| echo "=== Testing macOS Chrome flags ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_macos_chrome_flags -- --nocapture || echo "macOS Chrome flags test failed" | |
| echo "=== Testing user data directory management ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_user_data_directory_management -- --nocapture || echo "User data directory management test failed" | |
| echo "=== Testing PDF debugging ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_pdf_debugging_macos -- --nocapture || echo "PDF debugging test failed" | |
| echo "=== Testing PDF with alternative flags ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_pdf_with_alternative_flags -- --nocapture || echo "PDF alternative flags test failed" | |
| echo "=== Testing html2pdf library availability ===" | |
| cargo test -p plotly_static --features chromedriver,webdriver_download --lib macos_tests::macos_tests::test_html2pdf_library_loading -- --nocapture || echo "html2pdf library test failed" | |
| - name: Run all plotly_static tests on macOS | |
| run: | | |
| echo "Running all plotly_static tests on macOS..." | |
| echo "Checking for existing chromedriver processes before tests..." | |
| ps aux | grep chromedriver || echo "No chromedriver processes found" | |
| # Run tests with timeout to prevent hanging | |
| timeout 300 cargo test -p plotly_static --features chromedriver,webdriver_download --lib -- --nocapture || echo "Tests timed out or failed" | |
| echo "Checking for chromedriver processes after tests..." | |
| ps aux | grep chromedriver || echo "No chromedriver processes found" | |
| - name: Test plotly with static export on macOS | |
| run: | | |
| echo "Testing plotly with static export on macOS..." | |
| echo "Checking for port conflicts before tests..." | |
| lsof -i :4444 || echo "Port 4444 is free" | |
| lsof -i :4445 || echo "Port 4445 is free" | |
| lsof -i :4446 || echo "Port 4446 is free" | |
| lsof -i :4447 || echo "Port 4447 is free" | |
| cargo test -p plotly --features static_export_chromedriver,static_export_downloader --lib -- --nocapture || echo "plotly static export tests failed" | |
| echo "Cleaning up after tests..." | |
| pkill -f chromedriver || echo "No chromedriver processes to kill" | |
| pkill -f "Google Chrome" || echo "No Chrome processes to kill" | |
| code-coverage: | |
| name: Code Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: llvm-tools-preview | |
| - uses: taiki-e/install-action@cargo-llvm-cov | |
| - uses: codecov/codecov-action@v3 | |
| build_examples: | |
| name: Build Examples | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| example: # missing jupyter | |
| [ | |
| 3d_charts, | |
| basic_charts, | |
| custom_controls, | |
| customization, | |
| financial_charts, | |
| images, | |
| kaleido, | |
| maps, | |
| ndarray, | |
| scientific_charts, | |
| shapes, | |
| static_export, | |
| subplots, | |
| themes, | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Firefox (for static_export) | |
| if: matrix.example == 'static_export' | |
| uses: browser-actions/setup-firefox@v1 | |
| with: | |
| firefox-version: 'latest' | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cd ${{ github.workspace }}/examples/${{ matrix.example }} && cargo build | |
| build_wasm_examples: | |
| name: Build Wasm Examples | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| example: [basic, callback-example] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - run: cd ${{ github.workspace }}/examples/wasm-yew/${{ matrix.example }} && cargo build --target wasm32-unknown-unknown | |
| build_book: | |
| name: Build Book | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Firefox (for static_export example) | |
| uses: browser-actions/setup-firefox@v1 | |
| with: | |
| firefox-version: 'latest' | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo install mdbook --no-default-features --features search --vers "^0.4" --locked --quiet | |
| - name: Build examples to generate needed html files | |
| run: | | |
| cd ${{ github.workspace }}/examples/basic_charts && cargo run | |
| cd ${{ github.workspace }}/examples/statistical_charts && cargo run | |
| cd ${{ github.workspace }}/examples/scientific_charts && cargo run | |
| cd ${{ github.workspace }}/examples/financial_charts && cargo run | |
| cd ${{ github.workspace }}/examples/3d_charts && cargo run | |
| cd ${{ github.workspace }}/examples/subplots && cargo run | |
| cd ${{ github.workspace }}/examples/shapes && cargo run | |
| cd ${{ github.workspace }}/examples/themes && cargo run | |
| cd ${{ github.workspace }}/examples/static_export && cargo run | |
| - name: Build book | |
| run: mdbook build docs/book |