PASSED

tSQLt SQL E2E

Generated at 2026-06-02T16:37:15.563Z. Raw output: run-tsqlt-output.txt. Structured data: results.json.

Total
419
Passed
419
Failed
0
Skipped
0
Errored
0
Modules
15

Module Summary

Module Total Passed Failed Skipped Errored
M2_CarrierInstancesPasses_Tests 31 31 0 0 0
M2_CarrierProtection_Tests 48 48 0 0 0
M2_DetectRollsetDisruption_Tests 28 28 0 0 0
M2_DisruptionTracking_Tests 16 16 0 0 0
M2_DraftEvents_Tests 70 70 0 0 0
M2_EdgerRollPass_Tests 10 10 0 0 0
M2_EventErrorHandling_Tests 10 10 0 0 0
M2_EventIntegration_Tests 35 35 0 0 0
M2_PassCampaigns_Tests 14 14 0 0 0
M2_ResolveEventCollisions_Tests 59 59 0 0 0
M2_ScheduleCompaction_Tests 22 22 0 0 0
M2_SwapRollsetsRolls_Tests 16 16 0 0 0
M2_SyncCampaignsToProductionEvents_Tests 37 37 0 0 0
M2_TensileRequirements_Tests 15 15 0 0 0
M2_TrackPassCampaignsJob_Tests 8 8 0 0 0

Test Results

# Module Test Duration (ms) Result
1 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass deletes non-last record 1364 Success
2 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails for last record 725 Success
3 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails when already deleted 855 Success
4 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails with non-existent id 1099 Success
5 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails without id 675 Success
6 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass removes PassCampaign 1185 Success
7 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes adjusts first record StartedAt 1385 Success
8 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes adjusts only f<...>tedAt to InstalledAt and last EndedAt to UninstalledAt when window changes 1124 Success
9 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes adjusts only first StartedAt to InstalledAt when window shifts keeping same duration 1001 Success
10 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes chains EndedAt for multiple records 1065 Success
11 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes does not scale single pass 1205 Success
12 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes does not scale when window unchanged 935 Success
13 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes fails with non-existent CarrierInstance 870 Success
14 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes fails without CarrierInstanceId 660 Success
15 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes fails without EdgerRollPartId 776 Success
16 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes recalculates only the specified EdgerRoll leaving other rolls unchanged 1063 Success
17 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes returns 0 when no records 654 Success
18 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes scales passes proportionally when window expands 975 Success
19 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes sets EndedAt to UninstalledAt for single record 910 Success
20 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes sets NULL EndedAt when not uninstalled 1071 Success
21 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass creates first record with InstalledAt 1320 Success
22 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass creates with explicit StartedAt 1579 Success
23 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails changing to same active pass 912 Success
24 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails when EdgerRoll not in Rollset 805 Success
25 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with non-existent CarrierInstance 961 Success
26 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with non-existent pass 780 Success
27 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with StartedAt after UninstalledAt 798 Success
28 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with StartedAt before InstalledAt 1061 Success
29 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails without CarrierInstanceId 699 Success
30 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails without EdgerRollPartId 660 Success
31 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass replaces record with same StartedAt 1359 Success
32 M2_CarrierProtection_Tests test DeleteArbor deactivates UniversalRoll Part 1123 Success
33 M2_CarrierProtection_Tests test DeleteArbor fails when carrier status is U 999 Success
34 M2_CarrierProtection_Tests test DeleteArbor in rollset deactivates UR and rollset 1504 Success
35 M2_CarrierProtection_Tests test DeleteArbor succeeds when arbor not in any universal roll 950 Success
36 M2_CarrierProtection_Tests test DeleteArbor succeeds when carrier status is X 1140 Success
37 M2_CarrierProtection_Tests test DeleteArbor succeeds when rollset has no carrier 1199 Success
38 M2_CarrierProtection_Tests test DeleteArbor succeeds when universal roll not in rollset 976 Success
39 M2_CarrierProtection_Tests test DeleteDonut fails when carrier status is C 888 Success
40 M2_CarrierProtection_Tests test DeleteDonut fails when carrier status is S 1156 Success
41 M2_CarrierProtection_Tests test DeleteDonut in rollset updates UR and deactivates rollset 1198 Success
42 M2_CarrierProtection_Tests test DeleteDonut keeps UniversalRoll active 1350 Success
43 M2_CarrierProtection_Tests test DeleteDonut multiple donuts succeeds when none in active carrier 1357 Success
44 M2_CarrierProtection_Tests test DeleteDonut sets UniversalRoll DonutPartId to NULL 1439 Success
45 M2_CarrierProtection_Tests test DeleteDonut succeeds when carrier status is F 1280 Success
46 M2_CarrierProtection_Tests test DeleteDonut succeeds when donut not in any universal roll 979 Success
47 M2_CarrierProtection_Tests test DeleteDonut succeeds when rollset has no carrier 994 Success
48 M2_CarrierProtection_Tests test DeleteDonut succeeds when universal roll not in rollset 1172 Success
49 M2_CarrierProtection_Tests test DeleteRoll deactivates rollset when carrier status is E 964 Success
50 M2_CarrierProtection_Tests test DeleteRoll deactivates rollset when no carrier instance 995 Success
51 M2_CarrierProtection_Tests test DeleteRoll edger deactivates rollset when carrier status is F 1324 Success
52 M2_CarrierProtection_Tests test DeleteRoll edger deactivates rollset when no carrier 1318 Success
53 M2_CarrierProtection_Tests test DeleteRoll edger fails when carrier status is A 951 Success
54 M2_CarrierProtection_Tests test DeleteRoll edger fails when carrier status is I 1498 Success
55 M2_CarrierProtection_Tests test DeleteRoll edger succeeds when not in any rollset 1097 Success
56 M2_CarrierProtection_Tests test DeleteRoll error message contains carrier name 952 Success
57 M2_CarrierProtection_Tests test DeleteRoll error message contains CarrierInstanceId 1178 Success
58 M2_CarrierProtection_Tests test DeleteRoll error message contains roll name 960 Success
59 M2_CarrierProtection_Tests test DeleteRoll fails when carrier status is A 1427 Success
60 M2_CarrierProtection_Tests test DeleteRoll fails when carrier status is I 989 Success
61 M2_CarrierProtection_Tests test DeleteRoll multiple rolls fails if any in active carrier 971 Success
62 M2_CarrierProtection_Tests test DeleteRoll roll stays active when blocked 1194 Success
63 M2_CarrierProtection_Tests test DeleteRoll succeeds when roll not in any rollset 971 Success
64 M2_CarrierProtection_Tests test UpsertRollset change rolls fails when in active carrier 1292 Success
65 M2_CarrierProtection_Tests test UpsertRollset deactivate fails when in active carrier 1041 Success
66 M2_CarrierProtection_Tests test UpsertRollset implicit deactivation fails when other in active carrier 1984 Success
67 M2_CarrierProtection_Tests test UpsertRollset implicit deactivation succeeds when no carrier 1900 Success
68 M2_CarrierProtection_Tests test UpsertRollset use roll from active carrier fails 1144 Success
69 M2_CarrierProtection_Tests test UpsertUniversalRoll change arbor fails when in active carrier 901 Success
70 M2_CarrierProtection_Tests test UpsertUniversalRoll change arbor succeeds when carrier status E 2104 Success
71 M2_CarrierProtection_Tests test UpsertUniversalRoll change arbor succeeds when no rollset 2142 Success
72 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut fails when in active carrier 976 Success
73 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut in rollset deactivates rollset 1993 Success
74 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut succeeds when carrier status F 2034 Success
75 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut succeeds when no rollset 1829 Success
76 M2_CarrierProtection_Tests test UpsertUniversalRoll remove arbor fails when in active carrier 1040 Success
77 M2_CarrierProtection_Tests test UpsertUniversalRoll remove arbor succeeds when no rollset 2001 Success
78 M2_CarrierProtection_Tests test UpsertUniversalRoll remove donut fails when in active carrier 1052 Success
79 M2_CarrierProtection_Tests test UpsertUniversalRoll remove donut succeeds when no rollset 3479 Success
80 M2_DetectRollsetDisruption_Tests test Broken rollset alert includes roll names 947 Success
81 M2_DetectRollsetDisruption_Tests test Broken rollset alert uses past tense 1204 Success
82 M2_DetectRollsetDisruption_Tests test Default diameter tolerance is zero 1026 Success
83 M2_DetectRollsetDisruption_Tests test Diameter mismatch alert created when exceeds tolerance 814 Success
84 M2_DetectRollsetDisruption_Tests test Diameter mismatch alert has no mm unit 822 Success
85 M2_DetectRollsetDisruption_Tests test Diameter tolerance from catSettings 812 Success
86 M2_DetectRollsetDisruption_Tests test Disruption created when affected rollsets exist 1059 Success
87 M2_DetectRollsetDisruption_Tests test Handles missing diameter data gracefully 1087 Success
88 M2_DetectRollsetDisruption_Tests test Multiple affected rollsets create multiple alerts 931 Success
89 M2_DetectRollsetDisruption_Tests test Multiple alert types created in single disruption 917 Success
90 M2_DetectRollsetDisruption_Tests test No diameter alert when within tolerance 796 Success
91 M2_DetectRollsetDisruption_Tests test No disruption created when no conflicts exist 826 Success
92 M2_DetectRollsetDisruption_Tests test No orphans stored for Swap action 828 Success
93 M2_DetectRollsetDisruption_Tests test No position swap alert for Any position roll 813 Success
94 M2_DetectRollsetDisruption_Tests test No position swap alert when position matches 991 Success
95 M2_DetectRollsetDisruption_Tests test Orphaned rolls identified when breaking rollset 1172 Success
96 M2_DetectRollsetDisruption_Tests test Orphans linked to correct RollsetBrokenAlert 1069 Success
97 M2_DetectRollsetDisruption_Tests test Orphans stored for Create action 927 Success
98 M2_DetectRollsetDisruption_Tests test Orphans stored for Mix action 1104 Success
99 M2_DetectRollsetDisruption_Tests test Position swap alert created for Bottom to Top 1004 Success
100 M2_DetectRollsetDisruption_Tests test Position swap alert created for Top to Bottom 818 Success
101 M2_DetectRollsetDisruption_Tests test Position swap alert uses past tense 877 Success
102 M2_DetectRollsetDisruption_Tests test PrevRollsetId adds rollset to affected list 1126 Success
103 M2_DetectRollsetDisruption_Tests test PrevRollsetId creates orphans from previous rollset 993 Success
104 M2_DetectRollsetDisruption_Tests test RollsetBrokenAlerts populated for affected rollsets 1156 Success
105 M2_DetectRollsetDisruption_Tests test RollshopAlert always created even without alerts 822 Success
106 M2_DetectRollsetDisruption_Tests test RollshopAlert default StatusCode is P 772 Success
107 M2_DetectRollsetDisruption_Tests test RollshopAlert has CreatedBy populated 1174 Success
108 M2_DisruptionTracking_Tests test AcknowledgeNotification: Error when already acknowledged 750 Success
109 M2_DisruptionTracking_Tests test AcknowledgeNotification: Status changes from P to A 790 Success
110 M2_DisruptionTracking_Tests test Detection: Diameter mismatch alert created when difference exceeds tolerance 1718 Success
111 M2_DisruptionTracking_Tests test Detection: Multiple affected rollsets identified 1519 Success
112 M2_DisruptionTracking_Tests test Detection: Multiple orphaned rolls identified 1773 Success
113 M2_DisruptionTracking_Tests test Detection: No diameter alert when within tolerance 1433 Success
114 M2_DisruptionTracking_Tests test Detection: Position swap alert created for Bottom to Top 2217 Success
115 M2_DisruptionTracking_Tests test Detection: Position swap alert created for Top to Bottom 1789 Success
116 M2_DisruptionTracking_Tests test Detection: Single affected rollset identified 1651 Success
117 M2_DisruptionTracking_Tests test Detection: Single orphaned roll identified 1966 Success
118 M2_DisruptionTracking_Tests test ErrorHandling: Rollset created even if detection fails 1434 Success
119 M2_DisruptionTracking_Tests test Integration: Multiple alert types in one disruption 2082 Success
120 M2_DisruptionTracking_Tests test UpsertRollset: ActionTypeCode C recorded correctly 1546 Success
121 M2_DisruptionTracking_Tests test UpsertRollset: ActionTypeCode M recorded correctly 1491 Success
122 M2_DisruptionTracking_Tests test UpsertRollset: ActionTypeCode S recorded correctly 1384 Success
123 M2_DisruptionTracking_Tests test UpsertRollset: Default ActionTypeCode is C 1311 Success
124 M2_DraftEvents_Tests test ConfirmEvents: Deletes Main events not in active Draft 904 Success
125 M2_DraftEvents_Tests test ConfirmEvents: Error when ConfirmUntilEventId not found 619 Success
126 M2_DraftEvents_Tests test ConfirmEvents: Inserts new Draft events to Main 964 Success
127 M2_DraftEvents_Tests test ConfirmEvents: Partial confirmation with ConfirmUntilEventId 1073 Success
128 M2_DraftEvents_Tests test ConfirmEvents: Publishes Draft to Main 720 Success
129 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: Deletes from both tables 474 Success
130 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: Error when not found in Draft 549 Success
131 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: Error when not found in Main 336 Success
132 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: IsMatched in Draft prevents deletion 395 Success
133 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: IsMatched in Main prevents deletion 1066 Success
134 M2_DraftEvents_Tests test DeleteEvent DeleteMode Default: Defaults to Main 705 Success
135 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: Dilated event handling in Draft 847 Success
136 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: Error when not found in Draft 526 Success
137 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: IsMatched prevents deletion 372 Success
138 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: Only deletes from Draft table 395 Success
139 M2_DraftEvents_Tests test DeleteEvent DeleteMode Invalid: Throws error for invalid mode 567 Success
140 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: Dilated event handling 793 Success
141 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: Error when not found in Main 622 Success
142 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: IsMatched prevents deletion 425 Success
143 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: Only deletes from Main table 622 Success
144 M2_DraftEvents_Tests test DeleteEvent: Both mode syncs delete to Draft 604 Success
145 M2_DraftEvents_Tests test DeleteEvent: Draft mode does not affect Main 492 Success
146 M2_DraftEvents_Tests test DeleteEvent: Error when EventId not found in Draft 329 Success
147 M2_DraftEvents_Tests test DeleteEvent: Error when EventId not found in Main 308 Success
148 M2_DraftEvents_Tests test DeleteEvent: Error when IsMatched = 1 in Draft mode 343 Success
149 M2_DraftEvents_Tests test DeleteEvent: Error when IsMatched = 1 372 Success
150 M2_DraftEvents_Tests test Edge: ConfirmEvents when already in sync 730 Success
151 M2_DraftEvents_Tests test Edge: Multiple Production events sync correctly 718 Success
152 M2_DraftEvents_Tests test Edge: ResetDraft with empty Main clears Draft 1036 Success
153 M2_DraftEvents_Tests test Isolation: Draft and Main can differ 690 Success
154 M2_DraftEvents_Tests test Isolation: Draft changes do not affect Main 400 Success
155 M2_DraftEvents_Tests test MergeToDraft: All production fields sync correctly 946 Success
156 M2_DraftEvents_Tests test MergeToDraft: DELETE soft-deletes in Draft 390 Success
157 M2_DraftEvents_Tests test MergeToDraft: Error when EventId not found 523 Success
158 M2_DraftEvents_Tests test MergeToDraft: Fixed event copies Start/End exactly 746 Success
159 M2_DraftEvents_Tests test MergeToDraft: New Fixed event creates in Draft with cascade 924 Success
160 M2_DraftEvents_Tests test MergeToDraft: Reactivates inactive Draft event on Main update 971 Success
161 M2_DraftEvents_Tests test ResetDraft: Deletes Draft-only events 632 Success
162 M2_DraftEvents_Tests test ResetDraft: Inserts Main-only events to Draft 651 Success
163 M2_DraftEvents_Tests test ResetDraft: Restores Draft from Main 745 Success
164 M2_DraftEvents_Tests test Sync Scenario: Different ScheduledRollingHours in Main and Draft 727 Success
165 M2_DraftEvents_Tests test Sync Scenario: Different Start times preserved until confirmed 685 Success
166 M2_DraftEvents_Tests test Sync Scenario: Different StatusCode in Main and Draft 786 Success
167 M2_DraftEvents_Tests test Sync Scenario: Event active in Main but inactive in Draft 994 Success
168 M2_DraftEvents_Tests test Sync Scenario: Event exists only in Draft 689 Success
169 M2_DraftEvents_Tests test Sync Scenario: Event exists only in Main 564 Success
170 M2_DraftEvents_Tests test Sync Scenario: IsMatched in Main but not in Draft 744 Success
171 M2_DraftEvents_Tests test Sync Scenario: MergeToDraft preserves Draft Start 820 Success
172 M2_DraftEvents_Tests test SyncCampaigns: Creates event in both Main and Draft 928 Success
173 M2_DraftEvents_Tests test SyncDelete: Delete Both then resync recreates both 1942 Success
174 M2_DraftEvents_Tests test SyncDelete: Delete Draft preserves Main state 1354 Success
175 M2_DraftEvents_Tests test SyncDelete: Delete Draft then resync restores Draft via MergeToDraft 1139 Success
176 M2_DraftEvents_Tests test SyncDelete: Delete Main preserves Draft state independently 1114 Success
177 M2_DraftEvents_Tests test SyncDelete: Delete Main then resync recreates Main 1109 Success
178 M2_DraftEvents_Tests test SyncDelete: IsMatched prevents delete in all modes 1282 Success
179 M2_DraftEvents_Tests test UpsertDraftEvent: Create Downtime in Draft 804 Success
180 M2_DraftEvents_Tests test UpsertDraftEvent: Create Holiday only in Draft 452 Success
181 M2_DraftEvents_Tests test UpsertDraftEvent: Create Maintenance in Draft 459 Success
182 M2_DraftEvents_Tests test UpsertDraftEvent: Error when Start is NULL 320 Success
183 M2_DraftEvents_Tests test UpsertDraftProductionEvent: Error when SectionId missing 383 Success
184 M2_DraftEvents_Tests test UpsertDraftProductionEvent: IsMatched allows non-date changes 465 Success
185 M2_DraftEvents_Tests test UpsertDraftProductionEvent: IsMatched prevents date changes 575 Success
186 M2_DraftEvents_Tests test UpsertDraftProductionEvent: New event only in Draft not Main 683 Success
187 M2_DraftEvents_Tests test UpsertDraftProductionEvent: Update only affects Draft not Main 817 Success
188 M2_DraftEvents_Tests test UpsertProductionEvent: Anchor logic positions Draft event correctly 2005 Success
189 M2_DraftEvents_Tests test UpsertProductionEvent: IsMatched syncs to Draft 634 Success
190 M2_DraftEvents_Tests test UpsertProductionEvent: New event creates in both Main and Draft 1167 Success
191 M2_DraftEvents_Tests test UpsertProductionEvent: No anchor uses Main Start for Draft 1279 Success
192 M2_DraftEvents_Tests test UpsertProductionEvent: ScheduledRollingHours change recalculates Draft End 1246 Success
193 M2_DraftEvents_Tests test UpsertProductionEvent: Update syncs fields to Draft but not Start 1014 Success
194 M2_EdgerRollPass_Tests test UpsertEdgerRollPass adds first pass with defaults 337 Success
195 M2_EdgerRollPass_Tests test UpsertEdgerRollPass adds sequential passes up to 4 381 Success
196 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with inactive PartId 321 Success
197 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with invalid PassNumber 414 Success
198 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with invalid PassStatusCode 277 Success
199 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with non-EdgerRoll Part 253 Success
200 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with non-existent PartId 237 Success
201 M2_EdgerRollPass_Tests test UpsertEdgerRollPass returns PassNumber on update 310 Success
202 M2_EdgerRollPass_Tests test UpsertEdgerRollPass updates status to Damaged 303 Success
203 M2_EdgerRollPass_Tests test UpsertEdgerRollPass updates status to Used 322 Success
204 M2_EventErrorHandling_Tests test Cascade: Max cascade iterations throws descriptive error 256 Success
205 M2_EventErrorHandling_Tests test Cascade: Max Fixed resolution iterations throws descriptive error 280 Success
206 M2_EventErrorHandling_Tests test Compaction: Max iterations throws descriptive error 255 Success
207 M2_EventErrorHandling_Tests test Defaults: PreProcessEvent uses fallback limit 239 Success
208 M2_EventErrorHandling_Tests test ErrorMessage: Clean extraction removes technical context 121 Success
209 M2_EventErrorHandling_Tests test ErrorMessage: Collision errors identify event types 305 Success
210 M2_EventErrorHandling_Tests test PreProcess: Error message contains context information 223 Success
211 M2_EventErrorHandling_Tests test PreProcess: Max iterations reached throws descriptive error 205 Success
212 M2_EventErrorHandling_Tests test Transaction: UpsertEvent rollback on PreProcess error 619 Success
213 M2_EventErrorHandling_Tests test Transaction: UpsertProductionEvent rollback on validation error 163 Success
214 M2_EventIntegration_Tests test Cascade: Long chain with intercalated Fixed 1711 Success
215 M2_EventIntegration_Tests test Cascade: Stress test 10 consecutive events 1356 Success
216 M2_EventIntegration_Tests test Compact: Blocked by Fixed event 1204 Success
217 M2_EventIntegration_Tests test Compact: Complete gap closure 1434 Success
218 M2_EventIntegration_Tests test Compact: Preserves dilation downstream 1326 Success
219 M2_EventIntegration_Tests test Complex: BaseDuration preserved through complete cycle 1183 Success
220 M2_EventIntegration_Tests test Complex: Complete production schedule with Fixed events 1255 Success
221 M2_EventIntegration_Tests test Complex: Update triggers cascade and compaction 1603 Success
222 M2_EventIntegration_Tests test Create: Production with minimal fields 900 Success
223 M2_EventIntegration_Tests test EdgeCase: Production spans midnight 953 Success
224 M2_EventIntegration_Tests test EdgeCase: Very long BaseDuration 24h 1027 Success
225 M2_EventIntegration_Tests test EdgeCase: Very short BaseDuration 5min 1039 Success
226 M2_EventIntegration_Tests test Insert: Fixed between Productions cascades 1811 Success
227 M2_EventIntegration_Tests test PreProcess: Multiple consecutive Fixed events MOVE 1139 Success
228 M2_EventIntegration_Tests test PreProcess: Overlapping Fixed events smart dilation 1265 Success
229 M2_EventIntegration_Tests test PreProcess: Production vs Production MOVE 1039 Success
230 M2_EventIntegration_Tests test STEP4: Shrinking Fixed readjusts dilated Production 1382 Success
231 M2_EventIntegration_Tests test Update: Change Production SectionId 1116 Success
232 M2_EventIntegration_Tests test Update: Moving Fixed triggers cascade 1207 Success
233 M2_EventIntegration_Tests test Update: Multiple modifications preserve BaseDuration 1074 Success
234 M2_EventIntegration_Tests test Update: Multiple Production fields batch 1297 Success
235 M2_EventIntegration_Tests test Update: Start moves into collision zone 1291 Success
236 M2_EventIntegration_Tests test UpsertEvent: Create compatible Downtime and Maintenance 735 Success
237 M2_EventIntegration_Tests test UpsertEvent: Update Fixed event adjusts affected Production 1355 Success
238 M2_EventIntegration_Tests test UpsertProductionEvent: Auto-moves after Holiday 1101 Success
239 M2_EventIntegration_Tests test UpsertProductionEvent: Create with all fields populated 792 Success
240 M2_EventIntegration_Tests test UpsertProductionEvent: Dilates around Downtime 1119 Success
241 M2_EventIntegration_Tests test UpsertProductionEvent: Update preserves BaseDuration 1092 Success
242 M2_EventIntegration_Tests test Validation: Downtime vs Downtime collision error 887 Success
243 M2_EventIntegration_Tests test Validation: Downtime vs Holiday collision error 495 Success
244 M2_EventIntegration_Tests test Validation: End before Start throws error 413 Success
245 M2_EventIntegration_Tests test Validation: Holiday vs Holiday collision error 598 Success
246 M2_EventIntegration_Tests test Validation: Invalid EventTypeCode error 475 Success
247 M2_EventIntegration_Tests test Validation: Invalid SectionId throws error 342 Success
248 M2_EventIntegration_Tests test Workflow: StatusCode P to I to C progression 1187 Success
249 M2_PassCampaigns_Tests test GetPassCampaignData fails with invalid time range 678 Success
250 M2_PassCampaigns_Tests test GetPassCampaignData fails without EdgerRollPartId 675 Success
251 M2_PassCampaigns_Tests test GetPassCampaignData filters by PassNumber 1045 Success
252 M2_PassCampaigns_Tests test GetPassCampaignData returns calculated totals 1014 Success
253 M2_PassCampaigns_Tests test GetPassCampaignData returns data for EdgerRoll 956 Success
254 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails with deleted pass 853 Success
255 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails with non-existent id 757 Success
256 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails without any offset 900 Success
257 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails without id 1026 Success
258 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets returns correct id 1065 Success
259 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates multiple offsets 1047 Success
260 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates OffsetBillets 1101 Success
261 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates OffsetLength 926 Success
262 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates OffsetWeight 882 Success
263 M2_ResolveEventCollisions_Tests test Cascade: Five event cascade chain 726 Success
264 M2_ResolveEventCollisions_Tests test Cascade: Last event collides with Fixed 282 Success
265 M2_ResolveEventCollisions_Tests test Cascade: Middle event already dilated 279 Success
266 M2_ResolveEventCollisions_Tests test Cascade: Moving Production pushes subsequent Production events 362 Success
267 M2_ResolveEventCollisions_Tests test Cascade: Production cascade blocked by Fixed wall 312 Success
268 M2_ResolveEventCollisions_Tests test Cascade: Production pushes another Production around Fixed event 420 Success
269 M2_ResolveEventCollisions_Tests test Cascade: Productions with large gaps between them 387 Success
270 M2_ResolveEventCollisions_Tests test Complex: Production DILATE then CASCADE another dilated Production 299 Success
271 M2_ResolveEventCollisions_Tests test Complex: Production DILATE through overlapping Downtime and Maintenance 575 Success
272 M2_ResolveEventCollisions_Tests test D1: Downtime vs Downtime throws error 113 Success
273 M2_ResolveEventCollisions_Tests test D1: Downtime vs Holiday partial overlap throws error 130 Success
274 M2_ResolveEventCollisions_Tests test D3: Downtime vs Maintenance is compatible 151 Success
275 M2_ResolveEventCollisions_Tests test Edge: Event with minimum duration one minute 360 Success
276 M2_ResolveEventCollisions_Tests test Edge: Event with very long duration spans days 163 Success
277 M2_ResolveEventCollisions_Tests test Edge: Multiple events same start different durations 146 Success
278 M2_ResolveEventCollisions_Tests test Edge: Production ending exactly at Fixed start has no collision 138 Success
279 M2_ResolveEventCollisions_Tests test Edge: Production one second after Fixed has no collision 377 Success
280 M2_ResolveEventCollisions_Tests test Edge: Production one second before Fixed has no collision 329 Success
281 M2_ResolveEventCollisions_Tests test Edge: Production with no collisions remains unchanged 156 Success
282 M2_ResolveEventCollisions_Tests test H1: Holiday completely containing another Holiday throws error 144 Success
283 M2_ResolveEventCollisions_Tests test H1: Holiday overlap at end throws error 114 Success
284 M2_ResolveEventCollisions_Tests test H1: Holiday overlap at start throws error 122 Success
285 M2_ResolveEventCollisions_Tests test H1: Holiday vs Downtime throws error 133 Success
286 M2_ResolveEventCollisions_Tests test H1: Holiday vs Holiday throws error 180 Success
287 M2_ResolveEventCollisions_Tests test H2: Holiday vs Maintenance throws error 152 Success
288 M2_ResolveEventCollisions_Tests test M1: Maintenance vs Downtime is compatible 165 Success
289 M2_ResolveEventCollisions_Tests test M1: Maintenance vs Maintenance is compatible 139 Success
290 M2_ResolveEventCollisions_Tests test M2: Maintenance vs Holiday throws error 131 Success
291 M2_ResolveEventCollisions_Tests test O1: Multiple Other events can overlap 258 Success
292 M2_ResolveEventCollisions_Tests test O1: Other does not collide with Holiday 248 Success
293 M2_ResolveEventCollisions_Tests test O1: Other does not collide with Production 116 Success
294 M2_ResolveEventCollisions_Tests test O1: Production not affected by Other event 101 Success
295 M2_ResolveEventCollisions_Tests test P1: Multiple Productions overlapping simultaneously 163 Success
296 M2_ResolveEventCollisions_Tests test P1: Production completely contained moves after 192 Success
297 M2_ResolveEventCollisions_Tests test P1: Production containing existing moves after 130 Success
298 M2_ResolveEventCollisions_Tests test P1: Production moves after existing Production when S < NS 239 Success
299 M2_ResolveEventCollisions_Tests test P1: Production with same start time moves after existing 151 Success
300 M2_ResolveEventCollisions_Tests test P2: Production completely inside Fixed MOVES after 284 Success
301 M2_ResolveEventCollisions_Tests test P2: Production DILATE around Fixed when NS < S 209 Success
302 M2_ResolveEventCollisions_Tests test P2: Production DILATE through contiguous Fixed events 178 Success
303 M2_ResolveEventCollisions_Tests test P2: Production DILATE through Fixed events with variable gaps 155 Success
304 M2_ResolveEventCollisions_Tests test P2: Production DILATE through four consecutive Fixed events 174 Success
305 M2_ResolveEventCollisions_Tests test P2: Production DILATE through mixed Fixed event types 149 Success
306 M2_ResolveEventCollisions_Tests test P2: Production DILATE through multiple Holidays 143 Success
307 M2_ResolveEventCollisions_Tests test P2: Production DILATE through overlapping Fixed events without double counting 159 Success
308 M2_ResolveEventCollisions_Tests test P2: Production DILATE through three Fixed events with gaps 154 Success
309 M2_ResolveEventCollisions_Tests test P2: Production DILATE with Fixed ending at exact original P_End 138 Success
310 M2_ResolveEventCollisions_Tests test P2: Production MOVE after Fixed when S <= NS 233 Success
311 M2_ResolveEventCollisions_Tests test P2: Production MOVE then DILATE in sequence 142 Success
312 M2_ResolveEventCollisions_Tests test P2: Production starting at Fixed end has no collision 228 Success
313 M2_ResolveEventCollisions_Tests test P2: Production with Fixed starting at exact P_Start MOVES 157 Success
314 M2_ResolveEventCollisions_Tests test P2: Short Production DILATE through long Fixed event 129 Success
315 M2_ResolveEventCollisions_Tests test Stress: High density Fixed events 12 in 2 hours 384 Success
316 M2_ResolveEventCollisions_Tests test Stress: Multi-day Production through multiple Fixed events 289 Success
317 M2_ResolveEventCollisions_Tests test Update: Event excludes itself from collision detection 137 Success
318 M2_ResolveEventCollisions_Tests test Update: Event in middle of dilated chain 163 Success
319 M2_ResolveEventCollisions_Tests test Update: Fixed event moved away from collision 156 Success
320 M2_ResolveEventCollisions_Tests test Update: Production BaseDuration increased significantly 164 Success
321 M2_ResolveEventCollisions_Tests test Update: Production BaseDuration reduced significantly 162 Success
322 M2_ScheduleCompaction_Tests test Basic: 2-event compaction moves P2 backward 301 Success
323 M2_ScheduleCompaction_Tests test Basic: 3-event compaction cascades through all events 413 Success
324 M2_ScheduleCompaction_Tests test Basic: Partial gap elimination completes gracefully 273 Success
325 M2_ScheduleCompaction_Tests test Edge: Final event encounters Fixed during compaction 493 Success
326 M2_ScheduleCompaction_Tests test Edge: Gap fully eliminated creates contiguous events 629 Success
327 M2_ScheduleCompaction_Tests test Edge: No compaction when event not shortened 256 Success
328 M2_ScheduleCompaction_Tests test Edge: No subsequent events completes immediately 259 Success
329 M2_ScheduleCompaction_Tests test Fixed: Compaction DILATE around Fixed event 355 Success
330 M2_ScheduleCompaction_Tests test Fixed: Compaction MOVE after Fixed event 435 Success
331 M2_ScheduleCompaction_Tests test Fixed: Compaction MOVE then DILATE sequence 314 Success
332 M2_ScheduleCompaction_Tests test Fixed: Compaction stops when Fixed blocks entire remaining gap 700 Success
333 M2_ScheduleCompaction_Tests test Fixed: Compaction through mixed Fixed event types 370 Success
334 M2_ScheduleCompaction_Tests test Fixed: Compaction through multiple consecutive Fixed events 273 Success
335 M2_ScheduleCompaction_Tests test Fixed: Compaction through overlapping Fixed events without double counting 725 Success
336 M2_ScheduleCompaction_Tests test Fixed: Fixed event at exact gap boundary causes MOVE 290 Success
337 M2_ScheduleCompaction_Tests test Gap: Middle event shortening compacts subsequent events 704 Success
338 M2_ScheduleCompaction_Tests test Gap: Variable gaps between events compact correctly 397 Success
339 M2_ScheduleCompaction_Tests test Gap: Very large gap 5 hours compacts correctly 418 Success
340 M2_ScheduleCompaction_Tests test Gap: Very small gap 3 minutes compacts correctly 337 Success
341 M2_ScheduleCompaction_Tests test Integration: CompactSchedule disabled skips compaction 667 Success
342 M2_ScheduleCompaction_Tests test Integration: UpsertEvent skips compaction with blocking events 584 Success
343 M2_ScheduleCompaction_Tests test Integration: UpsertEvent triggers compaction on shortening 496 Success
344 M2_SwapRollsetsRolls_Tests test Error: BottomRollId1 is required 463 Success
345 M2_SwapRollsetsRolls_Tests test Error: BottomRollId2 does not exist in Rolls table 454 Success
346 M2_SwapRollsetsRolls_Tests test Error: BottomRollId2 required when RollsetId2 provided 788 Success
347 M2_SwapRollsetsRolls_Tests test Error: Cannot swap rollsets in different sections 673 Success
348 M2_SwapRollsetsRolls_Tests test Error: Cannot swap rollsets in different stands 1051 Success
349 M2_SwapRollsetsRolls_Tests test Error: Rollset1 must have both rolls assigned 482 Success
350 M2_SwapRollsetsRolls_Tests test Error: RollsetId1 and RollsetId2 must be different 755 Success
351 M2_SwapRollsetsRolls_Tests test Error: RollsetId1 does not exist 438 Success
352 M2_SwapRollsetsRolls_Tests test Error: RollsetId1 is required 386 Success
353 M2_SwapRollsetsRolls_Tests test Error: RollsetId2 does not exist 483 Success
354 M2_SwapRollsetsRolls_Tests test Error: TopRollId1 does not exist in Rolls table 549 Success
355 M2_SwapRollsetsRolls_Tests test Error: TopRollId1 is required 467 Success
356 M2_SwapRollsetsRolls_Tests test Error: TopRollId2 required when RollsetId2 provided 410 Success
357 M2_SwapRollsetsRolls_Tests test Success: Create new rollset with specified rolls 1033 Success
358 M2_SwapRollsetsRolls_Tests test Success: Swap rolls between two rollsets 1221 Success
359 M2_SwapRollsetsRolls_Tests test Success: Use any valid rolls 1418 Success
360 M2_SyncCampaignsToProductionEvents_Tests test CASCADE: Chain stops at matched barrier 949 Success
361 M2_SyncCampaignsToProductionEvents_Tests test CASCADE: Matched events are immovable barriers 729 Success
362 M2_SyncCampaignsToProductionEvents_Tests test CASCADE: Updating IsMatched prevents future cascade 981 Success
363 M2_SyncCampaignsToProductionEvents_Tests test COMPLEX: Multiple section changes create multiple events 1117 Success
364 M2_SyncCampaignsToProductionEvents_Tests test COMPLEX: ResolveEventCascade called for each group 1134 Success
365 M2_SyncCampaignsToProductionEvents_Tests test COMPLEX: StatusCode K preserved when updating 629 Success
366 M2_SyncCampaignsToProductionEvents_Tests test EDGE CASE: Date filters work correctly 979 Success
367 M2_SyncCampaignsToProductionEvents_Tests test EDGE CASE: Empty campaigns table produces no events 580 Success
368 M2_SyncCampaignsToProductionEvents_Tests test EDGE CASE: No campaigns returns gracefully 545 Success
369 M2_SyncCampaignsToProductionEvents_Tests test FIXED: Dilates unmatched but not matched 686 Success
370 M2_SyncCampaignsToProductionEvents_Tests test FIXED: Does not dilate matched events 655 Success
371 M2_SyncCampaignsToProductionEvents_Tests test GROUPING: Consecutive campaigns same section create single event 901 Success
372 M2_SyncCampaignsToProductionEvents_Tests test GROUPING: Section change creates separate events 1035 Success
373 M2_SyncCampaignsToProductionEvents_Tests test GROUPING: Single campaign creates single event 1228 Success
374 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Last group updates status P to I when matched 1028 Success
375 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Matched event updated with IsMatched = 1 1038 Success
376 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: New event created with IsMatched = 1 1008 Success
377 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Prevents duplicate events on resync 789 Success
378 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Unmatched future event matched in next run 895 Success
379 M2_SyncCampaignsToProductionEvents_Tests test LINKING: All campaigns in group linked to same event 1550 Success
380 M2_SyncCampaignsToProductionEvents_Tests test LINKING: EventId preserved for already-linked campaigns 1061 Success
381 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Closest match selected when multiple exist 951 Success
382 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Event expands with campaigns 881 Success
383 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Event times adjust to campaigns 1345 Success
384 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Exact temporal overlap matches event 1062 Success
385 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Fallback respects section 900 Success
386 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Fallback to next unmatched same section 1131 Success
387 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Inactive events not matched 964 Success
388 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: New event created when no match found 904 Success
389 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Proximity window 48h enforced 981 Success
390 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Proximity window matches close event 900 Success
391 M2_SyncCampaignsToProductionEvents_Tests test SMART START: First sync detects production run start 836 Success
392 M2_SyncCampaignsToProductionEvents_Tests test SMART START: Mixed matched and unmatched timeline 1102 Success
393 M2_SyncCampaignsToProductionEvents_Tests test SMART START: Second sync continues from last matched event 1203 Success
394 M2_SyncCampaignsToProductionEvents_Tests test TIMESTAMPS: Continuity maintained between groups 1128 Success
395 M2_SyncCampaignsToProductionEvents_Tests test TIMESTAMPS: FirstBilletTimestamp is first campaign start 874 Success
396 M2_SyncCampaignsToProductionEvents_Tests test TIMESTAMPS: TrackedEnd is last campaign end 743 Success
397 M2_TensileRequirements_Tests test CorrectHeatGrades updates GradeId when swv-mes has different grade 408 Success
398 M2_TensileRequirements_Tests test Disposition fails if any retest sample fails 419 Success
399 M2_TensileRequirements_Tests test Disposition returns P when all samples pass 368 Success
400 M2_TensileRequirements_Tests test Disposition returns U when any sample fails 552 Success
401 M2_TensileRequirements_Tests test Disposition returns U when one of multiple samples fails 570 Success
402 M2_TensileRequirements_Tests test Disposition uses corrected grade after grade correction 422 Success
403 M2_TensileRequirements_Tests test Disposition uses latest sequence only - retest supersedes 386 Success
404 M2_TensileRequirements_Tests test Disposition uses version effective at report time 416 Success
405 M2_TensileRequirements_Tests test UpsertTensileRequirements creates new version 585 Success
406 M2_TensileRequirements_Tests test UpsertTensileRequirements throws error when EffectiveDate is NULL 566 Success
407 M2_TensileRequirements_Tests test UpsertTensileRequirements throws error when Rev is NULL 273 Success
408 M2_TensileRequirements_Tests test UpsertTensileRequirements throws error when Rows is invalid JSON 639 Success
409 M2_TensileRequirements_Tests test YieldPassed returns 0 when value above max 544 Success
410 M2_TensileRequirements_Tests test YieldPassed returns 0 when value below min 476 Success
411 M2_TensileRequirements_Tests test YieldPassed returns 1 when value in range 485 Success
412 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob calculates cumulative start values 1315 Success
413 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob calculates metrics from billets 1366 Success
414 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob creates new campaign 1090 Success
415 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob only counts billets in time range 1216 Success
416 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob preserves offset values 1302 Success
417 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob skips deleted carriers 967 Success
418 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob skips inactive passes 951 Success
419 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob updates existing campaign 994 Success

Raw Output Tail

|344|[M2_SwapRollsetsRolls_Tests].[test Error: BottomRollId1 is required]                                                                                       |    463|Success|
|345|[M2_SwapRollsetsRolls_Tests].[test Error: BottomRollId2 does not exist in Rolls table]                                                                     |    454|Success|
|346|[M2_SwapRollsetsRolls_Tests].[test Error: BottomRollId2 required when RollsetId2 provided]                                                                 |    788|Success|
|347|[M2_SwapRollsetsRolls_Tests].[test Error: Cannot swap rollsets in different sections]                                                                      |    673|Success|
|348|[M2_SwapRollsetsRolls_Tests].[test Error: Cannot swap rollsets in different stands]                                                                        |   1051|Success|
|349|[M2_SwapRollsetsRolls_Tests].[test Error: Rollset1 must have both rolls assigned]                                                                          |    482|Success|
|350|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId1 and RollsetId2 must be different]                                                                     |    755|Success|
|351|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId1 does not exist]                                                                                       |    438|Success|
|352|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId1 is required]                                                                                          |    386|Success|
|353|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId2 does not exist]                                                                                       |    483|Success|
|354|[M2_SwapRollsetsRolls_Tests].[test Error: TopRollId1 does not exist in Rolls table]                                                                        |    549|Success|
|355|[M2_SwapRollsetsRolls_Tests].[test Error: TopRollId1 is required]                                                                                          |    467|Success|
|356|[M2_SwapRollsetsRolls_Tests].[test Error: TopRollId2 required when RollsetId2 provided]                                                                    |    410|Success|
|357|[M2_SwapRollsetsRolls_Tests].[test Success: Create new rollset with specified rolls]                                                                       |   1033|Success|
|358|[M2_SwapRollsetsRolls_Tests].[test Success: Swap rolls between two rollsets]                                                                               |   1221|Success|
|359|[M2_SwapRollsetsRolls_Tests].[test Success: Use any valid rolls]                                                                                           |   1418|Success|
|360|[M2_SyncCampaignsToProductionEvents_Tests].[test CASCADE: Chain stops at matched barrier]                                                                  |    949|Success|
|361|[M2_SyncCampaignsToProductionEvents_Tests].[test CASCADE: Matched events are immovable barriers]                                                           |    729|Success|
|362|[M2_SyncCampaignsToProductionEvents_Tests].[test CASCADE: Updating IsMatched prevents future cascade]                                                      |    981|Success|
|363|[M2_SyncCampaignsToProductionEvents_Tests].[test COMPLEX: Multiple section changes create multiple events]                                                 |   1117|Success|
|364|[M2_SyncCampaignsToProductionEvents_Tests].[test COMPLEX: ResolveEventCascade called for each group]                                                       |   1134|Success|
|365|[M2_SyncCampaignsToProductionEvents_Tests].[test COMPLEX: StatusCode K preserved when updating]                                                            |    629|Success|
|366|[M2_SyncCampaignsToProductionEvents_Tests].[test EDGE CASE: Date filters work correctly]                                                                   |    979|Success|
|367|[M2_SyncCampaignsToProductionEvents_Tests].[test EDGE CASE: Empty campaigns table produces no events]                                                      |    580|Success|
|368|[M2_SyncCampaignsToProductionEvents_Tests].[test EDGE CASE: No campaigns returns gracefully]                                                               |    545|Success|
|369|[M2_SyncCampaignsToProductionEvents_Tests].[test FIXED: Dilates unmatched but not matched]                                                                 |    686|Success|
|370|[M2_SyncCampaignsToProductionEvents_Tests].[test FIXED: Does not dilate matched events]                                                                    |    655|Success|
|371|[M2_SyncCampaignsToProductionEvents_Tests].[test GROUPING: Consecutive campaigns same section create single event]                                         |    901|Success|
|372|[M2_SyncCampaignsToProductionEvents_Tests].[test GROUPING: Section change creates separate events]                                                         |   1035|Success|
|373|[M2_SyncCampaignsToProductionEvents_Tests].[test GROUPING: Single campaign creates single event]                                                           |   1228|Success|
|374|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Last group updates status P to I when matched]                                                 |   1028|Success|
|375|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Matched event updated with IsMatched = 1]                                                      |   1038|Success|
|376|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: New event created with IsMatched = 1]                                                          |   1008|Success|
|377|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Prevents duplicate events on resync]                                                           |    789|Success|
|378|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Unmatched future event matched in next run]                                                    |    895|Success|
|379|[M2_SyncCampaignsToProductionEvents_Tests].[test LINKING: All campaigns in group linked to same event]                                                     |   1550|Success|
|380|[M2_SyncCampaignsToProductionEvents_Tests].[test LINKING: EventId preserved for already-linked campaigns]                                                  |   1061|Success|
|381|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Closest match selected when multiple exist]                                                     |    951|Success|
|382|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Event expands with campaigns]                                                                   |    881|Success|
|383|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Event times adjust to campaigns]                                                                |   1345|Success|
|384|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Exact temporal overlap matches event]                                                           |   1062|Success|
|385|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Fallback respects section]                                                                      |    900|Success|
|386|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Fallback to next unmatched same section]                                                        |   1131|Success|
|387|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Inactive events not matched]                                                                    |    964|Success|
|388|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: New event created when no match found]                                                          |    904|Success|
|389|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Proximity window 48h enforced]                                                                  |    981|Success|
|390|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Proximity window matches close event]                                                           |    900|Success|
|391|[M2_SyncCampaignsToProductionEvents_Tests].[test SMART START: First sync detects production run start]                                                     |    836|Success|
|392|[M2_SyncCampaignsToProductionEvents_Tests].[test SMART START: Mixed matched and unmatched timeline]                                                        |   1102|Success|
|393|[M2_SyncCampaignsToProductionEvents_Tests].[test SMART START: Second sync continues from last matched event]                                               |   1203|Success|
|394|[M2_SyncCampaignsToProductionEvents_Tests].[test TIMESTAMPS: Continuity maintained between groups]                                                         |   1128|Success|
|395|[M2_SyncCampaignsToProductionEvents_Tests].[test TIMESTAMPS: FirstBilletTimestamp is first campaign start]                                                 |    874|Success|
|396|[M2_SyncCampaignsToProductionEvents_Tests].[test TIMESTAMPS: TrackedEnd is last campaign end]                                                              |    743|Success|
|397|[M2_TensileRequirements_Tests].[test CorrectHeatGrades updates GradeId when swv-mes has different grade]                                                   |    408|Success|
|398|[M2_TensileRequirements_Tests].[test Disposition fails if any retest sample fails]                                                                         |    419|Success|
|399|[M2_TensileRequirements_Tests].[test Disposition returns P when all samples pass]                                                                          |    368|Success|
|400|[M2_TensileRequirements_Tests].[test Disposition returns U when any sample fails]                                                                          |    552|Success|
|401|[M2_TensileRequirements_Tests].[test Disposition returns U when one of multiple samples fails]                                                             |    570|Success|
|402|[M2_TensileRequirements_Tests].[test Disposition uses corrected grade after grade correction]                                                              |    422|Success|
|403|[M2_TensileRequirements_Tests].[test Disposition uses latest sequence only - retest supersedes]                                                            |    386|Success|
|404|[M2_TensileRequirements_Tests].[test Disposition uses version effective at report time]                                                                    |    416|Success|
|405|[M2_TensileRequirements_Tests].[test UpsertTensileRequirements creates new version]                                                                        |    585|Success|
|406|[M2_TensileRequirements_Tests].[test UpsertTensileRequirements throws error when EffectiveDate is NULL]                                                    |    566|Success|
|407|[M2_TensileRequirements_Tests].[test UpsertTensileRequirements throws error when Rev is NULL]                                                              |    273|Success|
|408|[M2_TensileRequirements_Tests].[test UpsertTensileRequirements throws error when Rows is invalid JSON]                                                     |    639|Success|
|409|[M2_TensileRequirements_Tests].[test YieldPassed returns 0 when value above max]                                                                           |    544|Success|
|410|[M2_TensileRequirements_Tests].[test YieldPassed returns 0 when value below min]                                                                           |    476|Success|
|411|[M2_TensileRequirements_Tests].[test YieldPassed returns 1 when value in range]                                                                            |    485|Success|
|412|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob calculates cumulative start values]                                                           |   1315|Success|
|413|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob calculates metrics from billets]                                                              |   1366|Success|
|414|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob creates new campaign]                                                                         |   1090|Success|
|415|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob only counts billets in time range]                                                            |   1216|Success|
|416|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob preserves offset values]                                                                      |   1302|Success|
|417|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob skips deleted carriers]                                                                       |    967|Success|
|418|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob skips inactive passes]                                                                        |    951|Success|
|419|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob updates existing campaign]                                                                    |    994|Success|
--------------------------------------------------------------------------------------------
Test Case Summary: 419 test case(s) executed, 419 succeeded, 0 skipped, 0 failed, 0 errored.
--------------------------------------------------------------------------------------------