Skip to content

GitHub Actions

Add your API key as a repository secret:

  1. Go to Settings → Secrets and variables → Actions
  2. Click New repository secret
  3. Name: INBOXICAL_API_KEY, Value: ixk_live_...
.github/workflows/test.yml
name: Test
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm test
env:
INBOXICAL_API_KEY: ${{ secrets.INBOXICAL_API_KEY }}

Run your test suite in parallel shards — each job gets its own inboxes, no interference:

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npx jest --shard=${{ matrix.shard }}/4
env:
INBOXICAL_API_KEY: ${{ secrets.INBOXICAL_API_KEY }}
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npx playwright install --with-deps chromium
- run: npm run build && npm start &
name: Start app
- run: npx playwright test
env:
INBOXICAL_API_KEY: ${{ secrets.INBOXICAL_API_KEY }}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report
path: playwright-report/
  • Never log INBOXICAL_API_KEY in CI output
  • Use if: always() on cleanup steps to delete inboxes even when tests fail
  • Consider a separate INBOXICAL_API_KEY_CI key for CI so you can revoke it independently