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@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - 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@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 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@8caf195ad4b1dee92908e23f56eeb0696f1dd42d # v4.1.5 with: name: puppeteer-build - name: Set up Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version-file: '.nvmrc' - 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: | puppeteer_pkgs=(../puppeteer-*.tgz) tar -xf ${puppeteer_pkgs[1]} --strip-components 1 -C node_modules/@puppeteer/browsers tar -xf ${puppeteer_pkgs[2]} --strip-components 1 -C node_modules/puppeteer-core - 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