Conversation
🎨 Storybook: ✅ Built — View Storybook |
📦 Bundle: 5.11 MB gzip 🟢 -174 BDetailsSummary
Category Glance App Entry Points — 22.3 kB (baseline 22.3 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.2 MB (baseline 1.2 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 76.6 kB (baseline 76.6 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 9 added / 9 removed / 2 unchanged Panels & Settings — 484 kB (baseline 484 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 10 added / 10 removed / 12 unchanged User & Accounts — 17.1 kB (baseline 17.1 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 5 added / 5 removed / 2 unchanged Editors & Dialogs — 109 kB (baseline 109 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 2 added / 2 removed UI Components — 60.3 kB (baseline 60.3 kB) • ⚪ 0 BReusable component library chunks
Status: 5 added / 5 removed / 8 unchanged Data & Services — 2.97 MB (baseline 2.97 MB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 13 added / 13 removed / 4 unchanged Utilities & Hooks — 338 kB (baseline 338 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 13 added / 13 removed / 13 unchanged Vendor & Third-Party — 9.8 MB (baseline 9.8 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 8.44 MB (baseline 8.44 MB) • ⚪ 0 BBundles that do not match a named category
Status: 55 added / 55 removed / 79 unchanged ⚡ Performance Report
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-04-02T04:51:34.041Z",
"gitSha": "cbc2069d561ce54a0dba3835e49c7c9441a8a5cc",
"branch": "drjkl/test/the-active-ingredient-is-selenium",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2022.4070000000154,
"styleRecalcs": 8,
"styleRecalcDurationMs": 8.567000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 364.588,
"heapDeltaBytes": 20673628,
"heapUsedBytes": 63774192,
"domNodes": 16,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 18.180999999999997,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-idle",
"durationMs": 2028.8909999999873,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.811000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 350.9,
"heapDeltaBytes": 20642448,
"heapUsedBytes": 63786364,
"domNodes": 18,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 17.158000000000005,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-idle",
"durationMs": 2054.072000000019,
"styleRecalcs": 12,
"styleRecalcDurationMs": 9.905,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 426.28399999999993,
"heapDeltaBytes": 20967884,
"heapUsedBytes": 63884532,
"domNodes": 23,
"jsHeapTotalBytes": 22544384,
"scriptDurationMs": 29.516999999999996,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 2022.812000000016,
"styleRecalcs": 83,
"styleRecalcDurationMs": 46.514,
"layouts": 12,
"layoutDurationMs": 4.132000000000001,
"taskDurationMs": 1056.663,
"heapDeltaBytes": 16528412,
"heapUsedBytes": 60799856,
"domNodes": 65,
"jsHeapTotalBytes": 23330816,
"scriptDurationMs": 143.16,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 2021.0030000000074,
"styleRecalcs": 85,
"styleRecalcDurationMs": 45.968999999999994,
"layouts": 12,
"layoutDurationMs": 3.7960000000000003,
"taskDurationMs": 971.268,
"heapDeltaBytes": 16290432,
"heapUsedBytes": 59130664,
"domNodes": 68,
"jsHeapTotalBytes": 23592960,
"scriptDurationMs": 135.751,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1791.4810000000898,
"styleRecalcs": 75,
"styleRecalcDurationMs": 39.923,
"layouts": 12,
"layoutDurationMs": 3.5530000000000004,
"taskDurationMs": 798.3720000000001,
"heapDeltaBytes": 15752200,
"heapUsedBytes": 58908032,
"domNodes": 59,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 137.974,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1729.5430000000351,
"styleRecalcs": 31,
"styleRecalcDurationMs": 18.531000000000002,
"layouts": 6,
"layoutDurationMs": 0.6479999999999999,
"taskDurationMs": 326.79099999999994,
"heapDeltaBytes": 15509676,
"heapUsedBytes": 66839404,
"domNodes": 77,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 26.881999999999998,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1739.6939999999859,
"styleRecalcs": 33,
"styleRecalcDurationMs": 19.823,
"layouts": 6,
"layoutDurationMs": 0.7160000000000001,
"taskDurationMs": 317.152,
"heapDeltaBytes": 24717820,
"heapUsedBytes": 67105612,
"domNodes": 80,
"jsHeapTotalBytes": 20709376,
"scriptDurationMs": 28.308,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1733.021000000008,
"styleRecalcs": 32,
"styleRecalcDurationMs": 18.82,
"layouts": 6,
"layoutDurationMs": 0.6169999999999999,
"taskDurationMs": 335.23400000000004,
"heapDeltaBytes": 15421496,
"heapUsedBytes": 68207076,
"domNodes": 78,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 28.237,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "dom-widget-clipping",
"durationMs": 584.163999999987,
"styleRecalcs": 13,
"styleRecalcDurationMs": 10.087,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 361.914,
"heapDeltaBytes": -2157664,
"heapUsedBytes": 49628616,
"domNodes": 22,
"jsHeapTotalBytes": 16252928,
"scriptDurationMs": 67.273,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "dom-widget-clipping",
"durationMs": 551.6829999999686,
"styleRecalcs": 13,
"styleRecalcDurationMs": 9.195,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 356.903,
"heapDeltaBytes": -2656856,
"heapUsedBytes": 49161376,
"domNodes": 22,
"jsHeapTotalBytes": 16515072,
"scriptDurationMs": 70.213,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "dom-widget-clipping",
"durationMs": 577.0129999999654,
"styleRecalcs": 14,
"styleRecalcDurationMs": 11.348000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 371.609,
"heapDeltaBytes": 6580592,
"heapUsedBytes": 49056732,
"domNodes": 23,
"jsHeapTotalBytes": 14155776,
"scriptDurationMs": 71.44300000000001,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "large-graph-idle",
"durationMs": 2051.521000000008,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.491,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 547.096,
"heapDeltaBytes": 4800992,
"heapUsedBytes": 55876780,
"domNodes": -257,
"jsHeapTotalBytes": 16707584,
"scriptDurationMs": 105.33,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-idle",
"durationMs": 2052.958999999987,
"styleRecalcs": 11,
"styleRecalcDurationMs": 11.536000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 561.2470000000001,
"heapDeltaBytes": 5790544,
"heapUsedBytes": 56279120,
"domNodes": -255,
"jsHeapTotalBytes": 15921152,
"scriptDurationMs": 105.003,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 2057.1239999999307,
"styleRecalcs": 11,
"styleRecalcDurationMs": 11.75,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 618.259,
"heapDeltaBytes": 4692828,
"heapUsedBytes": 55573776,
"domNodes": -255,
"jsHeapTotalBytes": 16183296,
"scriptDurationMs": 114.097,
"eventListeners": -121,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2100.644999999986,
"styleRecalcs": 69,
"styleRecalcDurationMs": 17.217999999999996,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1085.0040000000001,
"heapDeltaBytes": 16366688,
"heapUsedBytes": 69381996,
"domNodes": -259,
"jsHeapTotalBytes": 18747392,
"scriptDurationMs": 398.36899999999997,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "large-graph-pan",
"durationMs": 2137.6879999999687,
"styleRecalcs": 69,
"styleRecalcDurationMs": 17.276,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1201.731,
"heapDeltaBytes": 18691616,
"heapUsedBytes": 73045840,
"domNodes": -261,
"jsHeapTotalBytes": 18485248,
"scriptDurationMs": 464.97600000000006,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "large-graph-pan",
"durationMs": 2142.1440000000302,
"styleRecalcs": 68,
"styleRecalcDurationMs": 15.905,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1130.0349999999999,
"heapDeltaBytes": 15350108,
"heapUsedBytes": 68922592,
"domNodes": -262,
"jsHeapTotalBytes": 18747392,
"scriptDurationMs": 402.563,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3209.3619999999987,
"styleRecalcs": 67,
"styleRecalcDurationMs": 18.166,
"layouts": 60,
"layoutDurationMs": 7.391,
"taskDurationMs": 1345.479,
"heapDeltaBytes": 10123292,
"heapUsedBytes": 64463648,
"domNodes": -260,
"jsHeapTotalBytes": 15396864,
"scriptDurationMs": 511.964,
"eventListeners": -123,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-zoom",
"durationMs": 3196.860000000015,
"styleRecalcs": 66,
"styleRecalcDurationMs": 17.130000000000003,
"layouts": 60,
"layoutDurationMs": 7.686,
"taskDurationMs": 1351.247,
"heapDeltaBytes": 7607860,
"heapUsedBytes": 62480076,
"domNodes": -262,
"jsHeapTotalBytes": 17756160,
"scriptDurationMs": 501.081,
"eventListeners": -123,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-zoom",
"durationMs": 3184.028000000012,
"styleRecalcs": 65,
"styleRecalcDurationMs": 16.490000000000002,
"layouts": 60,
"layoutDurationMs": 7.465,
"taskDurationMs": 1366.5669999999998,
"heapDeltaBytes": 9626620,
"heapUsedBytes": 64638628,
"domNodes": -266,
"jsHeapTotalBytes": 16183296,
"scriptDurationMs": 504.32200000000006,
"eventListeners": -123,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2011.6090000000213,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.195000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 554.3169999999999,
"heapDeltaBytes": 4063804,
"heapUsedBytes": 56248468,
"domNodes": -262,
"jsHeapTotalBytes": 16445440,
"scriptDurationMs": 103.10699999999999,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2070.112999999992,
"styleRecalcs": 9,
"styleRecalcDurationMs": 10.893,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 578.34,
"heapDeltaBytes": 3941732,
"heapUsedBytes": 57775944,
"domNodes": -262,
"jsHeapTotalBytes": 16027648,
"scriptDurationMs": 103.20499999999998,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "minimap-idle",
"durationMs": 2027.029999999968,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.284,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 623.7660000000001,
"heapDeltaBytes": 4561220,
"heapUsedBytes": 56821360,
"domNodes": -261,
"jsHeapTotalBytes": 15134720,
"scriptDurationMs": 113.15000000000002,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 556.7830000000527,
"styleRecalcs": 48,
"styleRecalcDurationMs": 12.9,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 376.174,
"heapDeltaBytes": 6855844,
"heapUsedBytes": 49673988,
"domNodes": 22,
"jsHeapTotalBytes": 13107200,
"scriptDurationMs": 130.628,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 561.2290000000257,
"styleRecalcs": 48,
"styleRecalcDurationMs": 12.87,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 377.0739999999999,
"heapDeltaBytes": 6250720,
"heapUsedBytes": 49296668,
"domNodes": 22,
"jsHeapTotalBytes": 13893632,
"scriptDurationMs": 132.41699999999997,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.669999999999998,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 553.8799999999355,
"styleRecalcs": 47,
"styleRecalcDurationMs": 11.044,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 366.674,
"heapDeltaBytes": 6189788,
"heapUsedBytes": 49404784,
"domNodes": 20,
"jsHeapTotalBytes": 13631488,
"scriptDurationMs": 126.53099999999998,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "subgraph-idle",
"durationMs": 2004.9980000000005,
"styleRecalcs": 11,
"styleRecalcDurationMs": 11.125000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 371.642,
"heapDeltaBytes": 19947092,
"heapUsedBytes": 63019252,
"domNodes": 23,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 21.182,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2014.6310000000085,
"styleRecalcs": 11,
"styleRecalcDurationMs": 9.864999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 343.106,
"heapDeltaBytes": 19823492,
"heapUsedBytes": 63020092,
"domNodes": 22,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 14.092,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-idle",
"durationMs": 2024.450999999999,
"styleRecalcs": 11,
"styleRecalcDurationMs": 11.801999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 398.98900000000003,
"heapDeltaBytes": 19970884,
"heapUsedBytes": 62739380,
"domNodes": 22,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 23.726999999999997,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1985.7609999999966,
"styleRecalcs": 87,
"styleRecalcDurationMs": 50.837999999999994,
"layouts": 16,
"layoutDurationMs": 4.6,
"taskDurationMs": 912.3809999999999,
"heapDeltaBytes": 11836608,
"heapUsedBytes": 54890964,
"domNodes": 73,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 97.67,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1977.1139999999718,
"styleRecalcs": 84,
"styleRecalcDurationMs": 44.769999999999996,
"layouts": 16,
"layoutDurationMs": 4.308,
"taskDurationMs": 901.1369999999998,
"heapDeltaBytes": 11930500,
"heapUsedBytes": 54940564,
"domNodes": 73,
"jsHeapTotalBytes": 22282240,
"scriptDurationMs": 99.83899999999998,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 2003.2469999999876,
"styleRecalcs": 89,
"styleRecalcDurationMs": 54.733000000000004,
"layouts": 16,
"layoutDurationMs": 5.1610000000000005,
"taskDurationMs": 991.9960000000001,
"heapDeltaBytes": 11890520,
"heapUsedBytes": 54599808,
"domNodes": 75,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 112.077,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "viewport-pan-sweep",
"durationMs": 8167.92300000003,
"styleRecalcs": 250,
"styleRecalcDurationMs": 43.511,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3754.3479999999995,
"heapDeltaBytes": 25576072,
"heapUsedBytes": 76295600,
"domNodes": -257,
"jsHeapTotalBytes": 19271680,
"scriptDurationMs": 1273.007,
"eventListeners": -109,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8245.363999999994,
"styleRecalcs": 251,
"styleRecalcDurationMs": 44.204,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4070.0270000000005,
"heapDeltaBytes": 30849992,
"heapUsedBytes": 81614664,
"domNodes": -257,
"jsHeapTotalBytes": 25563136,
"scriptDurationMs": 1434.882,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8170.799999999986,
"styleRecalcs": 252,
"styleRecalcDurationMs": 45.199000000000005,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3971.647,
"heapDeltaBytes": 29699804,
"heapUsedBytes": 80666928,
"domNodes": -257,
"jsHeapTotalBytes": 21106688,
"scriptDurationMs": 1386.415,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 12337.429000000044,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12327.23,
"heapDeltaBytes": -31639848,
"heapUsedBytes": 165904156,
"domNodes": -8331,
"jsHeapTotalBytes": 27353088,
"scriptDurationMs": 605.196,
"eventListeners": -16470,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333237,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 11873.733000000015,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 11861.613,
"heapDeltaBytes": -28000312,
"heapUsedBytes": 166712756,
"domNodes": -8331,
"jsHeapTotalBytes": 28925952,
"scriptDurationMs": 573.716,
"eventListeners": -16464,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.220000000000073,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12500.139999999989,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12489.386999999999,
"heapDeltaBytes": -27732684,
"heapUsedBytes": 167212144,
"domNodes": -8331,
"jsHeapTotalBytes": 28663808,
"scriptDurationMs": 633.027,
"eventListeners": -16466,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "vue-large-graph-pan",
"durationMs": 14668.229999999994,
"styleRecalcs": 67,
"styleRecalcDurationMs": 14.450999999999992,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14644.27,
"heapDeltaBytes": -22910748,
"heapUsedBytes": 170801376,
"domNodes": -8331,
"jsHeapTotalBytes": 24907776,
"scriptDurationMs": 925.0830000000001,
"eventListeners": -16457,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.77333333333336,
"p95FrameDurationMs": 33.20000000000073
},
{
"name": "vue-large-graph-pan",
"durationMs": 14578.983999999991,
"styleRecalcs": 67,
"styleRecalcDurationMs": 14.676999999999996,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14557.000000000002,
"heapDeltaBytes": -8137748,
"heapUsedBytes": 185412400,
"domNodes": -8333,
"jsHeapTotalBytes": 24645632,
"scriptDurationMs": 889.524,
"eventListeners": -16458,
"totalBlockingTimeMs": 89,
"frameDurationMs": 17.219999999999953,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 14744.291999999972,
"styleRecalcs": 68,
"styleRecalcDurationMs": 15.012999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14722.193999999998,
"heapDeltaBytes": -57500496,
"heapUsedBytes": 148624188,
"domNodes": -8331,
"jsHeapTotalBytes": -2007040,
"scriptDurationMs": 920.104,
"eventListeners": -16486,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.220000000000073,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 448.3809999999835,
"styleRecalcs": 18,
"styleRecalcDurationMs": 27.341,
"layouts": 5,
"layoutDurationMs": 1.6630000000000003,
"taskDurationMs": 133.948,
"heapDeltaBytes": 4744524,
"heapUsedBytes": 49615332,
"domNodes": 167,
"jsHeapTotalBytes": 262144,
"scriptDurationMs": 29.928000000000004,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "workflow-execution",
"durationMs": 450.3190000000359,
"styleRecalcs": 17,
"styleRecalcDurationMs": 26.238,
"layouts": 5,
"layoutDurationMs": 1.4649999999999999,
"taskDurationMs": 130.495,
"heapDeltaBytes": 4510508,
"heapUsedBytes": 49197132,
"domNodes": 156,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 33.208,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "workflow-execution",
"durationMs": 129.35600000002978,
"styleRecalcs": 11,
"styleRecalcDurationMs": 21.828999999999997,
"layouts": 5,
"layoutDurationMs": 1.838,
"taskDurationMs": 106.28900000000002,
"heapDeltaBytes": 2843164,
"heapUsedBytes": 47551844,
"domNodes": 145,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 29.122000000000003,
"eventListeners": 39,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.800000000000182
}
]
} |
Amp-Thread-ID: https://ampcode.com/threads/T-019d4c4c-4dbc-7120-9f90-f03f19d78a63 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d4c4c-4dbc-7120-9f90-f03f19d78a63 Co-authored-by: Amp <amp@ampcode.com>
📝 WalkthroughWalkthroughTests were updated to use retrying/polling assertions and additional synchronization; one test replaces a hardcoded canvas click coordinate with a dynamic lookup; a drag-and-drop helper now waits for upload; imports in Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
🎭 Playwright: ❌ 911 passed, 1 failed · 2 flaky❌ Failed Tests📊 Browser Reports
|
- proxyWidgets stale-read (3 tests): wrap assertions in toPass()/expect.poll() - changeTracker undo race: use expect.poll() for async undo assertions - rerouteNode timeout: replace hardcoded 8px click target with dynamic renderedPaths lookup - contextMenu image timeout: wait for img visible before interacting - widget animated webp: add waitForUpload: true to drag-and-drop - zoomControls input race: use fill() instead of pressSequentially Amp-Thread-ID: https://ampcode.com/threads/T-019d4c4c-4dbc-7120-9f90-f03f19d78a63 Co-authored-by: Amp <amp@ampcode.com>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
browser_tests/tests/vueNodes/interactions/node/contextMenu.spec.ts (1)
225-228: Use a preview-specific readiness wait instead of a generic node image selector.Line 226 waits on the first
[data-node-id] img, which can resolve to a non-preview image and still leave image actions flaky. Please target the actual preview image and poll until it has a usablesrc.Proposed change
- await comfyPage.page - .locator('[data-node-id] img') - .first() - .waitFor({ state: 'visible' }) + const imagePreview = comfyPage.page.locator('.image-preview img').first() + await expect(imagePreview).toBeVisible() + await expect.poll(async () => imagePreview.getAttribute('src')).toBeTruthy()As per coding guidelines: “Follow Playwright best practices as documented in
@docs/guidance/playwright.md.”🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@browser_tests/tests/vueNodes/interactions/node/contextMenu.spec.ts` around lines 225 - 228, The current wait uses comfyPage.page.locator('[data-node-id] img').first().waitFor(...) which can match non-preview images; change it to target the actual preview image locator (e.g., the preview image element inside the node preview) and poll its src until it's a usable value rather than just visible. Replace the generic selector with the preview-specific selector used elsewhere in the test suite (use the preview image locator) and loop/await until locator.getAttribute('src') returns a non-empty/valid URL (not a placeholder like data:), using Playwright polling (e.g., waitForFunction or repeated getAttribute checks) instead of first().waitFor to ensure the preview image is ready before proceeding.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@browser_tests/tests/vueNodes/interactions/node/contextMenu.spec.ts`:
- Around line 225-228: The current wait uses
comfyPage.page.locator('[data-node-id] img').first().waitFor(...) which can
match non-preview images; change it to target the actual preview image locator
(e.g., the preview image element inside the node preview) and poll its src until
it's a usable value rather than just visible. Replace the generic selector with
the preview-specific selector used elsewhere in the test suite (use the preview
image locator) and loop/await until locator.getAttribute('src') returns a
non-empty/valid URL (not a placeholder like data:), using Playwright polling
(e.g., waitForFunction or repeated getAttribute checks) instead of
first().waitFor to ensure the preview image is ready before proceeding.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 0376b44f-0ac8-4c77-9e84-0d159ead9e34
📒 Files selected for processing (8)
browser_tests/helpers/builderTestUtils.tsbrowser_tests/tests/changeTracker.spec.tsbrowser_tests/tests/rerouteNode.spec.tsbrowser_tests/tests/subgraph/subgraphPromotion.spec.tsbrowser_tests/tests/subgraph/subgraphPromotionDom.spec.tsbrowser_tests/tests/vueNodes/interactions/node/contextMenu.spec.tsbrowser_tests/tests/widget.spec.tsbrowser_tests/tests/zoomControls.spec.ts
Stabilize flaky Playwright tests by improving test reliability.
This PR aims to identify and fix flaky e2e tests.
┆Issue is synchronized with this Notion page by Unito