name: Sharenet Passport CI on: [push, pull_request] jobs: test-native: runs-on: [ci] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable components: rust-src - name: Run native tests run: | cd libs/sharenet-passport cargo test --verbose test-wasm-headless: runs-on: [ci] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable target: wasm32-unknown-unknown components: rust-src - name: Install wasm-pack run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Install Firefox and geckodriver run: | # Install Firefox apt-get install -y firefox-esr # Install geckodriver GECKODRIVER_VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep tag_name | cut -d '"' -f 4) wget -q "https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz" tar -xzf geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz mv geckodriver /usr/local/bin/ chmod +x /usr/local/bin/geckodriver - name: Run WASM headless tests run: | cd libs/sharenet-passport wasm-pack test --headless --chrome --firefox --node test-wasm-webdriver: runs-on: [ci] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable target: wasm32-unknown-unknown components: rust-src - name: Install wasm-pack run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Install browsers and drivers run: | # Install Chrome wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list apt-get update apt-get install -y google-chrome-stable # Install ChromeDriver CHROME_VERSION=$(google-chrome --version | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+') CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION%.*}") wget -q "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip" unzip chromedriver_linux64.zip mv chromedriver /usr/local/bin/ chmod +x /usr/local/bin/chromedriver # Install Firefox apt-get install -y firefox-esr # Install geckodriver GECKODRIVER_VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep tag_name | cut -d '"' -f 4) wget -q "https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz" tar -xzf geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz mv geckodriver /usr/local/bin/ chmod +x /usr/local/bin/geckodriver - name: Run WASM WebDriver tests run: | cd libs/sharenet-passport # Build WASM package for testing wasm-pack build --target web --out-dir pkg # Run WebDriver tests (placeholder - implement actual WebDriver tests) echo "WebDriver tests would run here with Selenium/WebDriver" build-wasm: runs-on: [ci] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable target: wasm32-unknown-unknown components: rust-src - name: Install wasm-pack run: | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Build WASM package run: | cd libs/sharenet-passport wasm-pack build --target web --out-dir pkg - name: Verify WASM build run: | cd libs/sharenet-passport/pkg ls -la file sharenet_passport_bg.wasm lint: runs-on: [ci] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable components: clippy, rustfmt - name: Run clippy run: | cd libs/sharenet-passport cargo clippy -- -D warnings - name: Run rustfmt run: | cd libs/sharenet-passport cargo fmt -- --check