Skip to content

Add playwright profiling package #532

Add playwright profiling package

Add playwright profiling package #532

Workflow file for this run

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