Skip to content
Latchkey

browsers-quick workflow (qunitjs/qunit)

The browsers-quick workflow from qunitjs/qunit, explained and optimized by Latchkey.

D

CI health: D - needs work

Point runs-on at Latchkey and get caching, run de-duplication, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: qunitjs/qunit.github/workflows/browsers-quick.yamlLicense MITView source

What it does

This is the browsers-quick workflow from the qunitjs/qunit repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: browsers-quick
on:
  - push

jobs:
  run:
    name: BrowserStack
    if: ${{ github.repository == 'qunitjs/qunit' }} # skip on forks, needs secret
    runs-on: ubuntu-latest
    env:
      PUPPETEER_CACHE_DIR: "${{ github.workspace }}/.puppeteer_download"
    steps:
      - uses: actions/checkout@v6

      - uses: actions/cache@v5
        with:
          path: |
            ~/.npm
            ${{ github.workspace }}/.puppeteer_download
          key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}

      - name: Use Node.js 18
        uses: actions/setup-node@v6
        with:
          node-version: 18.x

      - name: Prepare
        run: |
          npm install
          npm run build

      # To debug locally:
      #
      # ```
      # $ export BROWSERSTACK_USERNAME="***"
      # $ export BROWSERSTACK_KEY="***"
      # $ BROWSERSTACK_JSON=build/browserstack-debug.json npm run browserstack
      # ```
      - name: Tests
        run: npm run browserstack
        env:
          BROWSERSTACK_JSON: build/browserstack-quick.json
          BROWSERSTACK_USERNAME: "${{ secrets.BROWSERSTACK_USERNAME }}"
          BROWSERSTACK_KEY: "${{ secrets.BROWSERSTACK_KEY }}"
          # Set "project" metadata
          TRAVIS_REPO_SLUG: "${{ github.repository }} ${{ github.event_name}}"
          # Set "commit" metadata
          TRAVIS_COMMIT: "quick ${{ github.ref }} ${{ github.sha }}"
          TUNNEL_ID: "${{ github.event_name }}-quick-${{ github.sha }}"

The same workflow, on Latchkey

Estimated ~20% faster on cache hits, plus fewer wasted runs and a safer supply chain. Added and changed lines are highlighted.

name: browsers-quick
on:
  - push
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  run:
    timeout-minutes: 30
    name: BrowserStack
    if: ${{ github.repository == 'qunitjs/qunit' }} # skip on forks, needs secret
    runs-on: latchkey-small
    env:
      PUPPETEER_CACHE_DIR: "${{ github.workspace }}/.puppeteer_download"
    steps:
      - uses: actions/checkout@v6
 
      - uses: actions/cache@v5
        with:
          path: |
            ~/.npm
            ${{ github.workspace }}/.puppeteer_download
          key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}
 
      - name: Use Node.js 18
        uses: actions/setup-node@v6
        with:
          cache: 'npm'
          node-version: 18.x
 
      - name: Prepare
        run: |
          npm install
          npm run build
 
      # To debug locally:
      #
      # ```
      # $ export BROWSERSTACK_USERNAME="***"
      # $ export BROWSERSTACK_KEY="***"
      # $ BROWSERSTACK_JSON=build/browserstack-debug.json npm run browserstack
      # ```
      - name: Tests
        run: npm run browserstack
        env:
          BROWSERSTACK_JSON: build/browserstack-quick.json
          BROWSERSTACK_USERNAME: "${{ secrets.BROWSERSTACK_USERNAME }}"
          BROWSERSTACK_KEY: "${{ secrets.BROWSERSTACK_KEY }}"
          # Set "project" metadata
          TRAVIS_REPO_SLUG: "${{ github.repository }} ${{ github.event_name}}"
          # Set "commit" metadata
          TRAVIS_COMMIT: "quick ${{ github.ref }} ${{ github.sha }}"
          TUNNEL_ID: "${{ github.event_name }}-quick-${{ github.sha }}"
 

What changed

What Latchkey heals here

This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow