name: ToT CI # Checks Puppeteer against the latest ToT build of Chromium. # Declare default permissions as read only. permissions: read-all on: workflow_dispatch: schedule: # * is a special character in YAML so you have to quote this string # Supposed to be every day at 8 am (UTC). - cron: '0 8 * * *' # TODO: how to make install & build steps re-usable accross jobs. # Currently, the install step is duplicated but should be the same for all jobs. jobs: linux-headless: # https://github.com/actions/virtual-environments#available-environments runs-on: ubuntu-latest strategy: matrix: node: [16] steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 2 - name: Set up Node.js uses: actions/setup-node@v3.3.0 with: node-version: ${{ matrix.node }} - name: Install dependencies and build run: | sudo apt-get install xvfb # Ensure both a Chromium and a Firefox binary are available. PUPPETEER_PRODUCT=firefox npm install npm install ls .local-chromium .local-firefox REV=$(node utils/check_availability.js -p linux) echo "Installing revision $REV" cat src/revisions.ts | sed "s/[0-9]\{6,\}/$REV/" > src/revisions.ts.replaced mv src/revisions.ts.replaced src/revisions.ts npm run build npm install - name: Run unit tests in headless uses: nick-invision/retry@v2 env: CHROMIUM: true HEADLESS: true with: command: xvfb-run --auto-servernum npm run test:unit timeout_minutes: 10 max_attempts: 3 linux-headful: # https://github.com/actions/virtual-environments#available-environments runs-on: ubuntu-latest strategy: matrix: node: [16] steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 2 - name: Set up Node.js uses: actions/setup-node@v3.3.0 with: node-version: ${{ matrix.node }} - name: Install dependencies and build run: | sudo apt-get install xvfb # Ensure both a Chromium and a Firefox binary are available. PUPPETEER_PRODUCT=firefox npm install npm install ls .local-chromium .local-firefox REV=$(node utils/check_availability.js -p linux) echo "Installing revision $REV" cat src/revisions.ts | sed "s/[0-9]\{6,\}/$REV/" > src/revisions.ts.replaced mv src/revisions.ts.replaced src/revisions.ts npm run build npm install - name: Run unit tests in headful uses: nick-invision/retry@v2 env: CHROMIUM: true HEADLESS: false with: command: xvfb-run --auto-servernum npm run test:unit timeout_minutes: 10 max_attempts: 3 linux-chrome-headless: # https://github.com/actions/virtual-environments#available-environments runs-on: ubuntu-latest strategy: matrix: node: [16] steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 2 - name: Set up Node.js uses: actions/setup-node@v3.3.0 with: node-version: ${{ matrix.node }} - name: Install dependencies and build run: | sudo apt-get install xvfb # Ensure both a Chromium and a Firefox binary are available. PUPPETEER_PRODUCT=firefox npm install npm install ls .local-chromium .local-firefox REV=$(node utils/check_availability.js -p linux) echo "Installing revision $REV" cat src/revisions.ts | sed "s/[0-9]\{6,\}/$REV/" > src/revisions.ts.replaced mv src/revisions.ts.replaced src/revisions.ts npm run build npm install - name: Run unit tests in chrome headless uses: nick-invision/retry@v2 env: CHROMIUM: true with: command: xvfb-run --auto-servernum npm run test:unit:chrome-headless timeout_minutes: 10 max_attempts: 3