From jmchilton
Run Galaxy backend tests (API, integration, framework, framework-workflows) with auto-started test server
How this skill is triggered — by the user, by Claude, or both
Slash command
/jmchilton:galaxy-backend-testsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run Galaxy backend tests. Unlike playwright/selenium tests, these don't need a pre-running server - the test harness starts one automatically.
Run Galaxy backend tests. Unlike playwright/selenium tests, these don't need a pre-running server - the test harness starts one automatically.
/galaxy-backend-tests <test_type> [test_path] [extra_args...]
Test types:
-api - API tests in lib/galaxy_test/api-integration - Integration tests in test/integration-framework - Framework tool tests in test/functional/tools-framework-workflows - Workflow evaluation tests-cwl - CWL conformance API testsExamples:
/galaxy-backend-tests -api - run all API tests/galaxy-backend-tests -api lib/galaxy_test/api/test_tools.py::TestToolsApi::test_map_over_with_output_format_actions - specific API test/galaxy-backend-tests -integration test/integration/test_vault.py - specific integration test/galaxy-backend-tests -framework -id collection_paired - framework test by tool id/galaxy-backend-tests -framework-workflows -id test_subworkflow_simple - single workflow framework testBefore running tests, verify:
Virtualenv exists at .venv/
test -d .venv && echo "EXISTS" || echo "MISSING"/galaxy-bootstrap skill to set it upGalaxy root detection
run_tests.sh and lib/galaxy_test/)test -f run_tests.sh && test -d lib/galaxy_test && echo "OK" || echo "NOT GALAXY ROOT"GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false \
GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=true \
GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true \
./run_tests.sh $ARGUMENTS
The $ARGUMENTS is the full argument string from the user (e.g., -api lib/galaxy_test/api/test_tools.py::TestToolsApi).
Default environment variables — always set these unless the user explicitly asks for a default configuration without them:
GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false — prevents unnecessary Conda download/install (see Conda Exception)GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=true — enables beta workflow modules for broader test coverageGALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true — enables beta tool formats for broader test coveragerun_tests.sh handles:
common_startup.sh (deps, client build skip)GALAXY_TEST_TOOL_CONF appropriately per test typeFor API tests:
source .venv/bin/activate
GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false \
GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=true \
GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true \
GALAXY_TEST_TOOL_CONF="lib/galaxy/config/sample/tool_conf.xml.sample,test/functional/tools/sample_tool_conf.xml" \
pytest lib/galaxy_test/api/$TEST_PATH -v --tb=short
For integration tests:
source .venv/bin/activate
GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false \
GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=true \
GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true \
GALAXY_TEST_TOOL_CONF="lib/galaxy/config/sample/tool_conf.xml.sample,test/functional/tools/sample_tool_conf.xml" \
pytest test/integration/$TEST_PATH -v --tb=short
For framework tests:
source .venv/bin/activate
GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false \
GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=true \
GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true \
GALAXY_TEST_TOOL_CONF="test/functional/tools/sample_tool_conf.xml" \
pytest test/functional/test_toolbox_pytest.py -k $TOOL_ID -m tool -v --tb=short
For framework workflow tests:
source .venv/bin/activate
GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false \
GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=true \
GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true \
pytest lib/galaxy_test/workflow/test_framework_workflows.py -k $WORKFLOW_ID -m workflow -v --tb=short
Note: When using pytest directly, a new Galaxy instance is created per test class (run_tests.sh optimizes to share one instance).
These can be appended as extra arguments:
| Option | Effect |
|---|---|
--skip-common-startup | Skip common_startup.sh if already run recently |
--skip-venv | Don't create/activate .venv |
--no_cleanup | Keep temp files after tests |
--verbose_errors | More verbose error reporting |
--debug | Drop into pdb on failure |
--skip_flakey_fails | Skip tests annotated @flakey on error |
| Variable | Purpose |
|---|---|
GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT | Set false (default for this skill). Only omit for conda resolver tests |
GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES | Set true (default for this skill). Enables beta workflow modules |
GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS | Set true (default for this skill). Enables beta tool formats |
GALAXY_TEST_DBURI | Database connection string (default: temp sqlite) |
GALAXY_TEST_NO_CLEANUP | Keep test directories after run |
GALAXY_TEST_VERBOSE_ERRORS | Verbose error output |
GALAXY_TEST_DEFAULT_WAIT | Max wait for tool test (default 86400s) |
GALAXY_TEST_FILE_DIR | Test data sources |
GALAXY_TEST_JOB_CONFIG_FILE | Custom job config for test |
GALAXY_TEST_HOST | Host for test Galaxy server |
GALAXY_TEST_PORT | Port for test Galaxy server |
GALAXY_TEST_SKIP_FLAKEY_TESTS_ON_ERROR | Skip flakey tests on error |
run_tests.sh).venv exists, if not run /galaxy-bootstrapGALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false (omit only for conda resolver tests — see Conda Exception)GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=trueGALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS=true./run_tests.sh with the provided arguments| Type | Directory |
|---|---|
| API | lib/galaxy_test/api/ |
| CWL | lib/galaxy_test/api/cwl/ |
| Integration | test/integration/ |
| Framework tools | test/functional/tools/ (config), test/functional/test_toolbox_pytest.py (runner) |
| Framework workflows | lib/galaxy_test/workflow/test_framework_workflows.py |
By default, always set GALAXY_CONFIG_OVERRIDE_CONDA_AUTO_INIT=false. Galaxy defaults conda_auto_init=true when running from source, which triggers automatic Conda download/install — wasted time for tests that don't exercise conda.
Only omit this override (allowing conda auto-init) for tests that specifically exercise conda dependency resolution:
test/integration/test_resolvers.pytest/integration/test_container_resolvers.pyIf unsure whether a test needs conda, set it to false — tests that genuinely need it will have conda_auto_init = True in their class-level Galaxy config overrides.
--skip-common-startup to save time if you've run tests recently and deps haven't changed-framework -id <tool_id>GALAXY_TEST_USE_HIERARCHICAL_OBJECT_STORE=True by default via run_tests.shnpx claudepluginhub jmchilton/claude-jmchilton-plugins --plugin jmchiltonDiscovers and executes 8,000+ bioinformatics tools from usegalaxy.org via natural language. Recommends Galaxy tools, suggests workflows, and chains Galaxy + local tools across pipelines.
Tests backend APIs with vitest/jest, go test, pytest, cargo test; verifies endpoints, DB changes, errors, collects evidence. Prohibits curl; mandates pre-completion verification.
Sets up GitHub Actions CI/CD for Gamma tests in Node.js projects with Vitest. Includes workflow YAML, npm scripts, Vitest config, and PR mocking.