drission 0.1.1

Rust 浏览器自动化库:反检测(Camoufox/Firefox)+ 内置验证码 OCR 与图片滑块缺口距离识别 + 高并发爬虫 / XHR 监听拦截 / 自动过盾,DrissionPage 风格 API。Browser automation in Rust with anti-detect, built-in captcha OCR and slider-gap solving, async high-concurrency crawling.
name: CI

on:
  push:
    branches: [main, master]
  pull_request:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  fmt:
    name: rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --all --check

  clippy:
    name: clippy (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: Swatinem/rust-cache@v2
      # slider 零额外依赖、cdp 仅 Chromium 后端代码;两者一起检查覆盖更广。
      - run: cargo clippy --all-targets --features slider,cdp -- -D warnings

  test:
    name: test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      # 单测 + 离线集成测试(tests/);不跑需要浏览器/网络的 example。
      - run: cargo test --features slider,cdp --lib --tests

  ocr:
    name: build+test (ocr feature)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      # OCR 引入 tract/image 重依赖,单独一档;只跑不需要下载模型的纯单测。
      - run: cargo test --features ocr --lib

  cross-windows-gnu:
    name: cross-check (x86_64-pc-windows-gnu)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: x86_64-pc-windows-gnu
      - uses: Swatinem/rust-cache@v2
      - run: cargo check --target x86_64-pc-windows-gnu --features slider,cdp

  docs:
    name: docs.rs build
    runs-on: ubuntu-latest
    env:
      # 与 docs.rs 一致:nightly + --cfg docsrs,启用 doc_auto_cfg 的 feature 徽标。
      RUSTDOCFLAGS: --cfg docsrs
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
      - uses: Swatinem/rust-cache@v2
      - run: cargo doc --no-deps --all-features