name: real-verification on: push: branches: [main] pull_request: workflow_dispatch: permissions: contents: read # These jobs deliberately use the CAD self-hosted runner. The runner image must # contain Chrome, CMake/Ninja, Emscripten, and the pinned CAMotics/OpenCAMLib/ # LinuxCNC worktrees described in docs/ci-real-verification.zh-CN.md. jobs: chrome: runs-on: [self-hosted, linux, cad] timeout-minutes: 90 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22.23.2 cache: npm - run: ./npmw ci --ignore-scripts - name: Run real Chrome harnesses run: ./npmw run ci:real:chrome env: CHROME_BIN: ${{ vars.CHROME_BIN }} - name: Check generated Chrome reports run: ./npmw run ci:check:chrome env: CHROME_BIN: ${{ vars.CHROME_BIN }} - name: Run Firefox and WebKit matrix run: ./npmw run test:browser-matrix env: FIREFOX_BIN: ${{ vars.FIREFOX_BIN }} WEBKIT_BIN: ${{ vars.WEBKIT_BIN }} - name: Check Firefox and WebKit reports run: ./npmw run check:browser-matrix - name: Upload Chrome evidence if: always() uses: actions/upload-artifact@v4 with: name: chrome-real-verification-${{ github.run_id }} if-no-files-found: warn path: | .cache/ci/real-verification*.json config/chrome-*-verification.json config/browser-matrix-verification.json fixtures/chrome-app-e2e/*.png freecad-oracle: runs-on: [self-hosted, linux, cad] timeout-minutes: 180 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22.23.2 cache: npm - run: ./npmw ci --ignore-scripts - run: ./npmw run ci:real -- --lane=oracle env: FREECAD_ORACLE_PROFILE: desktop wasm: runs-on: [self-hosted, linux, cad] timeout-minutes: 120 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22.23.2 cache: npm - run: ./npmw ci --ignore-scripts - run: ./npmw run ci:real -- --lane=wasm env: CHROME_BIN: ${{ vars.CHROME_BIN }} EMSDK: ${{ vars.EMSDK }} OCCT_SOURCE_DIR: ${{ vars.OCCT_SOURCE_DIR }} CI_REAL_REBUILD_WASM: '1'