Fix Leptos 0.8 compatibility and WASM build #8
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: Test Tooltip Component | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| paths: | |
| - 'packages/*/tooltip/**' | |
| - 'tests/tooltip_integration_test.rs' | |
| - 'scripts/test_tooltip.sh' | |
| - '.github/workflows/test-tooltip.yml' | |
| pull_request: | |
| branches: [ main ] | |
| paths: | |
| - 'packages/*/tooltip/**' | |
| - 'tests/tooltip_integration_test.rs' | |
| - 'scripts/test_tooltip.sh' | |
| - '.github/workflows/test-tooltip.yml' | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| RUSTFLAGS: "-D warnings" | |
| jobs: | |
| test-tooltip: | |
| name: Test Tooltip Component | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| components: clippy, rustfmt | |
| - name: Install wasm-pack | |
| uses: jetli/wasm-pack-action@v0.4.0 | |
| with: | |
| version: 'latest' | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Cache cargo build | |
| uses: actions/cache@v4 | |
| with: | |
| path: target | |
| key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| - name: Run comprehensive tooltip tests | |
| run: ./scripts/test_tooltip.sh | |
| test-browser: | |
| name: Browser Compatibility Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| browser: [firefox, chrome] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Install wasm-pack | |
| uses: jetli/wasm-pack-action@v0.4.0 | |
| with: | |
| version: 'latest' | |
| - name: Install Chrome | |
| if: matrix.browser == 'chrome' | |
| uses: browser-actions/setup-chrome@latest | |
| - name: Install Firefox | |
| if: matrix.browser == 'firefox' | |
| uses: browser-actions/setup-firefox@latest | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Test Yew Tooltip in ${{ matrix.browser }} | |
| working-directory: packages/yew/tooltip | |
| run: | | |
| if [ "${{ matrix.browser }}" == "chrome" ]; then | |
| wasm-pack test --headless --chrome | |
| else | |
| wasm-pack test --headless --firefox | |
| fi | |
| - name: Test Leptos Tooltip in ${{ matrix.browser }} | |
| working-directory: packages/leptos/tooltip | |
| run: | | |
| if [ "${{ matrix.browser }}" == "chrome" ]; then | |
| wasm-pack test --headless --chrome | |
| else | |
| wasm-pack test --headless --firefox | |
| fi | |
| test-examples: | |
| name: Example Applications | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Test Leptos examples | |
| if: hashFiles('book-examples/leptos/Cargo.toml') != '' | |
| working-directory: book-examples/leptos | |
| run: cargo check | |
| - name: Test Yew examples | |
| if: hashFiles('book-examples/yew/Cargo.toml') != '' | |
| working-directory: book-examples/yew | |
| run: cargo check | |
| - name: Build example documentation | |
| run: | | |
| if [ -d book-examples ]; then | |
| cargo doc --no-deps --workspace | |
| fi | |
| lint-and-format: | |
| name: Code Quality Checks | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Check formatting | |
| run: | | |
| cargo fmt --check -p shadcn-ui-yew-tooltip -p shadcn-ui-leptos-tooltip | |
| - name: Run Clippy | |
| run: | | |
| cargo clippy -p shadcn-ui-yew-tooltip -p shadcn-ui-leptos-tooltip -- -D warnings | |
| - name: Check documentation | |
| run: | | |
| cargo doc --no-deps -p shadcn-ui-yew-tooltip -p shadcn-ui-leptos-tooltip | |
| security-audit: | |
| name: Security Vulnerability Scan | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install cargo-audit | |
| run: cargo install cargo-audit | |
| - name: Run security audit | |
| run: cargo audit | |
| - name: Check for known security vulnerabilities | |
| run: | | |
| # Check for vulnerable dependencies | |
| cargo audit --deny warnings | |
| performance-benchmark: | |
| name: Performance Benchmarks | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Install wasm-pack | |
| uses: jetli/wasm-pack-action@v0.4.0 | |
| with: | |
| version: 'latest' | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Build optimized WASM bundles | |
| run: | | |
| cd packages/yew/tooltip | |
| wasm-pack build --target web --out-dir ../../../dist/yew-tooltip | |
| cd ../../leptos/tooltip | |
| wasm-pack build --target web --out-dir ../../../dist/leptos-tooltip | |
| - name: Measure bundle sizes | |
| run: | | |
| echo "Bundle size analysis:" | |
| if [ -d dist ]; then | |
| find dist -name "*.wasm" -exec ls -lh {} \; | |
| find dist -name "*.js" -exec ls -lh {} \; | |
| fi | |
| - name: Comment PR with bundle sizes | |
| if: github.event_name == 'pull_request' | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const fs = require('fs'); | |
| const path = require('path'); | |
| // This would analyze bundle sizes and comment on PR | |
| // Implementation depends on specific bundle analysis needs | |
| console.log('Bundle size analysis completed'); | |
| accessibility-audit: | |
| name: Accessibility Compliance | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Install wasm-pack | |
| uses: jetli/wasm-pack-action@v0.4.0 | |
| with: | |
| version: 'latest' | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| - name: Install accessibility testing tools | |
| run: | | |
| npm install -g @axe-core/cli | |
| npm install -g lighthouse | |
| - name: Build test applications | |
| run: | | |
| # This would build test applications for accessibility testing | |
| echo "Building accessibility test applications..." | |
| - name: Run accessibility tests | |
| run: | | |
| # This would run axe-core and other accessibility tests | |
| echo "Running accessibility compliance tests..." | |
| - name: Generate accessibility report | |
| run: | | |
| echo "Generating accessibility compliance report..." |