Doctor E2E
ggnomad-doctor is the backend end-to-end test suite for the GGNomad
product. It exercises the wspace-ggnomad-svc GraphQL surface through the
workspaces public gateway.
What is covered
- Schema reachability via
ggnomadOverviewStats - CRUD for core travel inventory
ggnomadProviders/createGgnomadProviderggnomadProperties/createGgnomadPropertyggnomadTours/createGgnomadTourggnomadEvents/createGgnomadEventggnomadActivities/createGgnomadActivityggnomadTrips(read-only list)
- Lifecycle stories
- Booking lifecycle: provider → property → booking → cancel
- Favorite lifecycle: property → toggle on/off/on → verify
- Trip-plan itinerary lifecycle: create plan → add tour item → read plan → update travelers → delete plan → verify removal
- Analytics & insights
ggnomadAnalyticsandggnomadOverviewStats
- Pagination
- All list queries with
pagination: {first: 50}
- All list queries with
Environment selection
The suite defaults to production. Select the target with GGNOMAD_TARGET,
or override the endpoint directly.
| Target | Default endpoint |
|---|---|
| local | http://localhost:4003/workspaces/graphql |
| alpha | https://alphagraphqlworkspaces.burdenoff.com/workspaces/graphql |
| prod | https://graphqlworkspaces.burdenoff.com/workspaces/graphql |
Resolution order (highest priority first):
GGNOMAD_ENDPOINTE2E_WSPACE_PUBLIC_GATEWAY- Canonical URL for
GGNOMAD_TARGET
Auth / workspace context
- Local runs: the root
Makefilesources shared E2E env and refreshes tokens automatically. - Alpha / prod runs (manual/local): provide credentials via environment
variables. The suite reads
AUTH_TOKEN,WORKSPACE_TOKEN,WORKSPACE_ID, andUSER_IDdirectly, falling back to theE2E_*variants if present. - Alpha / prod runs (CI):
.github/workflows/doctor-ci.ymlsigns in fresh every run using repo secretsE2E_USER_EMAIL/E2E_USER_PASSWORD.
Alpha Cloudflare Access
Alpha hostnames are gated by Cloudflare Access. When targeting alpha, export the service-token headers:
export CF_ACCESS_CLIENT_ID="<alpha-doctor-client-id>"
export CF_ACCESS_CLIENT_SECRET="<alpha-doctor-client-secret>"
Run tests
cd ~/products/ggnomad/ggnomad-doctor
# Default: production (requires AUTH_TOKEN / WORKSPACE_TOKEN / WORKSPACE_ID)
make test
# Local stack (sources shared E2E env automatically)
GGNOMAD_TARGET=local make test
# Alpha (requires CF Access service-token headers)
GGNOMAD_TARGET=alpha \
AUTH_TOKEN=<jwt> WORKSPACE_TOKEN=<ws-jwt> WORKSPACE_ID=<ws-id> \
CF_ACCESS_CLIENT_ID=<id> CF_ACCESS_CLIENT_SECRET=<secret> \
make test
Available targets
make test # Smoke + trip-plan story
make test-all # Full suite
make test-smoke
make test-trip-plan
make test-schema
make test-provider
make test-property
make test-tour
make test-event
make test-activity
make test-booking
make test-payment
make test-favorite
make test-analytics
make test-pagination
Repository layout
.
├── Makefile # Root orchestration targets
├── README.md # This file
├── core/scripts/
│ ├── common.sh # Shared logging/request helpers
│ └── ggnomad-env.sh # Target env / auth resolution
└── wspace/modules/ggnomad/
├── Makefile # Per-module targets
├── README.md # Module-level docs
└── scripts/
├── story-trip-plan.sh # Trip-plan itinerary story
└── test-ggnomad.sh # Full CRUD/story/analytics/pagination suite
Notes
- Tests rely on shared E2E auth/workspace context for local runs.
- Test data uses timestamp + PID suffixes for idempotency.
- This repo does not start services; use the existing dev tooling in
/home/ubuntu/products/dev/to manage the local stack.