Add playwright profiling package #532
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CodSpeed | |
| on: | |
| push: | |
| branches: | |
| - "main" | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| codspeed-instrumented: | |
| name: Run CodSpeed instrumented (${{ matrix.plugin }}) | |
| runs-on: "ubuntu-latest" | |
| strategy: | |
| fail-fast: false | |
| # Shard by plugin so the benchmark groups run in parallel instead of | |
| # sequentially. CodSpeed aggregates the per-shard uploads on the commit. | |
| matrix: | |
| include: | |
| - plugin: tinybench | |
| bench: | | |
| pnpm turbo run bench --filter=@codspeed/tinybench-plugin | |
| pnpm --workspace-concurrency 1 -r bench-tinybench | |
| - plugin: vitest | |
| bench: | | |
| pnpm turbo run bench --filter=@codspeed/vitest-plugin | |
| pnpm --workspace-concurrency 1 -r bench-vitest | |
| - plugin: benchmark.js | |
| bench: | | |
| pnpm turbo run bench --filter=@codspeed/benchmark.js-plugin | |
| pnpm --workspace-concurrency 1 -r bench-benchmark-js | |
| steps: | |
| - uses: "actions/checkout@v4" | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - uses: pnpm/action-setup@v2 | |
| - uses: actions/setup-node@v3 | |
| with: | |
| cache: pnpm | |
| node-version-file: .nvmrc | |
| - name: Restore turbo cache | |
| uses: ./.github/actions/turbo-cache | |
| with: | |
| key-suffix: ${{ matrix.plugin }} | |
| - run: pnpm install --frozen-lockfile --prefer-offline | |
| - run: pnpm turbo run build | |
| - name: Run simulation benchmarks | |
| uses: CodSpeedHQ/action@main | |
| with: | |
| mode: simulation | |
| run: ${{ matrix.bench }} | |
| - name: Run memory benchmarks | |
| uses: CodSpeedHQ/action@main | |
| with: | |
| mode: memory | |
| run: ${{ matrix.bench }} | |
| codspeed-walltime: | |
| name: Run CodSpeed walltime | |
| runs-on: "codspeed-macro" | |
| steps: | |
| - uses: "actions/checkout@v4" | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - uses: pnpm/action-setup@v2 | |
| - uses: actions/setup-node@v3 | |
| with: | |
| cache: pnpm | |
| node-version-file: .nvmrc | |
| - name: Restore turbo cache | |
| uses: ./.github/actions/turbo-cache | |
| - run: pnpm install --frozen-lockfile --prefer-offline | |
| - run: pnpm turbo run build | |
| - name: Run benchmarks | |
| # use version from `main` branch to always test the latest version, in real projects, use a tag, like `@v2` | |
| uses: CodSpeedHQ/action@main | |
| with: | |
| mode: walltime | |
| run: | | |
| pnpm turbo run bench --filter=@codspeed/tinybench-plugin | |
| pnpm turbo run bench --filter=@codspeed/vitest-plugin | |
| pnpm turbo run bench --filter=@codspeed/benchmark.js-plugin | |
| pnpm --workspace-concurrency 1 -r bench-tinybench | |
| pnpm --workspace-concurrency 1 -r bench-vitest | |
| electron-e2e: | |
| name: Run electron inbox e2e | |
| runs-on: codspeed-macro | |
| permissions: | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Set up pnpm | |
| uses: pnpm/action-setup@v4 | |
| # The example links @codspeed/playwright-plugin to packages/playwright-plugin via the | |
| # `link:` protocol, so the in-repo plugin must be built (under the repo's | |
| # own Node version) before the example installs and resolves the symlink. | |
| - name: Set up Node.js (repo) | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - name: Restore turbo cache | |
| uses: ./.github/actions/turbo-cache | |
| - name: Install repo dependencies | |
| run: pnpm install --frozen-lockfile --prefer-offline | |
| - name: Build @codspeed/playwright-plugin | |
| run: pnpm turbo run build --filter=@codspeed/playwright-plugin | |
| - name: Set up Node.js (example) | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: examples/with-electron-and-walltime/package.json | |
| cache: pnpm | |
| cache-dependency-path: examples/with-electron-and-walltime/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: examples/with-electron-and-walltime | |
| run: pnpm install --frozen-lockfile | |
| - name: Build electron app | |
| working-directory: examples/with-electron-and-walltime | |
| run: pnpm --filter @mail-client-demo/electron build | |
| - name: Install Playwright browsers | |
| working-directory: examples/with-electron-and-walltime | |
| run: pnpm --filter @mail-client-demo/electron exec playwright install --with-deps chromium | |
| - name: Run electron inbox e2e under codspeed | |
| uses: CodSpeedHQ/action@runner-alpha | |
| env: | |
| CODSPEED_WALLTIME_PROFILER: "samply" | |
| with: | |
| working-directory: examples/with-electron-and-walltime | |
| run: xvfb-run -a pnpm bench:electron | |
| mode: walltime | |
| runner-version: 4.16.2-alpha.2 |