Files
suaveplan/e2e/foundation-stack-saga/package.json
2026-05-27 23:29:53 +01:00

43 lines
2.2 KiB
JSON

{
"name": "@suaveplan/e2e-foundation-stack-saga",
"version": "0.1.0",
"private": true,
"description": "Stage-6 closure smoke for the Suaveplan API plugin foundation. Boots a `createTestHost`-backed Bun.serve listener that hosts a 3-step compensable saga split across two plugins (plugin-a/step-1, plugin-b/step-2, plugin-a/step-3) and an `api-2pc` coordinator wired to two participants on a real Postgres testcontainer (`max_prepared_transactions=8`). Playwright specs drive the happy path, force a mid-saga failure to exercise reverse-order compensation, run a 2PC commit + abort + recovery cycle, and assert on the saga ledger row, the persisted step rows, the event sequence, and `pg_prepared_xacts` cleanliness after every round.",
"type": "module",
"scripts": {
"dev": "bun run src/server.ts",
"test:e2e": "playwright test",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@suaveplan/api-2pc": "workspace:^",
"@suaveplan/api-auth": "workspace:^",
"@suaveplan/api-auth-anonymous": "workspace:^",
"@suaveplan/api-auth-static-principal": "workspace:^",
"@suaveplan/api-db-sqlite-memory": "workspace:^",
"@suaveplan/api-events-in-memory": "workspace:^",
"@suaveplan/api-host": "workspace:^",
"@suaveplan/api-router-in-memory": "workspace:^",
"@suaveplan/api-saga": "workspace:^",
"@suaveplan/api-secrets-env": "workspace:^",
"@suaveplan/api-tenant-provider": "workspace:^",
"@suaveplan/api-tenant-provider-memory": "workspace:^",
"@suaveplan/api-types": "workspace:^",
"@suaveplan/events": "workspace:^",
"@suaveplan/idempotency": "workspace:^",
"@suaveplan/testing-integration-postgres": "workspace:^",
"postgres": "catalog:database",
"testcontainers": "catalog:containers"
},
"devDependencies": {
"@suaveplan/testing-e2e": "workspace:^",
"@suaveplan/testing-integration": "workspace:^",
"@suaveplan/typescript-config": "workspace:^",
"@playwright/test": "catalog:testing",
"@types/bun": "catalog:",
"@types/node": "catalog:",
"bun-types": "catalog:",
"typescript": "catalog:"
}
}