gn-integration-tests
Integration and end-to-end tests for the GeneNetwork stack (gn2, gn3, gn-auth).
Tests run against a live deployment (CD or production) — no mocking, no local stack required for the smoke suite.
Quick start
pip install -e . # or: pip install requests pytest
pytest -m "smoke" # run all smoke tests (no credentials needed)
By default tests target CD (cd.genenetwork.org / auth-cd.genenetwork.org).
Override with environment variables:
| Variable | Default | Description |
|---|---|---|
GN2_BASE_URL |
https://cd.genenetwork.org |
genenetwork2 root |
GN3_BASE_URL |
https://cd.genenetwork.org/api3 |
gn3 API proxy path |
GN_AUTH_BASE_URL |
https://auth-cd.genenetwork.org |
gn-auth server |
To target production:
GN2_BASE_URL=https://genenetwork.org \
GN3_BASE_URL=https://genenetwork.org/api3 \
GN_AUTH_BASE_URL=https://auth.genenetwork.org \
pytest -m "smoke"
The three variables work for any deployment — CD, production, or a personal/feature instance. To run against an arbitrary stack, just point the variables at it:
GN2_BASE_URL=https://gn2-fred.genenetwork.org \
GN3_BASE_URL=https://gn2-fred.genenetwork.org/api3 \
GN_AUTH_BASE_URL=https://gn2-fred-auth.genenetwork.org \
pytest -m "smoke"
No test-code changes are needed — all URL configuration lives in conftest.py.
Test marks
| Mark | Description |
|---|---|
smoke |
Public endpoints, no credentials, fast |
gn2 |
Tests targeting genenetwork2 |
gn3 |
Tests targeting the gn3 REST API |
gn_auth |
Tests targeting gn-auth |
auth_flow |
Requires valid test-user credentials (see below) |
Run a specific service:
pytest -m "gn_auth and smoke"
pytest -m "gn3 and smoke"
pytest -m "gn2 and smoke"
Auth-flow tests (Phase 2)
Set the following environment variables to enable credential-backed tests:
export GN_TEST_EMAIL=testuser@example.com
export GN_TEST_PASSWORD=secret
export GN_OAUTH2_CLIENT_ID=<uuid>
export GN_OAUTH2_CLIENT_SECRET=<secret>
pytest -m "auth_flow"
Without these variables the auth_flow tests are automatically skipped.
CI integration (planned)
Each component repo's CI triggers only its relevant mark after a successful per-repo build:
- genenetwork2 CI →
pytest -m gn2 - genenetwork3 CI →
pytest -m gn3 - gn-auth CI →
pytest -m gn_auth
Target: cd.genenetwork.org before merges; nightly against production.
URL structure notes
nginx on the deployment host rewrites /api3/<path> → /api/<path> before
proxying to gn3, and gn-auth lives on a separate subdomain:
https://cd.genenetwork.org/ → gn2
https://cd.genenetwork.org/api3/ → gn3 (/api3/foo → gn3's /api/foo)
https://auth-cd.genenetwork.org/ → gn-auth
https://genenetwork.org/ → gn2 (production)
https://genenetwork.org/api3/ → gn3 (production)
https://auth.genenetwork.org/ → gn-auth (production)
