Files
leptos-shadcn-ui/.github/workflows/test-tooltip.yml

305 lines
7.8 KiB
YAML

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
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..."