Files
ComfyUI_frontend/browser_tests/shardConfig.generated.ts
snomiao 9d4f484a60 [feat] optimize Playwright test sharding for balanced execution times
- Implement weighted test distribution algorithm to balance shard execution times
- Create automated shard optimization script that analyzes test complexity
- Remove unnecessary sharding for fast test suites (mobile-chrome, chromium-0.5x, chromium-2x)
- Update GitHub workflow to use optimized shard configuration
- Add comprehensive sharding documentation

The previous naive sharding caused shard 5 to take 9 minutes while others completed in 2-6 minutes.
This was due to interaction.spec.ts containing 61 tests with 81 screenshot comparisons.

New approach uses weighted distribution based on:
- Number of tests per file
- Screenshot comparison count
- Test complexity and historical execution time

Results:
- Achieved ~4.5% imbalance (vs previous ~80%)
- All chromium shards now complete in 3-4 minutes
- Total CI time reduced from 9 minutes to ~4 minutes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-02 16:16:54 +00:00

72 lines
1.7 KiB
TypeScript

/**
* Auto-generated shard configuration for balanced test distribution
* Generated on: 2025-09-02T16:09:27.236Z
*/
export const OPTIMIZED_SHARDS = [
[
"interaction.spec.ts",
"selectionToolbox.spec.ts",
"chatHistory.spec.ts",
"litegraphEvent.spec.ts",
"versionMismatchWarnings.spec.ts"
],
[
"subgraph.spec.ts",
"sidebar/workflows.spec.ts",
"primitiveNode.spec.ts",
"bottomPanelShortcuts.spec.ts",
"nodeBadge.spec.ts",
"execution.spec.ts",
"rerouteNode.spec.ts",
"changeTracker.spec.ts",
"keybindings.spec.ts",
"userSelectView.spec.ts"
],
[
"widget.spec.ts",
"sidebar/nodeLibrary.spec.ts",
"nodeHelp.spec.ts",
"templates.spec.ts",
"featureFlags.spec.ts",
"copyPaste.spec.ts",
"loadWorkflowInMedia.spec.ts",
"actionbar.spec.ts",
"commands.spec.ts",
"minimap.spec.ts",
"workflowTabThumbnail.spec.ts"
],
[
"nodeSearchBox.spec.ts",
"rightClickMenu.spec.ts",
"colorPalette.spec.ts",
"useSettingSearch.spec.ts",
"graphCanvasMenu.spec.ts",
"domWidget.spec.ts",
"menu.spec.ts",
"backgroundImageUpload.spec.ts",
"customIcons.spec.ts",
"releaseNotifications.spec.ts"
],
[
"dialog.spec.ts",
"groupNode.spec.ts",
"nodeDisplay.spec.ts",
"remoteWidgets.spec.ts",
"extensionAPI.spec.ts",
"sidebar/queue.spec.ts",
"noteNode.spec.ts",
"browserTabTitle.spec.ts",
"graph.spec.ts",
"subgraph-rename-dialog.spec.ts"
]
]
export function getShardTests(shardIndex: number): string[] {
return OPTIMIZED_SHARDS[shardIndex - 1] || []
}
export function getShardPattern(shardIndex: number): string[] {
return getShardTests(shardIndex).map(test => `**/${test}`)
}