test: add E2E coverage for credit balance and top-up conversions - #11953
test: add E2E coverage for credit balance and top-up conversions#11953christian-byrne wants to merge 6 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThe top-up dialogs now expose stable locators for credit amounts and increment controls. Browser tests verify initial values, preset conversion, and bidirectional updates for dollar and credit amounts in standard and deep-link flows. ChangesTop-up amount synchronization
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 inconclusive)
✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
No action needed — this PR intentionally targets |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #11953 +/- ##
==========================================
- Coverage 79.36% 78.77% -0.60%
==========================================
Files 1804 1803 -1
Lines 118450 109115 -9335
Branches 35723 33408 -2315
==========================================
- Hits 94009 85953 -8056
+ Misses 23858 22675 -1183
+ Partials 583 487 -96
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 222 files with indirect coverage changes 🚀 New features to boost your workflow:
|
📦 Bundle Size
⚡ Performance Report
No baseline found — showing absolute values.
Raw data{
"timestamp": "2026-05-11T19:48:15.120Z",
"gitSha": "0bc46cd4d1d9a951f1c7a2ffe9126dbe4db3b089",
"branch": "glary/credits-e2e-tests",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2001.8329999999764,
"styleRecalcs": 8,
"styleRecalcDurationMs": 7.099999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 334.106,
"heapDeltaBytes": 22820172,
"heapUsedBytes": 71346056,
"domNodes": 16,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 14.921,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 2015.704000000028,
"styleRecalcs": 12,
"styleRecalcDurationMs": 10.850999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 365.818,
"heapDeltaBytes": 1697636,
"heapUsedBytes": 67120132,
"domNodes": 24,
"jsHeapTotalBytes": 20279296,
"scriptDurationMs": 17.931,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-idle",
"durationMs": 2018.2510000000775,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.03,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 356.41900000000004,
"heapDeltaBytes": 22756212,
"heapUsedBytes": 71550036,
"domNodes": 18,
"jsHeapTotalBytes": 14680064,
"scriptDurationMs": 17.536,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1928.3929999999998,
"styleRecalcs": 75,
"styleRecalcDurationMs": 40.901,
"layouts": 12,
"layoutDurationMs": 3.6430000000000002,
"taskDurationMs": 925.826,
"heapDeltaBytes": -16933184,
"heapUsedBytes": 51379124,
"domNodes": -261,
"jsHeapTotalBytes": 18833408,
"scriptDurationMs": 140.124,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1813.8790000000427,
"styleRecalcs": 73,
"styleRecalcDurationMs": 36.26,
"layouts": 12,
"layoutDurationMs": 3.536,
"taskDurationMs": 781.745,
"heapDeltaBytes": -802556,
"heapUsedBytes": 47795920,
"domNodes": -263,
"jsHeapTotalBytes": 16642048,
"scriptDurationMs": 126.18000000000002,
"eventListeners": -131,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1833.7679999999636,
"styleRecalcs": 72,
"styleRecalcDurationMs": 35.607,
"layouts": 12,
"layoutDurationMs": 3.3629999999999995,
"taskDurationMs": 795.679,
"heapDeltaBytes": 7268808,
"heapUsedBytes": 55540272,
"domNodes": -266,
"jsHeapTotalBytes": 15855616,
"scriptDurationMs": 129.835,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1737.1519999999805,
"styleRecalcs": 31,
"styleRecalcDurationMs": 16.597,
"layouts": 6,
"layoutDurationMs": 0.6240000000000002,
"taskDurationMs": 291.09999999999997,
"heapDeltaBytes": 195620,
"heapUsedBytes": 48798600,
"domNodes": 77,
"jsHeapTotalBytes": 14680064,
"scriptDurationMs": 18.666,
"eventListeners": 21,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1750.2740000000472,
"styleRecalcs": 31,
"styleRecalcDurationMs": 17.46,
"layouts": 6,
"layoutDurationMs": 0.559,
"taskDurationMs": 296.15099999999995,
"heapDeltaBytes": 160472,
"heapUsedBytes": 48513756,
"domNodes": 75,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 18.578,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1753.8769999999886,
"styleRecalcs": 31,
"styleRecalcDurationMs": 17.714000000000002,
"layouts": 6,
"layoutDurationMs": 0.5969999999999999,
"taskDurationMs": 313.358,
"heapDeltaBytes": 185748,
"heapUsedBytes": 48847980,
"domNodes": 77,
"jsHeapTotalBytes": 15204352,
"scriptDurationMs": 22.614,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "dom-widget-clipping",
"durationMs": 528.5609999999963,
"styleRecalcs": 11,
"styleRecalcDurationMs": 8.114,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 325.4170000000001,
"heapDeltaBytes": 8707964,
"heapUsedBytes": 57363704,
"domNodes": 18,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 58.611999999999995,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.669999999999998,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "dom-widget-clipping",
"durationMs": 561.2759999999639,
"styleRecalcs": 12,
"styleRecalcDurationMs": 9.234,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 334.048,
"heapDeltaBytes": 9046092,
"heapUsedBytes": 57427192,
"domNodes": 19,
"jsHeapTotalBytes": 15990784,
"scriptDurationMs": 59.513999999999996,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.669999999999998,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 571.1909999999989,
"styleRecalcs": 11,
"styleRecalcDurationMs": 9.101999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 350.369,
"heapDeltaBytes": 8784660,
"heapUsedBytes": 57340044,
"domNodes": 18,
"jsHeapTotalBytes": 15728640,
"scriptDurationMs": 59.617999999999995,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "large-graph-idle",
"durationMs": 2018.417999999997,
"styleRecalcs": 8,
"styleRecalcDurationMs": 7.9830000000000005,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 538.4849999999999,
"heapDeltaBytes": 3415336,
"heapUsedBytes": 61670664,
"domNodes": -264,
"jsHeapTotalBytes": 290816,
"scriptDurationMs": 94.25900000000001,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-idle",
"durationMs": 2025.9949999999662,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.655,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 537.539,
"heapDeltaBytes": 8618032,
"heapUsedBytes": 66729808,
"domNodes": -261,
"jsHeapTotalBytes": 552960,
"scriptDurationMs": 90.763,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 2023.5290000000532,
"styleRecalcs": 8,
"styleRecalcDurationMs": 8.049000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 556.392,
"heapDeltaBytes": 12769320,
"heapUsedBytes": 71003096,
"domNodes": -264,
"jsHeapTotalBytes": 290816,
"scriptDurationMs": 104.46500000000002,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2126.1790000000074,
"styleRecalcs": 69,
"styleRecalcDurationMs": 18.184,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1088.385,
"heapDeltaBytes": 3764012,
"heapUsedBytes": 61572568,
"domNodes": -261,
"jsHeapTotalBytes": 1282048,
"scriptDurationMs": 405.10699999999997,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2135.791999999981,
"styleRecalcs": 69,
"styleRecalcDurationMs": 18.456999999999997,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1053.242,
"heapDeltaBytes": -1082124,
"heapUsedBytes": 58047728,
"domNodes": -265,
"jsHeapTotalBytes": 757760,
"scriptDurationMs": 395.159,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-pan",
"durationMs": 2129.2339999999967,
"styleRecalcs": 68,
"styleRecalcDurationMs": 17.964,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1125.064,
"heapDeltaBytes": -5548008,
"heapUsedBytes": 53582040,
"domNodes": -265,
"jsHeapTotalBytes": 6057984,
"scriptDurationMs": 404.78,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-zoom",
"durationMs": 3113.291000000004,
"styleRecalcs": 66,
"styleRecalcDurationMs": 19.479,
"layouts": 60,
"layoutDurationMs": 7.268,
"taskDurationMs": 1295.63,
"heapDeltaBytes": 8585756,
"heapUsedBytes": 69213372,
"domNodes": -266,
"jsHeapTotalBytes": 4485120,
"scriptDurationMs": 486.60900000000004,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3135.6819999999743,
"styleRecalcs": 65,
"styleRecalcDurationMs": 17.987000000000002,
"layouts": 60,
"layoutDurationMs": 7.536000000000001,
"taskDurationMs": 1349.9950000000001,
"heapDeltaBytes": 8473652,
"heapUsedBytes": 69512244,
"domNodes": -268,
"jsHeapTotalBytes": 4485120,
"scriptDurationMs": 507.8830000000001,
"eventListeners": -123,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3113.697000000002,
"styleRecalcs": 64,
"styleRecalcDurationMs": 17.717999999999996,
"layouts": 60,
"layoutDurationMs": 7.773,
"taskDurationMs": 1359.4409999999998,
"heapDeltaBytes": 14657744,
"heapUsedBytes": 75674960,
"domNodes": -270,
"jsHeapTotalBytes": -233472,
"scriptDurationMs": 500.29099999999994,
"eventListeners": -123,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2016.795000000002,
"styleRecalcs": 7,
"styleRecalcDurationMs": 6.835000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 554.0369999999999,
"heapDeltaBytes": 7808588,
"heapUsedBytes": 68002740,
"domNodes": -266,
"jsHeapTotalBytes": 552960,
"scriptDurationMs": 93.263,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2055.5609999999547,
"styleRecalcs": 8,
"styleRecalcDurationMs": 7.453999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 525.908,
"heapDeltaBytes": 7175392,
"heapUsedBytes": 67092992,
"domNodes": -262,
"jsHeapTotalBytes": 552960,
"scriptDurationMs": 90.869,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2038.08099999992,
"styleRecalcs": 8,
"styleRecalcDurationMs": 7.986,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 550.294,
"heapDeltaBytes": 2504516,
"heapUsedBytes": 62691284,
"domNodes": -267,
"jsHeapTotalBytes": 5271552,
"scriptDurationMs": 102.138,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 545.7289999999944,
"styleRecalcs": 46,
"styleRecalcDurationMs": 10.405999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 343.42,
"heapDeltaBytes": 8859896,
"heapUsedBytes": 57508548,
"domNodes": 18,
"jsHeapTotalBytes": 15990784,
"scriptDurationMs": 117.381,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.669999999999998,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 523.0169999999816,
"styleRecalcs": 46,
"styleRecalcDurationMs": 9.899000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 338.32700000000006,
"heapDeltaBytes": 9111900,
"heapUsedBytes": 57962124,
"domNodes": 18,
"jsHeapTotalBytes": 15728640,
"scriptDurationMs": 114.803,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 578.6269999999831,
"styleRecalcs": 46,
"styleRecalcDurationMs": 10.994,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 357.993,
"heapDeltaBytes": 9110588,
"heapUsedBytes": 57500032,
"domNodes": 17,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 123.583,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2002.6699999999948,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.042,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 331.20200000000006,
"heapDeltaBytes": 22992056,
"heapUsedBytes": 72526180,
"domNodes": 18,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 13.684000000000001,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-idle",
"durationMs": 2005.9679999999958,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.408999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 336.951,
"heapDeltaBytes": 22514756,
"heapUsedBytes": 70910612,
"domNodes": 18,
"jsHeapTotalBytes": 14680064,
"scriptDurationMs": 12.875999999999998,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 2001.8529999999828,
"styleRecalcs": 8,
"styleRecalcDurationMs": 8.225,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 343.572,
"heapDeltaBytes": 22496172,
"heapUsedBytes": 71260292,
"domNodes": 16,
"jsHeapTotalBytes": 14680064,
"scriptDurationMs": 14.838000000000001,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1721.681999999987,
"styleRecalcs": 75,
"styleRecalcDurationMs": 36.648,
"layouts": 16,
"layoutDurationMs": 4.53,
"taskDurationMs": 707.389,
"heapDeltaBytes": -2264780,
"heapUsedBytes": 46104056,
"domNodes": -262,
"jsHeapTotalBytes": 15069184,
"scriptDurationMs": 92.82300000000001,
"eventListeners": -131,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1740.63799999999,
"styleRecalcs": 76,
"styleRecalcDurationMs": 38.63399999999999,
"layouts": 16,
"layoutDurationMs": 4.712000000000001,
"taskDurationMs": 725.586,
"heapDeltaBytes": 1395512,
"heapUsedBytes": 49917072,
"domNodes": -262,
"jsHeapTotalBytes": 15069184,
"scriptDurationMs": 95.27,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1716.4060000000063,
"styleRecalcs": 76,
"styleRecalcDurationMs": 38.84799999999999,
"layouts": 16,
"layoutDurationMs": 4.372,
"taskDurationMs": 729.0020000000001,
"heapDeltaBytes": -3018196,
"heapUsedBytes": 45583456,
"domNodes": -264,
"jsHeapTotalBytes": 15331328,
"scriptDurationMs": 96.53,
"eventListeners": -131,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "viewport-pan-sweep",
"durationMs": 8131.4800000000105,
"styleRecalcs": 250,
"styleRecalcDurationMs": 52.606,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3618.153,
"heapDeltaBytes": 18145928,
"heapUsedBytes": 75860396,
"domNodes": -262,
"jsHeapTotalBytes": 1544192,
"scriptDurationMs": 1279.587,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "viewport-pan-sweep",
"durationMs": 8166.646000000014,
"styleRecalcs": 249,
"styleRecalcDurationMs": 50.94899999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3609.842,
"heapDeltaBytes": 9757568,
"heapUsedBytes": 67971596,
"domNodes": -262,
"jsHeapTotalBytes": 7311360,
"scriptDurationMs": 1261.3229999999999,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8150.855999999976,
"styleRecalcs": 250,
"styleRecalcDurationMs": 53.440000000000005,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3798.583,
"heapDeltaBytes": 15338424,
"heapUsedBytes": 72260196,
"domNodes": -261,
"jsHeapTotalBytes": 3117056,
"scriptDurationMs": 1279.186,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 12007.932999999979,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 11999.129,
"heapDeltaBytes": -31244444,
"heapUsedBytes": 172428200,
"domNodes": -8331,
"jsHeapTotalBytes": -8065024,
"scriptDurationMs": 604.7510000000001,
"eventListeners": -16462,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 11854.294000000038,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 11843.876000000002,
"heapDeltaBytes": -38238380,
"heapUsedBytes": 172694252,
"domNodes": -8331,
"jsHeapTotalBytes": 26800128,
"scriptDurationMs": 603.301,
"eventListeners": -16462,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12394.363999999996,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12384.088,
"heapDeltaBytes": -38794596,
"heapUsedBytes": 172475052,
"domNodes": -8331,
"jsHeapTotalBytes": 26800128,
"scriptDurationMs": 632.465,
"eventListeners": -16462,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.776666666666763,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-pan",
"durationMs": 14286.037000000022,
"styleRecalcs": 66,
"styleRecalcDurationMs": 16.574000000000034,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14265.036000000002,
"heapDeltaBytes": -31258600,
"heapUsedBytes": 164270552,
"domNodes": -8331,
"jsHeapTotalBytes": 2158592,
"scriptDurationMs": 911.331,
"eventListeners": -16456,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.779999999999927,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 14380.37600000007,
"styleRecalcs": 67,
"styleRecalcDurationMs": 16.490000000000006,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14353.278000000002,
"heapDeltaBytes": -25118156,
"heapUsedBytes": 170271900,
"domNodes": -8331,
"jsHeapTotalBytes": 26013696,
"scriptDurationMs": 910.695,
"eventListeners": -16462,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "vue-large-graph-pan",
"durationMs": 14684.503999999946,
"styleRecalcs": 68,
"styleRecalcDurationMs": 18.27200000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14662.335,
"heapDeltaBytes": -59255952,
"heapUsedBytes": 153491376,
"domNodes": -8331,
"jsHeapTotalBytes": 585728,
"scriptDurationMs": 980.627,
"eventListeners": -16490,
"totalBlockingTimeMs": 6,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 464.41899999996394,
"styleRecalcs": 16,
"styleRecalcDurationMs": 21.437,
"layouts": 5,
"layoutDurationMs": 1.552,
"taskDurationMs": 126.49199999999999,
"heapDeltaBytes": 5404544,
"heapUsedBytes": 55432716,
"domNodes": 167,
"jsHeapTotalBytes": 524288,
"scriptDurationMs": 28.075000000000003,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "workflow-execution",
"durationMs": 462.14199999997163,
"styleRecalcs": 16,
"styleRecalcDurationMs": 21.131,
"layouts": 5,
"layoutDurationMs": 1.204,
"taskDurationMs": 125.67900000000002,
"heapDeltaBytes": -15039128,
"heapUsedBytes": 52515332,
"domNodes": 154,
"jsHeapTotalBytes": 4288512,
"scriptDurationMs": 23.901,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "workflow-execution",
"durationMs": 450.40800000003856,
"styleRecalcs": 16,
"styleRecalcDurationMs": 21.453,
"layouts": 5,
"layoutDurationMs": 1.284,
"taskDurationMs": 111.88500000000002,
"heapDeltaBytes": 5024548,
"heapUsedBytes": 54921680,
"domNodes": 154,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 22.968999999999998,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.799999999999727
}
]
}🎭 Playwright: ✅ 1790 passed, 0 failed · 2 flaky📊 Browser Reports
🎨 Storybook: ✅ Built — View Storybook📦 Bundle: 8.25 MB gzip 🟢 -78 BDetailsSummary
Category Glance App Entry Points — 3.64 kB (baseline 3.64 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.35 MB (baseline 1.35 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed / 1 unchanged Views & Navigation — 124 kB (baseline 124 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 13 added / 13 removed / 4 unchanged Panels & Settings — 540 kB (baseline 540 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 10 added / 10 removed / 16 unchanged User & Accounts — 27 kB (baseline 27 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 6 added / 6 removed / 4 unchanged Editors & Dialogs — 124 kB (baseline 124 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 6 added / 6 removed / 1 unchanged UI Components — 71 kB (baseline 71 kB) • ⚪ 0 BReusable component library chunks
Status: 6 added / 6 removed / 8 unchanged Data & Services — 3.48 MB (baseline 3.48 MB) • 🔴 +76 BStores, services, APIs, and repositories
Status: 14 added / 14 removed / 3 unchanged Utilities & Hooks — 386 kB (baseline 386 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 16 added / 16 removed / 20 unchanged Vendor & Third-Party — 15.7 MB (baseline 15.7 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 12.8 MB (baseline 12.8 MB) • ⚪ 0 BBundles that do not match a named category
Status: 67 added / 67 removed / 214 unchanged ⚡ Performance Report
Show regressions
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-08-07T00:43:50.920Z",
"gitSha": "9303fcfb599f25d29f551d7e9668a711ded37232",
"branch": "glary/credits-e2e-tests",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2073.7719999999626,
"styleRecalcs": 10,
"styleRecalcDurationMs": 6.672999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 546.636,
"heapDeltaBytes": 5351744,
"heapUsedBytes": 69387484,
"domNodes": 20,
"jsHeapTotalBytes": 24903680,
"scriptDurationMs": 16.085,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 1999.9070000000074,
"styleRecalcs": 9,
"styleRecalcDurationMs": 5.6659999999999995,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 418.50899999999996,
"heapDeltaBytes": 5698284,
"heapUsedBytes": 69759004,
"domNodes": 18,
"jsHeapTotalBytes": 24379392,
"scriptDurationMs": 14.373999999999999,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1758.8010000000054,
"styleRecalcs": 72,
"styleRecalcDurationMs": 27.679000000000002,
"layouts": 12,
"layoutDurationMs": 3.0080000000000005,
"taskDurationMs": 758.283,
"heapDeltaBytes": -11741504,
"heapUsedBytes": 52212932,
"domNodes": -278,
"jsHeapTotalBytes": 24358912,
"scriptDurationMs": 93.10499999999999,
"eventListeners": -149,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1776.4009999999644,
"styleRecalcs": 73,
"styleRecalcDurationMs": 29.849999999999998,
"layouts": 12,
"layoutDurationMs": 3.2429999999999994,
"taskDurationMs": 736.344,
"heapDeltaBytes": -653908,
"heapUsedBytes": 63336712,
"domNodes": 55,
"jsHeapTotalBytes": 26214400,
"scriptDurationMs": 100.137,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1725.7260000000088,
"styleRecalcs": 31,
"styleRecalcDurationMs": 13.793,
"layouts": 6,
"layoutDurationMs": 0.6049999999999999,
"taskDurationMs": 338.69000000000005,
"heapDeltaBytes": 8523216,
"heapUsedBytes": 72797536,
"domNodes": 78,
"jsHeapTotalBytes": 24903680,
"scriptDurationMs": 16.206000000000003,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1740.63000000001,
"styleRecalcs": 31,
"styleRecalcDurationMs": 15.213,
"layouts": 6,
"layoutDurationMs": 0.694,
"taskDurationMs": 339.091,
"heapDeltaBytes": 8596176,
"heapUsedBytes": 72668844,
"domNodes": 79,
"jsHeapTotalBytes": 24641536,
"scriptDurationMs": 18.891,
"eventListeners": 21,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "dom-widget-clipping",
"durationMs": 525.148999999999,
"styleRecalcs": 12,
"styleRecalcDurationMs": 6.279,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 310.368,
"heapDeltaBytes": -11214596,
"heapUsedBytes": 53065092,
"domNodes": 20,
"jsHeapTotalBytes": 25952256,
"scriptDurationMs": 44.319,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66666666666665,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "dom-widget-clipping",
"durationMs": 546.3510000000724,
"styleRecalcs": 11,
"styleRecalcDurationMs": 5.732999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 336.6940000000001,
"heapDeltaBytes": -11073220,
"heapUsedBytes": 53160820,
"domNodes": 18,
"jsHeapTotalBytes": 25165824,
"scriptDurationMs": 50.717999999999996,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 2027.6619999999639,
"styleRecalcs": 10,
"styleRecalcDurationMs": 6.381999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 611.7429999999999,
"heapDeltaBytes": 6762736,
"heapUsedBytes": 67142912,
"domNodes": -282,
"jsHeapTotalBytes": 3776512,
"scriptDurationMs": 77.485,
"eventListeners": -149,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 2036.9120000000294,
"styleRecalcs": 10,
"styleRecalcDurationMs": 6.892000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 600.6629999999999,
"heapDeltaBytes": 7960468,
"heapUsedBytes": 67688444,
"domNodes": -281,
"jsHeapTotalBytes": 3514368,
"scriptDurationMs": 77.27300000000001,
"eventListeners": -149,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2090.7230000000254,
"styleRecalcs": 68,
"styleRecalcDurationMs": 11.065000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1067.8780000000002,
"heapDeltaBytes": -5096916,
"heapUsedBytes": 55732572,
"domNodes": -284,
"jsHeapTotalBytes": 5873664,
"scriptDurationMs": 331.429,
"eventListeners": -179,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2108.296999999993,
"styleRecalcs": 68,
"styleRecalcDurationMs": 12.637000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1120.003,
"heapDeltaBytes": 1822264,
"heapUsedBytes": 62700872,
"domNodes": -284,
"jsHeapTotalBytes": 5279744,
"scriptDurationMs": 356.89300000000003,
"eventListeners": -147,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3085.1350000000366,
"styleRecalcs": 66,
"styleRecalcDurationMs": 13.888000000000002,
"layouts": 60,
"layoutDurationMs": 7.258,
"taskDurationMs": 1225.537,
"heapDeltaBytes": 21631280,
"heapUsedBytes": 86271944,
"domNodes": 14,
"jsHeapTotalBytes": 7864320,
"scriptDurationMs": 396.17,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3117.894999999976,
"styleRecalcs": 65,
"styleRecalcDurationMs": 13.780999999999999,
"layouts": 60,
"layoutDurationMs": 7.609,
"taskDurationMs": 1270.731,
"heapDeltaBytes": -6871308,
"heapUsedBytes": 55236400,
"domNodes": -287,
"jsHeapTotalBytes": 6135808,
"scriptDurationMs": 399.817,
"eventListeners": -153,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2045.9750000000554,
"styleRecalcs": 9,
"styleRecalcDurationMs": 5.920000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 592.8960000000001,
"heapDeltaBytes": 7790272,
"heapUsedBytes": 68657532,
"domNodes": -283,
"jsHeapTotalBytes": 2727936,
"scriptDurationMs": 75.531,
"eventListeners": -179,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2009.636999999998,
"styleRecalcs": 10,
"styleRecalcDurationMs": 6.105000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 595.845,
"heapDeltaBytes": 6494568,
"heapUsedBytes": 66757132,
"domNodes": -282,
"jsHeapTotalBytes": 3252224,
"scriptDurationMs": 72.19,
"eventListeners": -149,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 558.1919999999627,
"styleRecalcs": 47,
"styleRecalcDurationMs": 8.582999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 358.133,
"heapDeltaBytes": -10579508,
"heapUsedBytes": 53622116,
"domNodes": 20,
"jsHeapTotalBytes": 25952256,
"scriptDurationMs": 104.571,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 560.1100000000088,
"styleRecalcs": 47,
"styleRecalcDurationMs": 8.679,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 356.96000000000004,
"heapDeltaBytes": -10788472,
"heapUsedBytes": 53410044,
"domNodes": 20,
"jsHeapTotalBytes": 25952256,
"scriptDurationMs": 103.42200000000001,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66666666666665,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 1999.3650000000116,
"styleRecalcs": 9,
"styleRecalcDurationMs": 5.823,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 405.959,
"heapDeltaBytes": 5440904,
"heapUsedBytes": 69641204,
"domNodes": 18,
"jsHeapTotalBytes": 24903680,
"scriptDurationMs": 12.279000000000002,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2004.4469999999137,
"styleRecalcs": 10,
"styleRecalcDurationMs": 6.968,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 435.011,
"heapDeltaBytes": 5148360,
"heapUsedBytes": 69266080,
"domNodes": 20,
"jsHeapTotalBytes": 25165824,
"scriptDurationMs": 12.427,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1713.9389999999821,
"styleRecalcs": 76,
"styleRecalcDurationMs": 29.636000000000003,
"layouts": 16,
"layoutDurationMs": 3.8729999999999998,
"taskDurationMs": 708.413,
"heapDeltaBytes": -16868276,
"heapUsedBytes": 47184964,
"domNodes": -280,
"jsHeapTotalBytes": 23572480,
"scriptDurationMs": 71.494,
"eventListeners": -153,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000007,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1709.8150000000487,
"styleRecalcs": 75,
"styleRecalcDurationMs": 29.886000000000003,
"layouts": 16,
"layoutDurationMs": 3.6060000000000003,
"taskDurationMs": 670.5980000000001,
"heapDeltaBytes": -3891796,
"heapUsedBytes": 60401460,
"domNodes": 61,
"jsHeapTotalBytes": 24903680,
"scriptDurationMs": 71.97200000000001,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-transition-enter",
"durationMs": 1216.179000000011,
"styleRecalcs": 18,
"styleRecalcDurationMs": 25.871999999999993,
"layouts": 14,
"layoutDurationMs": 9.645,
"taskDurationMs": 793.62,
"heapDeltaBytes": 30787828,
"heapUsedBytes": 99155032,
"domNodes": 13673,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 27.99599999999999,
"eventListeners": 2373,
"totalBlockingTimeMs": 121,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "viewport-pan-sweep",
"durationMs": 8147.650999999996,
"styleRecalcs": 249,
"styleRecalcDurationMs": 32.842,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3849.8639999999996,
"heapDeltaBytes": 11396528,
"heapUsedBytes": 70818764,
"domNodes": -281,
"jsHeapTotalBytes": 4755456,
"scriptDurationMs": 1131.3490000000002,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8149.292999999943,
"styleRecalcs": 250,
"styleRecalcDurationMs": 36.278,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3829.304,
"heapDeltaBytes": 9972356,
"heapUsedBytes": 69311500,
"domNodes": -283,
"jsHeapTotalBytes": 4231168,
"scriptDurationMs": 1104.8760000000002,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 13508.020999999986,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 13487.771,
"heapDeltaBytes": -41906520,
"heapUsedBytes": 165941216,
"domNodes": -8312,
"jsHeapTotalBytes": -8851456,
"scriptDurationMs": 476.84700000000004,
"eventListeners": -16391,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.219999999999953,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12959.89300000008,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12943.176,
"heapDeltaBytes": -40198040,
"heapUsedBytes": 165756424,
"domNodes": -8312,
"jsHeapTotalBytes": -9904128,
"scriptDurationMs": 466.45000000000005,
"eventListeners": -16389,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 16201.855000000023,
"styleRecalcs": 92,
"styleRecalcDurationMs": 14.085999999999988,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 16147.466999999999,
"heapDeltaBytes": -28378764,
"heapUsedBytes": 177233812,
"domNodes": -8312,
"jsHeapTotalBytes": -9449472,
"scriptDurationMs": 768.875,
"eventListeners": -16387,
"totalBlockingTimeMs": 10,
"frameDurationMs": 17.220000000000073,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 15769.854999999894,
"styleRecalcs": 78,
"styleRecalcDurationMs": 13.174999999999992,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 15742.582,
"heapDeltaBytes": -51037268,
"heapUsedBytes": 157332688,
"domNodes": -8312,
"jsHeapTotalBytes": -8855552,
"scriptDurationMs": 757.346,
"eventListeners": -16387,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.776666666666642,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "workflow-execution",
"durationMs": 455.08299999994506,
"styleRecalcs": 15,
"styleRecalcDurationMs": 21.026999999999997,
"layouts": 4,
"layoutDurationMs": 1.381,
"taskDurationMs": 123.69999999999999,
"heapDeltaBytes": 5327604,
"heapUsedBytes": 67793088,
"domNodes": 134,
"jsHeapTotalBytes": 5505024,
"scriptDurationMs": 10.792000000000002,
"eventListeners": 97,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 477.1769999999833,
"styleRecalcs": 14,
"styleRecalcDurationMs": 16.897000000000002,
"layouts": 3,
"layoutDurationMs": 0.591,
"taskDurationMs": 102.93699999999998,
"heapDeltaBytes": 5100468,
"heapUsedBytes": 68294724,
"domNodes": 123,
"jsHeapTotalBytes": 4980736,
"scriptDurationMs": 8.025999999999998,
"eventListeners": 97,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
}
]
} |
christian-byrne
left a comment
There was a problem hiding this comment.
Tests are failing on cloud e2e test suite. Here's a snippet of the logs which you can find full details for in the actions logs:
Error Context: test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud/error-context.md
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Test timeout of 15000ms exceeded.
Error: locator.click: Test timeout of 15000ms exceeded.
Call log:
- waiting for getByTestId('current-user-popover').getByTestId('add-credits-button')
- locator resolved to <button data-testid="add-credits-button" class="relative inline-flex items-center justify-center gap-2 cursor-pointer touch-manipulation whitespace-nowrap appearance-none border-none font-medium font-inter transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([width]):not([height])]:size-4 [&_svg]:shrink-0 bg-secondary-background hover:bg-secondary-background-hover h-6 rounded-sm…>…</button>
- attempting click action
2 × waiting for element to be visible, enabled and stable
- element is not stable
- retrying click action
- waiting 20ms
- waiting for element to be visible, enabled and stable
- element is not stable
2 × retrying click action
- waiting 100ms
- waiting for element to be visible, enabled and stable
- element is visible, enabled and stable
- scrolling into view if needed
- done scrolling
- <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
9 × retrying click action
- waiting 500ms
- waiting for element to be visible, enabled and stable
- element is visible, enabled and stable
- scrolling into view if needed
- done scrolling
- <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
- retrying click action
- waiting 500ms
142 | async function openTopUpDialog(page: Page): Promise<void> {
143 | const popover = await openUserPopover(page)
> 144 | await popover.getByTestId(TestIds.credits.addCreditsButton).click()
| ^
145 | await expect(
146 | page.getByTestId(TestIds.credits.topUpPayAmount)
147 | ).toBeVisible()
at openTopUpDialog (/__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:144:67)
at /__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:222:9
Error Context: test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry1/error-context.md
attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry1/trace.zip
Usage:
pnpm exec playwright show-trace test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry1/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Test timeout of 15000ms exceeded.
Error: locator.click: Test timeout of 15000ms exceeded.
Call log:
- attempting click action
2 × waiting for element to be visible, enabled and stable
- element is not stable
- retrying click action
- waiting 20ms
- waiting for element to be visible, enabled and stable
- element is not stable
2 × retrying click action
- waiting 100ms
- waiting for element to be visible, enabled and stable
- element is visible, enabled and stable
- scrolling into view if needed
- done scrolling
- <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
13 × retrying click action
- waiting 500ms
- waiting for element to be visible, enabled and stable
- element is visible, enabled and stable
- scrolling into view if needed
- done scrolling
- <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
- retrying click action
- waiting 500ms
142 | async function openTopUpDialog(page: Page): Promise<void> {
143 | const popover = await openUserPopover(page)
> 144 | await popover.getByTestId(TestIds.credits.addCreditsButton).click()
| ^
145 | await expect(
146 | page.getByTestId(TestIds.credits.topUpPayAmount)
147 | ).toBeVisible()
at openTopUpDialog (/__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:144:67)
at /__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:222:9
Error Context: test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry3/error-context.md
5 failed
[cloud] › browser_tests/tests/credits.spec.ts:150:5 › Credits — top-up dialog conversions › default $50 selection renders 10,550 credits in You Get @cloud
[cloud] › browser_tests/tests/credits.spec.ts:161:5 › Credits — top-up dialog conversions › $10 preset updates You Get to usdToCredits(10) = 2,110 @cloud
[cloud] › browser_tests/tests/credits.spec.ts:181:5 › Credits — top-up dialog conversions › $100 preset updates You Get to usdToCredits(100) = 21,100 @cloud
[cloud] › browser_tests/tests/credits.spec.ts:201:5 › Credits — top-up dialog conversions › incrementing You Pay updates You Get via usdToCredits @cloud
[cloud] › browser_tests/tests/credits.spec.ts:219:5 › Credits — top-up dialog conversions › incrementing You Get updates You Pay via creditsToUsd @cloud
46 passed (4.2m)
|
Thanks for the trace. The 5 dialog cases were failing because a PrimeVue toast ( Fix pushed (9b4612c): added |
6949044 to
ee0efca
Compare
Amp-Thread-ID: https://ampcode.com/threads/T-019fca7b-d37a-748f-8aa4-85cbe9d63dc2 Co-authored-by: Amp <amp@ampcode.com>
9b4612c to
4ee789a
Compare
dante01yoon
left a comment
There was a problem hiding this comment.
The selector scoping and conversion expectations are sound, and the refreshed CI/CodeRabbit results are green. One coverage gap remains: the new E2E cases currently exercise only the legacy dialog, despite the PR’s stated coverage of both billing implementations.
Amp-Thread-ID: https://ampcode.com/threads/T-019fcaa4-ca84-767f-aa8e-81c9c93a5c24 Co-authored-by: Amp <amp@ampcode.com>
dante01yoon
left a comment
There was a problem hiding this comment.
Re-reviewed at c8a593e. The prior workspace coverage blocker is resolved: the @cloud team-owner boot activates a team workspace, billing routing selects type === 'workspace', and the deep-link flow renders TopUpCreditsDialogContentWorkspace with the real FormattedNumberStepper and conversion functions. The test verifies the default $50 / 10,550 state and drives the real credits increment control to $55 / 11,605. Legacy conversion coverage remains intact and distinct. No new blocking findings.
dante01yoon
left a comment
There was a problem hiding this comment.
Re-reviewed at 9ad945d after updating to current main. The billing conversion coverage is unchanged; the follow-up only supplies the newly required max_seats and occupied_seats fields in existing billing mocks. Browser typecheck, lint/format, unit tests, cloud E2E, all Chromium shards, and the full required CI set pass. No blocking findings.
Pull request was closed
# Conflicts: # browser_tests/fixtures/data/cloudWorkspace.ts # browser_tests/tests/dialogs/pricingTableDeepLink.spec.ts
7690a80
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
|
Handoff note — moved to @Jaewon under FE-1585. Recommendation: Finish if it is cheap, otherwise Hold. It qualifies under FE-1585's "materially improves regression detection" carve-out, and it is the first billing spec that asserts conversion behaviour on a non-cloud build ( One blocker to note: its earlier approval was dismissed when I resolved a conflict against |
Summary
Refreshes the billing E2E coverage on current
main, retaining only the missing top-up conversion journeys after the billing fixture and UI refactors.Changes
maininstead of carrying the obsolete stacked subscription fixture. Extends the establishedTopUpCreditsDialogpage object and legacy dialog spec to verify the default$50 → 10,550conversion, the$10 → 2,110preset, and bidirectional$55 ↔ 11,605stepper updates.@cloudteam-owner deep-link E2E. Its cloud boot enables team workspaces, activates a team workspace, mocks workspace billing, rendersTopUpCreditsDialogContentWorkspace, and exercises the real credit stepper and$50 ↔ 11,605conversion through the shared selectors.glary/subscription-e2e-tests; its custom fixture, subscription cases, profile balance case, and selectors have since landed or been superseded by current billing-facade tests. That left a conflicting 900-line diff whose only valuable uncovered behavior was the top-up conversion controls.Review Focus
top-up-get-amounttest id exists on both active dialog implementations.type === 'workspace'; it is not merely a cloud tag running legacy billing.Test Plan
pnpm typecheck— passed (commit hook)pnpm typecheck:browser— passedpnpm exec vitest run src/components/dialog/content/TopUpCreditsDialogContentLegacy.test.ts src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.test.ts— 20 passedtopUpCreditsDialog.spec.tsandtopUpDeepLink.spec.ts— 11 tests found, including the cloud workspace conversion case