Skip to content

Run the feature suite on pull requests, not only on main #1095

Closed

Description

@rmcdaniel

Problem

PR CI runs only a small part of the feature suite, so a feature test can break on main after a PR merges green. Today #1092 (#870) did exactly that: V2WorkflowTest::testActivityHeartbeatBackfillsLegacyCurrentAttemptIdentity still expected the old heartbeat event, failed only in main's feature-mysql/feature-postgresql shards, and held the 2.24.0 tag (fixed in #1094). #1074's unit test broke main the same way, which #1082 closed for the unit suite.

What pr-feature-mysql runs today (.github/pr-test-selection.json, scripts/ci/select-pr-tests.php):

  • four smoke methods (V2TaskDispatchTest, V2UpdateWorkflowTest, V2QueryWorkflowTest, V2ActivityArgumentCodecTest, one method each)
  • feature test files the PR itself changes, up to a 120 s budget

Everything else runs only on push to main. That is 161 feature files, about 2,960 s on MySQL with coverage.

Plan

  1. Measure the full feature suite on PRs without coverage, on SQLite with the Redis service that pr-unit already uses, split into 3 shards. Target: no PR job over ~12 minutes, which is about today's PR wall time with pr-unit.
  2. If that fits, add it as a required PR job (like pr-unit in Run the full unit suite on pull requests #1082), keeping MySQL/PostgreSQL/MariaDB coverage shards on main. Database-specific behavior still gets pr-feature-mysql smoke plus changed files.
  3. If it doesn't fit, fall back to impact selection: also run feature files that reference classes changed under src/, with a larger PR budget.

Owner: Workflow.

Feature files that PR CI currently skips unless the PR changes them
  • tests/Feature/ActivityCompletionWakeTest.php
  • tests/Feature/ActivityDispatchBoundaryTest.php
  • tests/Feature/AiWorkflowTest.php
  • tests/Feature/AsyncWorkflowTest.php
  • tests/Feature/AwaitWithTimeoutWorkflowTest.php
  • tests/Feature/AwaitWorkflowTest.php
  • tests/Feature/Base64WorkflowTest.php
  • tests/Feature/ChildWorkflowSignalingTest.php
  • tests/Feature/ConcurrentWorkflowTest.php
  • tests/Feature/ContinueAsNewWorkflowTest.php
  • tests/Feature/ContinuedSignalRetirementTest.php
  • tests/Feature/DatabaseTruncationTest.php
  • tests/Feature/DispatchWorkflowInTransactionTest.php
  • tests/Feature/ExceptionLoggingReplayTest.php
  • tests/Feature/ExceptionWorkflowTest.php
  • tests/Feature/FailingWorkflowTest.php
  • tests/Feature/HeartbeatWorkflowTest.php
  • tests/Feature/MigrationTest.php
  • tests/Feature/NestedSignalRaceConditionTest.php
  • tests/Feature/ParentContinueAsNewChildWorkflowTest.php
  • tests/Feature/ParentWorkflowTest.php
  • tests/Feature/PendingContinuationTimerTest.php
  • tests/Feature/RaceConditionTest.php
  • tests/Feature/RetriesWorkflowTest.php
  • tests/Feature/SagaChildWorkflowTest.php
  • tests/Feature/SagaWorkflowTest.php
  • tests/Feature/SideEffectWorkflowTest.php
  • tests/Feature/SignalReplayTest.php
  • tests/Feature/StateChangedEventTest.php
  • tests/Feature/StateMachineWorkflowTest.php
  • tests/Feature/TimeoutWorkflowTest.php
  • tests/Feature/TimerWorkflowTest.php
  • tests/Feature/V2/ScheduleVisibilityQueryNativeStorageTest.php
  • tests/Feature/V2/ScheduleVisibilityQueryTest.php
  • tests/Feature/V2/TaskQueuePriorityFairnessTest.php
  • tests/Feature/V2/V2ActivityArgumentCodecTest.php
  • tests/Feature/V2/V2ActivityAttemptBudgetTest.php
  • tests/Feature/V2/V2ActivityEntryArgumentsTest.php
  • tests/Feature/V2/V2ActivityExceptionCodecTest.php
  • tests/Feature/V2/V2ActivityLeaseRepairLockTest.php
  • tests/Feature/V2/V2ActivityMetadataProjectionTest.php
  • tests/Feature/V2/V2ActivityOptionsTest.php
  • tests/Feature/V2/V2ActivityOutcomeHistoryRoleTest.php
  • tests/Feature/V2/V2ActivityTaskBridgeTest.php
  • tests/Feature/V2/V2ActivityTimeoutTest.php
  • tests/Feature/V2/V2ArchiveWorkflowTest.php
  • tests/Feature/V2/V2AuthoredActivityRetryReplayTest.php
  • tests/Feature/V2/V2AvroAdapterCodecTest.php
  • tests/Feature/V2/V2AvroParitySuiteTest.php
  • tests/Feature/V2/V2AwaitWorkflowTest.php
  • tests/Feature/V2/V2CallerSuppliedReservationSnapshotTest.php
  • tests/Feature/V2/V2CancellationCascadeViewTest.php
  • tests/Feature/V2/V2CancellationCleanupOutcomeTest.php
  • tests/Feature/V2/V2CancellationRequestConcurrencyTest.php
  • tests/Feature/V2/V2CancellationScopeDeliveryTest.php
  • tests/Feature/V2/V2CancellationScopeDescendantsTest.php
  • tests/Feature/V2/V2CancellationScopeHistoryTest.php
  • tests/Feature/V2/V2CancellationScopeRequestsTest.php
  • tests/Feature/V2/V2ChildCancellationPolicyTest.php
  • tests/Feature/V2/V2ChildTerminalOutcomeTest.php
  • tests/Feature/V2/V2ChildWorkflowExternalOutputReplayTest.php
  • tests/Feature/V2/V2ChildWorkflowNamespaceProjectionTest.php
  • tests/Feature/V2/V2CommandDeadlockRetryTest.php
  • tests/Feature/V2/V2CompatibilityWorkflowTest.php
  • tests/Feature/V2/V2ConfiguredCoreModelsTest.php
  • tests/Feature/V2/V2ContinueAsNewMetadataTest.php
  • tests/Feature/V2/V2CooperativeParentCloseTest.php
  • tests/Feature/V2/V2DefaultConnectionRecoveryTest.php
  • tests/Feature/V2/V2DependencyInjectionTest.php
  • tests/Feature/V2/V2DeterministicTimeReplayTest.php
  • tests/Feature/V2/V2DeterministicTimeTest.php
  • tests/Feature/V2/V2DuplicateStartPolicyTest.php
  • tests/Feature/V2/V2EmbeddedParallelChildConcurrencyTest.php
  • tests/Feature/V2/V2EmbeddedReplayRegressionCorpusTest.php
  • tests/Feature/V2/V2EntryMethodTest.php
  • tests/Feature/V2/V2FailedRunRedrivePlanTest.php
  • tests/Feature/V2/V2FailedRunRedriveTest.php
  • tests/Feature/V2/V2FailureMessageStorageMigrationTest.php
  • tests/Feature/V2/V2FinallyCleanupTest.php
  • tests/Feature/V2/V2GoldenHistoryReplayTest.php
  • tests/Feature/V2/V2HistoryRecordedAtTimezoneTest.php
  • tests/Feature/V2/V2HistoryTimelineTest.php
  • tests/Feature/V2/V2InboxAfterParallelTest.php
  • tests/Feature/V2/V2LeasedSignalDeliveryTest.php
  • tests/Feature/V2/V2LegacyEventCompatibilityTest.php
  • tests/Feature/V2/V2LifecycleEventTest.php
  • tests/Feature/V2/V2LocalActivityTest.php
  • tests/Feature/V2/V2MemoUpsertTest.php
  • tests/Feature/V2/V2MessageCursorContinueAsNewTest.php
  • tests/Feature/V2/V2MessageStreamAuthoringTest.php
  • tests/Feature/V2/V2MessageStreamReplayTest.php
  • tests/Feature/V2/V2NamespaceScopedLoadTest.php
  • tests/Feature/V2/V2NexusCallerDeliveryTest.php
  • tests/Feature/V2/V2NonRetryableFailureTest.php
  • tests/Feature/V2/V2OperatorMetricsTest.php
  • tests/Feature/V2/V2OperatorQueueVisibilityTest.php
  • tests/Feature/V2/V2ParentClosePolicyTest.php
  • tests/Feature/V2/V2PortableCancellationDeliveryTest.php
  • tests/Feature/V2/V2PortableLocalActivityCheckpointTest.php
  • tests/Feature/V2/V2PortableLocalActivityCleanupTest.php
  • tests/Feature/V2/V2PortableLocalActivityControlTest.php
  • tests/Feature/V2/V2PortableLocalActivityOutcomeTest.php
  • tests/Feature/V2/V2PortableLocalActivityPreparationTest.php
  • tests/Feature/V2/V2PortableLocalActivityRecoveryTest.php
  • tests/Feature/V2/V2ProjectionTimestampTimezoneTest.php
  • tests/Feature/V2/V2PrunedHistoryExportTest.php
  • tests/Feature/V2/V2QueryWorkflowTest.php
  • tests/Feature/V2/V2ReplayDiffTest.php
  • tests/Feature/V2/V2ResumeTaskSchedulingTest.php
  • tests/Feature/V2/V2RunDetailViewTest.php
  • tests/Feature/V2/V2RunSummarySortKeyTest.php
  • tests/Feature/V2/V2RunTimerTaskHistoryRoleTest.php
  • tests/Feature/V2/V2SagaWorkflowTest.php
  • tests/Feature/V2/V2ScheduleNamespaceInstanceIdTest.php
  • tests/Feature/V2/V2ScheduleTest.php
  • tests/Feature/V2/V2ScheduleTickBurstTest.php
  • tests/Feature/V2/V2ScheduleTimezoneTest.php
  • tests/Feature/V2/V2SchedulerDegradedModeTest.php
  • tests/Feature/V2/V2ScopedActivityCancellationTest.php
  • tests/Feature/V2/V2ScopedChildCancellationTest.php
  • tests/Feature/V2/V2ScopedLocalControlTest.php
  • tests/Feature/V2/V2ScopedTimerCancellationTest.php
  • tests/Feature/V2/V2ScopedWaitCancellationTest.php
  • tests/Feature/V2/V2SearchAttributeDatetimeRepairTest.php
  • tests/Feature/V2/V2SearchAttributeTest.php
  • tests/Feature/V2/V2ServiceModeParallelChildBarrierTest.php
  • tests/Feature/V2/V2ServiceResponseReplayTest.php
  • tests/Feature/V2/V2SideEffectWorkflowTest.php
  • tests/Feature/V2/V2StandaloneActivityHostTest.php
  • tests/Feature/V2/V2StartNamespaceTest.php
  • tests/Feature/V2/V2StartSearchAttributeTest.php
  • tests/Feature/V2/V2StructuralLimitTest.php
  • tests/Feature/V2/V2TaskDispatchHistoryRoleTest.php
  • tests/Feature/V2/V2TaskDispatchTest.php
  • tests/Feature/V2/V2TaskWatchdogRepairConcurrencyTest.php
  • tests/Feature/V2/V2TerminalReasonDiagnosticsTest.php
  • tests/Feature/V2/V2TimerWorkflowTest.php
  • tests/Feature/V2/V2UpdateBeforeCloseTest.php
  • tests/Feature/V2/V2UpdateTailCheckpointTest.php
  • tests/Feature/V2/V2UpdateWorkflowTest.php
  • tests/Feature/V2/V2UuidWorkflowTest.php
  • tests/Feature/V2/V2VersionWorkflowTest.php
  • tests/Feature/V2/V2WebhookPollAndControlPlaneTest.php
  • tests/Feature/V2/V2WebhookWorkflowTest.php
  • tests/Feature/V2/V2WorkflowControlPlaneTest.php
  • tests/Feature/V2/V2WorkflowEntryArgumentsTest.php
  • tests/Feature/V2/V2WorkflowReplayerTest.php
  • tests/Feature/V2/V2WorkflowRunRetentionCleanupTest.php
  • tests/Feature/V2/V2WorkflowStubContractTest.php
  • tests/Feature/V2/V2WorkflowStubFakeTest.php
  • tests/Feature/V2/V2WorkflowTaskBridgeTest.php
  • tests/Feature/V2/V2WorkflowTest.php
  • tests/Feature/V2/V2WorkflowTimeoutTest.php
  • tests/Feature/V2/V2WorkflowVersionPinningTest.php
  • tests/Feature/V2/WaterlineEngineSourceMysqlReadinessTest.php
  • tests/Feature/V2/WorkflowTaskFailureLivenessTest.php
  • tests/Feature/V2/WorkflowTaskSignalGapLockTest.php
  • tests/Feature/VersionWorkflowTest.php
  • tests/Feature/WebhookWorkflowTest.php
  • tests/Feature/WorkflowPollingTest.php
  • tests/Feature/WorkflowTest.php
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions