cross-bdd
v0.2.0
Published
Cross-runtime `describe`/`it` for Bun, Deno, and Node.js test runners.
Maintainers
Readme
cross-bdd
Cross-runtime testing helpers that map to the native test runners in Bun, Deno, and Node.js so your specs can stay portable.
Why?
Every runtime ships its own standard library test runner with slightly different semantics. cross-bdd gives you a single describe/it pair that forwards to the familiar primitives in each environment, letting you share the same test suite without wrapping everything yourself.
Installation
npm add -D cross-bdd
# or
pnpm add -D cross-bdd
# or
yarn add -D cross-bdd
# or
bun add -d cross-bdd
# or
deno add npm:cross-bddUsage
// foo.test.ts
import { describe, it } from 'cross-bdd'
describe('math', () => {
it('adds numbers', () => {
const result = 2 + 2
if (result !== 4) {
throw new Error('Expected 4')
}
})
it('supports async work', async () => {
await new Promise((resolve) => setTimeout(resolve, 10))
})
})Then run your tests with the native test runner for your runtime:
# Bun
bun test
# Deno
deno test
# Node.js
node --testNotes
Can be used with
@std/assertor@std/expectfor runtime-agnostic assertions.You can nest
describeblocks as needed. Asyncdescribebodies are supported.An opinionated reusable workflow is provided in the repo. To use it, create a workflow file in your own repo:
# .github/workflows/test.yaml name: Test on: push: branches: [main] pull_request: branches: [main] types: [opened, synchronize, reopened] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: uses: brc-dd/cross-bdd/.github/workflows/test.reusable.yaml@main with: deno_versions: stable # remove this line to skip Deno testing bun_versions: latest # remove this line to skip Bun testing node_versions: 20 22 24 # remove this line to skip Node.js testing
Credits
Takes inspiration from cross-org/test, cross-org/workflows, and @std/testing/bdd.
