Skip to content

Conversation

@serhii-workato
Copy link

Summary

Added a sandbox-only live test suite that mirrors integration workflows, split by domain for clarity, with shared helpers, safety guards, and documentation.

What’s included

  • New live test files:
    • tests/live/test_workspace_live.py
    • tests/live/test_projects_live.py
    • tests/live/test_recipes_live.py
    • tests/live/test_connections_live.py
    • tests/live/test_connectors_live.py
    • tests/live/test_profiles_live.py
  • Shared live helpers and fixtures:
    • tests/live/helpers.py (sandbox guard, project resolver, init helpers, cleanup)
    • tests/live/conftest.py (auto-close Workato client sessions)
  • Documentation:
    • tests/live/README.md with required env vars and flags
    • docs/DEVELOPER_GUIDE.md updated with live-test instructions

Safety / automation

  • Destructive actions are opt-in (push, recipe start/stop).
  • Project-creation test cleans up automatically; skips if token lacks permission.
  • Sandbox confirmation required via WORKATO_LIVE_SANDBOX=1 (unless host includes trial / preview / sandbox).

How to run

WORKATO_LIVE_SANDBOX=1 make test-live

Optional env vars:

  • WORKATO_TEST_PROJECT_ID or WORKATO_TEST_PROJECT_NAME
  • WORKATO_TEST_RECIPE_ID
  • WORKATO_TEST_CONNECTION_ID
  • WORKATO_TEST_PICKLIST_NAME
  • WORKATO_LIVE_ALLOW_PUSH=1
  • WORKATO_LIVE_ALLOW_RECIPE_CONTROL=1

@serhii-workato serhii-workato requested a review from hovu96 January 28, 2026 16:42
@serhii-workato serhii-workato self-assigned this Jan 28, 2026
@github-actions
Copy link

Coverage

Coverage Report
FileStmtsMissCoverMissing
__init__.py68494%10–11, 69–70
cli
   __init__.py52394%49, 51, 60
   containers.py270100% 
cli/commands
   __init__.py00100% 
   api_clients.py291996%27, 302, 448–449, 483, 493, 584, 615, 623
   api_collections.py257398%28, 183, 347
   assets.py47295%57–58
   connections.py526599%591, 593, 599, 637, 988
   data_tables.py165596%31, 253, 267, 321–322
   guide.py166199%106
   init.py1070100% 
   profiles.py2310100% 
   properties.py97198%21
   pull.py172298%193–194
   workspace.py39294%61, 71
cli/commands/connectors
   __init__.py00100% 
   command.py90297%110, 159
   connector_manager.py203498%176, 292, 300–301
cli/commands/projects
   __init__.py00100% 
   command.py2721096%359–362, 373, 439–441, 491, 495
   project_manager.py166795%48, 66, 263–264, 276, 317, 325
cli/commands/push
   __init__.py00100% 
   command.py133496%109, 112, 230, 308
cli/commands/recipes
   __init__.py00100% 
   command.py427997%117, 133–134, 272–275, 403, 709
   validator.py7062097%174, 883, 1136, 1223, 1246, 1279, 1281–1282, 1359–1361, 1457–1458, 1517–1518, 1707–1708, 1736–1738
cli/utils
   __init__.py40100% 
   exception_handler.py3453390%134–135, 140–141, 143–144, 174–175, 181, 184–185, 270, 300, 333–337, 371, 398, 425, 482, 517, 576, 578–579, 584–585, 587–591
   gitignore.py140100% 
   ignore_patterns.py230100% 
   spinner.py430100% 
   token_input.py451762%70, 98, 100, 102–104, 107, 124, 127–128, 132–133, 136, 139–140, 142, 144
   version_checker.py135695%24, 26, 33–34, 72, 102
cli/utils/config
   __init__.py50100% 
   manager.py5313393%127, 138, 149, 157–159, 162, 165, 177, 227–228, 399, 417, 421, 424–427, 443, 464, 478, 491, 533, 623–624, 661, 875, 1018–1019, 1033–1034, 1090, 1149
   models.py330100% 
   profiles.py3341595%99, 195–196, 199, 234–236, 261–263, 522, 530, 541–542, 546
   workspace.py680100% 
TOTAL582219796% 

host = os.getenv("WORKATO_HOST", "").lower()
if os.getenv("WORKATO_LIVE_SANDBOX", "").lower() in {"1", "true", "yes"}:
return
if any(token in host for token in ("trial", "preview", "sandbox")):
Copy link
Author

@serhii-workato serhii-workato Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hovu96 What do you think - should we parse WORKATO_HOST more explicitly to classify the environment? Right now I decide to add as an example checking substrings (trial, preview, sandbox). We also have URLs like https://app-.devenv.awstf.workato.com which won’t match. Should we allow a regex/whitelist for those, or require WORKATO_LIVE_SANDBOX=1 for any non‑standard host/define type of test running?

Context: How should we define/standardize environment identification for live test runs?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants