Skip to content

Run Cloud-eligible tests in CI - #554

Merged
THardy98 merged 6 commits into
mainfrom
feat/cloud-testing-inventory
Aug 26, 2026
Merged

Run Cloud-eligible tests in CI#554
THardy98 merged 6 commits into
mainfrom
feat/cloud-testing-inventory

Conversation

@THardy98

Copy link
Copy Markdown
Contributor

What was changed

Cloud test eligibility is now explicit and queryable. Tests are eligible by default and can be excluded at the class or method level when they require local servers, require Cloud provisioning, or still need Cloud adaptation. A deterministic inventory reports every excluded test by reason, while the Cloud runner filters exclusions before Minitest setup.

Tests that create secondary clients now preserve envconfig-provided TLS, authentication, metadata, and client options. The ephemeral mTLS Cloud job runs the complete eligible suite instead of one smoke test and uploads its output after namespace cleanup.

For review, the commits separate metadata and inventory, classification-only annotations, environment adaptations, and CI activation.

Why?

A single smoke test cannot show which parts of the Ruby SDK suite work against Temporal Cloud. Runner-integrated metadata prevents a separate allowlist from drifting and leaves normal local CI exhaustive.

Checklist

  1. Closes N/A

  2. How was this tested:

    • Focused exclusion metadata tests: 6 runs, 21 assertions
    • Inventory loading without Minitest autorun: 558 methods discovered
    • Envconfig and credential-preservation tests: 47 runs, 227 assertions
    • bundle exec rake test:cloud TEST=test/cloud_test_exclusion_test.rb
    • bundle exec rake rubocop
    • bundle exec rake steep
    • actionlint .github/workflows/ci.yml
    • Full ephemeral mTLS Cloud suite in GitHub Actions (pending)
  3. Any docs updates needed?

    The README documents the Cloud inventory and runner commands. This is internal test and CI infrastructure, so no changelog entry is needed.

@THardy98 THardy98 added the skip-changelog PR changes do not require changelog updates label Aug 24, 2026
@THardy98
THardy98 force-pushed the feat/cloud-testing-inventory branch 8 times, most recently from e1dd440 to 5a3f314 Compare August 25, 2026 14:42
@THardy98
THardy98 force-pushed the feat/cloud-testing-inventory branch from 5a3f314 to fa81d1a Compare August 25, 2026 15:16
@THardy98
THardy98 marked this pull request as ready for review August 25, 2026 15:35
@THardy98
THardy98 requested a review from a team as a code owner August 25, 2026 15:35
@THardy98

THardy98 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

Output from the inventory command:

Details
~/c/t/sdk-ruby/temporalio on  feat/cloud-testing-inventory [$?] via 💎 v3.3.0 via 🦀 v1.95.0
❯   mise exec ruby@3.3.12 -- bundle exec rake test:cloud_inventory
Run options: --name=/CloudTestInventoryTest#test_report/ --seed 48703

# Running:

Cloud test exclusions

requires_cloud_provisioning (13) — Requires a Cloud capability that the test harness cannot provision or a feature that is not yet available in Temporal Cloud
  ClientActivityTest#test_cancel_during_start_delay_transitions_to_canceled_immediately — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientActivityTest#test_start_activity_with_nil_start_delay_dispatches_immediately — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientActivityTest#test_start_activity_with_start_delay_dispatches_after_delay — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientActivityTest#test_start_activity_with_zero_start_delay_dispatches_immediately — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientActivityTest#test_start_delay_extends_schedule_to_close_timeout — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientActivityTest#test_start_delay_extends_schedule_to_start_timeout — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientActivityTest#test_terminate_during_start_delay_transitions_to_terminated_immediately — Requires Standalone Activity start delay to be enabled in the Cloud namespace.
  ClientCloudTest#test_api_key — Requires separately provisioned Cloud credentials and operations permissions.
  ClientCloudTest#test_cloud_ops — Requires separately provisioned Cloud credentials and operations permissions.
  ClientCloudTest#test_mtls — Requires separately provisioned Cloud credentials and operations permissions.
  WorkerActivityTest#test_async_completion_cancel_details — Requires Activity pause and reset APIs that are not enabled in Cloud CI.
  WorkerWorkflowActivityTest#test_cancellation_pause — Requires Activity pause and reset APIs that are not enabled in Cloud CI.
  WorkerWorkflowActivityTest#test_cancellation_reset — Requires Activity pause and reset APIs that are not enabled in Cloud CI.

needs_cloud_adaptation (84) — Requires setup or assertions adapted for the Temporal Cloud environment
  ClientScheduleTest#test_backfill — Relies on backfill action counts becoming immediately consistent.
  ClientScheduleTest#test_basics — Requires custom search attributes and immediately consistent schedule visibility.
  ClientScheduleTest#test_trigger_immediately — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientTest#test_interceptor — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientTest#test_lazy_connection — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_cancel — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_config_change — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_continue_as_new — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_describe — Requires custom search attributes and a Go worker with Cloud TLS configuration.
  ClientWorkflowTest#test_failure — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_list_and_count — Requires custom search attributes, consistent visibility, and Go worker Cloud TLS.
  ClientWorkflowTest#test_query — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_result_preserves_fiber_local_context_for_history_rpc — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_retry_policy — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_rpc_cancellation — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_signal — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_start_delay — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_start_simple — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_terminate — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_update — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  ClientWorkflowTest#test_workflow_exists — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_activity_shielding — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_activity_shielding_fiber — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_async_completion_cancel — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_async_completion_heartbeat_and_fail — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_async_completion_success — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_async_completion_timeout — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_background_heartbeat — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_block — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_cancellation_simple — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_cancellation_swallowed — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_class — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_client_access — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_concurrent_multi_worker_fiber_activities — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_concurrent_multi_worker_threaded_activities — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_concurrent_single_worker_fiber_activities — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_concurrent_single_worker_threaded_activities — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_context_instance — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_custom_executor — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_custom_name — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_dynamic_activity — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_dynamic_activity_raw_args — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_failure — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_fiber — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_fiber_cancellation — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_heartbeat_details — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_info — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_instance — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_interceptor — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_interceptor_from_client — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_keyword_arguments — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_logging — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_multi_param — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_no_raise_cancellation — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_not_found — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_simple_fiber_activity — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_unimplemented_execute — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerActivityTest#test_worker_shutdown — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerTest#test_can_run_with_composite_tuner — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerTest#test_can_run_with_resource_tuner — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerWorkflowActivityTest#test_activity_without_result_from_go_sdk — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerWorkflowChildTest#test_child_workflow_without_result_from_go_sdk — The Go kitchen-sink worker does not receive Cloud TLS configuration.
  WorkerWorkflowChildTest#test_search_attributes — Requires custom search attributes that the Cloud harness does not provision.
  WorkerWorkflowNexusTest#test_nexus_async_operation_failure — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_async_operation_success — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_concurrent_operations — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_handler_error — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_multiple_operations_in_sequence — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_cancellation_abandon — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_cancellation_try_cancel — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_error_attributes — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_handle_async_has_token — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_handle_sync_has_no_token — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_open_telemetry_tracing — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_summary_in_history — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_timeout — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_with_symbol_names — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_operation_with_timeout — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_schedule_to_start_timeout — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_start_to_close_timeout — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_sync_operation_handler_error — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowNexusTest#test_nexus_sync_operation_success — Requires Cloud Nexus endpoint setup and a Go worker with Cloud TLS configuration.
  WorkerWorkflowTest#test_payload_codec — Requires custom search attributes that the Cloud harness does not provision.
  WorkerWorkflowTest#test_search_attributes_memo — Requires custom search attributes that the Cloud harness does not provision.

requires_local_server (10) — Inherently requires one or more local Temporal Server instances, such as a dev or time-skipping server or custom server configuration
  Testing::WorkflowEnvironmentTest#test_auto_time_skipping_disabled — Covers local and time-skipping test-server APIs.
  Testing::WorkflowEnvironmentTest#test_start_local_search_attributes — Covers local and time-skipping test-server APIs.
  Testing::WorkflowEnvironmentTest#test_time_skipping_auto — Covers local and time-skipping test-server APIs.
  Testing::WorkflowEnvironmentTest#test_time_skipping_heartbeat_timeout — Covers local and time-skipping test-server APIs.
  Testing::WorkflowEnvironmentTest#test_time_skipping_manual — Covers local and time-skipping test-server APIs.
  WorkerPayloadSizeLimitsTest#test_default_log_filter_admits_temporalio_common — Starts a server with custom payload-size dynamic configuration.
  WorkerPayloadSizeLimitsTest#test_disable_payload_error_limit_sends_to_server — Starts a server with custom payload-size dynamic configuration.
  WorkerPayloadSizeLimitsTest#test_oversized_payload_fails_task — Starts a server with custom payload-size dynamic configuration.
  WorkerWorkflowHandlerTest#test_retry_start_update — Requires local server metrics and update-related dynamic configuration.
  WorkerWorkflowTest#test_worker_client_replacement — Starts a second local server to verify worker client replacement.

@THardy98
THardy98 enabled auto-merge (squash) August 25, 2026 16:07

@GregoryTravis GregoryTravis left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Unofficial approval, needs @chris-olszewski

@chris-olszewski chris-olszewski left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I like the class defined exclusion

Comment thread .github/workflows/ci.yml
@THardy98
THardy98 merged commit f8fb1eb into main Aug 26, 2026
11 checks passed
@THardy98
THardy98 deleted the feat/cloud-testing-inventory branch August 26, 2026 18:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog PR changes do not require changelog updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants