name: DevTools CI # Declare default permissions as read only. permissions: read-all on: pull_request: types: [labeled] concurrency: group: devtools-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: build-puppeteer: name: Build Puppeteer runs-on: ubuntu-latest if: contains(github.event.label.name, 'devtools') steps: - name: Checkout uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Set up Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: npm node-version-file: '.nvmrc' - name: Install dependencies run: npm ci env: PUPPETEER_SKIP_DOWNLOAD: true - name: Build Puppeteer run: | npm run build -w @puppeteer/browsers npm run build -w puppeteer-core npm run build -w puppeteer - name: Pack Puppeteer run: | npm pack -w @puppeteer/browsers npm pack -w puppeteer-core npm pack -w puppeteer - name: Upload Puppeteer build uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: puppeteer-build if-no-files-found: error path: puppeteer-*.tgz devtools-tests: name: DevTools tests needs: build-puppeteer runs-on: ubuntu-latest steps: - name: Download Puppeteer build uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: puppeteer-build - name: Checkout depot_tools run: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git - name: Add depot_tools to path run: echo $(realpath depot_tools) >> $GITHUB_PATH - name: Fetch devtools-frontend run: fetch devtools-frontend - name: Sync gclient working-directory: devtools-frontend run: gclient sync - name: Install Puppeteer working-directory: devtools-frontend run: | npm install ../puppeteer-browsers*.tgz ../puppeteer-core*.tgz - name: Generate targets working-directory: devtools-frontend run: gn gen out/Default --args='devtools_skip_typecheck=true' - name: Run tests working-directory: devtools-frontend run: npm run auto-e2etest