Name a Ui, Area, Popup or Tooltip in the accessibility tree
#20524
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
| on: | |
| # Only on `main`, so that a PR from a branch in this repo | |
| # doesn't run the whole workflow twice (once for the push, once for the PR): | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| name: Rust | |
| env: | |
| RUSTFLAGS: -D warnings | |
| RUSTDOCFLAGS: -D warnings | |
| NIGHTLY_VERSION: nightly-2026-04-02 | |
| jobs: | |
| fmt-crank-check-test: | |
| name: Format + check | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: 1.95.0 | |
| - name: Install packages (Linux) | |
| if: runner.os == 'Linux' | |
| uses: awalsh128/cache-apt-pkgs-action@v1.4.3 | |
| with: | |
| packages: libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev libgtk-3-dev # libgtk-3-dev is used by rfd | |
| version: 1.0 | |
| execute_install_scripts: true | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| - name: Rustfmt | |
| run: cargo fmt --all -- --check | |
| - name: Lint vertical spacing | |
| run: ./scripts/lint.py | |
| - run: cargo clippy --locked --all-features --all-targets | |
| - run: cargo clippy --locked --all-features -p egui_extras | |
| - run: cargo clippy --locked --all-targets | |
| - run: cargo clippy --locked --no-default-features --lib --all-targets | |
| - run: cargo clippy --locked --no-default-features --lib -p eframe --features x11 | |
| - run: cargo clippy --locked --no-default-features --lib -p eframe --features x11,wgpu_no_default_features | |
| - run: cargo clippy --locked --no-default-features --lib -p egui_extras | |
| - run: cargo clippy --locked --no-default-features --lib -p epaint | |
| # Regression test for https://github.com/emilk/egui/issues/4771 | |
| - run: cargo clippy -p test_egui_extras_compilation | |
| - run: cargo doc --lib --no-deps --all-features | |
| - run: cargo doc --document-private-items --no-deps --all-features | |
| - name: clippy release | |
| run: cargo clippy --all-targets --all-features --release -- -D warnings | |
| # --------------------------------------------------------------------------- | |
| check_wasm: | |
| name: Check wasm32 + wasm-bindgen | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: 1.95.0 | |
| targets: wasm32-unknown-unknown | |
| - run: sudo apt-get update && sudo apt-get install libgtk-3-dev libatk1.0-dev | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| - name: clippy wasm32 egui_demo_app | |
| run: cargo clippy -p egui_demo_app --lib --target wasm32-unknown-unknown | |
| - name: clippy wasm32 egui_demo_app --all-features | |
| run: cargo clippy -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features | |
| - name: clippy wasm32 eframe | |
| run: cargo clippy -p eframe --lib --no-default-features --features wgpu,persistence --target wasm32-unknown-unknown | |
| # eframe only depends on egui-winit on native targets, so check it directly on wasm. | |
| - name: check wasm32 egui-winit | |
| run: cargo check -p egui-winit --no-default-features --target wasm32-unknown-unknown --locked | |
| - name: wasm-bindgen | |
| uses: jetli/wasm-bindgen-action@v0.1.0 | |
| with: | |
| version: "0.2.126" # Keep wasm-bindgen version in sync in: setup_web.sh, Cargo.toml, Cargo.lock, rust.yml | |
| - run: ./scripts/wasm_bindgen_check.sh --skip-setup | |
| - name: clippy wasm32 | |
| run: ./scripts/clippy_wasm.sh | |
| # requires a different toolchain from the other checks (nightly) | |
| check_wasm_atomics: | |
| name: Check wasm32+atomics | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: sudo apt-get update && sudo apt-get install libgtk-3-dev libatk1.0-dev | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: ${{env.NIGHTLY_VERSION}} | |
| targets: wasm32-unknown-unknown | |
| components: rust-src | |
| - name: Check wasm32+atomics eframe with wgpu | |
| run: RUSTFLAGS='-C target-feature=+atomics' cargo +${{env.NIGHTLY_VERSION}} check -p eframe --lib --no-default-features --features wgpu,wgpu/webgpu --target wasm32-unknown-unknown -Z build-std=std,panic_abort | |
| # --------------------------------------------------------------------------- | |
| cargo-deny: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: aarch64-apple-darwin | |
| - target: aarch64-linux-android | |
| - target: i686-pc-windows-gnu | |
| - target: i686-pc-windows-msvc | |
| - target: i686-unknown-linux-gnu | |
| - target: wasm32-unknown-unknown | |
| - target: x86_64-apple-darwin | |
| - target: x86_64-pc-windows-gnu | |
| - target: x86_64-pc-windows-msvc | |
| - target: x86_64-unknown-linux-gnu | |
| - target: x86_64-unknown-linux-musl | |
| - target: x86_64-unknown-redox | |
| name: cargo-deny ${{ matrix.target }} | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| rust-version: "1.95.0" | |
| log-level: error | |
| command: check | |
| arguments: --target ${{ matrix.target }} | |
| # --------------------------------------------------------------------------- | |
| android: | |
| name: android | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: 1.95.0 | |
| targets: aarch64-linux-android | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| # Default features disabled to turn off accesskit, which does not work | |
| # with NativeActivity. | |
| - run: cargo check --features wgpu,android-native-activity --target aarch64-linux-android --no-default-features | |
| working-directory: crates/eframe | |
| # --------------------------------------------------------------------------- | |
| ios: | |
| name: ios | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: 1.95.0 | |
| targets: aarch64-apple-ios | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| # Default features are disabled because glutin doesn't compile for ios. | |
| - run: cargo check --features wgpu --target aarch64-apple-ios --no-default-features | |
| working-directory: crates/eframe | |
| # --------------------------------------------------------------------------- | |
| windows: | |
| name: Check Windows | |
| runs-on: windows-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: 1.95.0 | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| - run: cargo clippy --all-targets --all-features | |
| - run: cargo clippy -p hello_world | |
| # --------------------------------------------------------------------------- | |
| tests: | |
| name: Run tests | |
| # We run the tests on macOS because it will run with an actual GPU | |
| runs-on: macos-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: 1.95.0 | |
| - name: Set up cargo cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Only `main` writes to the cache, so PR caches can't evict it (10 GB repository limit). | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| # `--no-fail-fast` so that a failing snapshot test in one crate doesn't | |
| # stop the tests of the other crates from running. | |
| # That way a single CI run reports _all_ failing snapshots, | |
| # and all the new snapshots end up in the uploaded artifact. | |
| - name: Run tests | |
| run: cargo test --all-features --no-fail-fast | |
| - name: Run doc-tests | |
| if: always() | |
| run: cargo test --all-features --doc --no-fail-fast | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results | |
| path: "**/tests/snapshots" |