Skip to content

Run Cloud-eligible integration tests with filtering - #1518

Open
THardy98 wants to merge 3 commits into
mainfrom
feat/cloud-test-filtering
Open

Run Cloud-eligible integration tests with filtering#1518
THardy98 wants to merge 3 commits into
mainfrom
feat/cloud-test-filtering

Conversation

@THardy98

@THardy98 THardy98 commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

What was changed

Integration tests are now Cloud-eligible by default. Tests that do not exercise a server, require
a local server or additional Cloud provisioning, or have a confirmed Cloud incompatibility use a
source-local #[cloud_test_exclusion(Category, "specific reason")] annotation. Cloud mode turns
those annotations into native ignored tests, including every case generated by rstest.

The classification was built by running the suite against an isolated Cloud namespace. Direct
hard-coded default namespace assumptions were changed to use the harness-selected namespace;
broader test fixes remain explicitly excluded.

Why?

Cloud compatibility should be visible where each test is maintained and based on observed
behavior, without maintaining a separate regex list. Developers can inspect skipped cases with
libtest's native --ignored --list, while new tests enter the Cloud suite unless they declare a
concrete exclusion.

Checklist

  1. Part of Run integration tests against cloud features#851.

  2. How was this tested:

    • cargo +1.94 test -q -p temporalio-macros
    • cargo +1.94 integ-test -s external --cloud -- --ignored --list lists all 231 exclusions.
    • cargo +1.94 lint
    • cargo +1.94 test-lint
    • actionlint -ignore 'SC2086' .github/workflows/per-pr.yml
    • Cloud qualification: 326 passed, 0 failed, 231 ignored in
      runs 33782319827 and
      33785575299.
  3. Any docs updates needed?

    Yes. The README documents Cloud filtering, exclusion categories, required notes, and native
    skipped-test listing.

@THardy98
THardy98 force-pushed the feat/envconfig-harness branch from 086a427 to b735380 Compare August 24, 2026 18:51
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch 2 times, most recently from 56f8638 to 1bb491c Compare August 24, 2026 19:04
@THardy98
THardy98 force-pushed the feat/envconfig-harness branch from b735380 to e19bfdd Compare August 25, 2026 13:42
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch from 1bb491c to da76966 Compare August 25, 2026 13:43
@THardy98
THardy98 force-pushed the feat/envconfig-harness branch from e19bfdd to c7823e9 Compare August 25, 2026 14:43
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch from da76966 to 4fa0651 Compare August 25, 2026 14:43
@THardy98
THardy98 force-pushed the feat/envconfig-harness branch from c7823e9 to 1c0f8aa Compare August 25, 2026 14:57
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch 5 times, most recently from a1352d2 to 495c5e7 Compare August 26, 2026 15:13
Base automatically changed from feat/envconfig-harness to main August 26, 2026 18:25
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch from 495c5e7 to d5cc2f0 Compare September 2, 2026 16:12
@THardy98 THardy98 added the skip-changelog PR changes do not require changelog updates label Sep 2, 2026
@THardy98
THardy98 marked this pull request as ready for review September 2, 2026 16:37
@THardy98
THardy98 requested a review from a team as a code owner September 2, 2026 16:37
@THardy98
THardy98 marked this pull request as draft September 2, 2026 16:38
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch 3 times, most recently from c16fdd3 to 519c79f Compare September 3, 2026 17:36
@THardy98
THardy98 marked this pull request as ready for review September 3, 2026 17:55
@THardy98
THardy98 marked this pull request as draft September 3, 2026 19:39
@THardy98
THardy98 force-pushed the feat/cloud-test-filtering branch from 04fa067 to 4d30cdd Compare September 3, 2026 19:58
@THardy98
THardy98 marked this pull request as ready for review September 3, 2026 20:38

@Sushisource Sushisource 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.

Overall looking good to me, thanks for this. Just a couple things to address. Main feedback here is we can remove a lot of the string reasons. Some of them are interesting but a lot of them have no value over the reason type.

Comment on lines +2191 to +2194
#[temporalio_macros::cloud_test_exclusion(
DoesNotUseServer,
"Uses MockPollCfg and a mocked SDK worker with synthetic history; no Temporal server is contacted."
)]

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.

Seems like the overwhelming majority of these use a note that is 100% redundant with the categorized reason. No need for both. We should only bother with the note if it provides additional information.

Comment on lines +57 to +60
"DoesNotUseServer"
| "RequiresLocalServer"
| "RequiresCloudProvisioning"
| "NeedsCloudAdaptation" => {}

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.

These reasons look like real types but aren't. These should be defined as an actual enum somewhere - it's not really possible to discover what the valid values are.

use tracing::info;

#[temporalio_macros::cloud_test_exclusion(
RequiresCloudProvisioning,

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.

This is more like "RequiresOSSOnlyAPIs" or something

Comment on lines +346 to +347
RequiresLocalServer,
"Requires dev-server workflow-task pagination and transaction-size dynamic configuration."

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.

This is an example of a case we'll want to enable for cloud at some point once it's available there. Not sure what the best way to track that is. Maybe something formalized isn't really worth it. Open to suggestions.

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.

2 participants