Spun out of daily-failure triage #1361 (run 31163810520, 2026-08-07).
Upstream: not filed
Symptom
a full custom component built from code exposes its declared interface failed its first attempt waiting on the custom component's code-editor button, then passed on retry — a flake, recurrent under the same signature on 2026-08-05 and 2026-08-07.
| Spec (line) |
Waits for |
Signature |
tests/tests-automations/regression/core-components/full-custom-component.spec.ts:66 ("a full custom component built from code exposes its declared interface") |
getByTestId('code-button-modal').last() |
Error: expect(locator).toBeVisible() failed |
Why these failures are one cause
Single test, single signature, matched by normalizeSignature() across both dailies — the dataset reports recurrence.same_signature: true over 2026-08-05 and 2026-08-07, which are non-adjacent. No grouping argument is being made beyond that.
Preliminary read (descriptive — NOT a verdict)
This surfaced on a mass-failure day — 8 hard failures against the guard threshold of 5, so daily-stable.yml tripped the mass-failure guard and auto-removed @stable from nothing. The run also carried a confirmed backend outage (108 s on shard 1, 09:07:57→09:09:46 UTC). The guard governs hard failures only and carries no exemption for the flake criterion, so this was quarantined exactly as it would have been on a clean day.
Descriptively: the wait is on code-button-modal becoming visible after a custom component is added to the canvas, and it recovered on the very next attempt both times — which is consistent with the node not having finished rendering when the assertion started, but equally with a genuine intermittent in the add-component path. Nothing here distinguishes the two yet. Both recorded occurrences fall on days the mass-failure guard tripped (2026-08-05: 24 hard failures; 2026-08-07: 8), which is a confound worth holding onto rather than a cause.
Investigation directive
Product first. (a) On the current nightly, add a custom component repeatedly with --retries=0 and measure how often the code button renders inside the 10 s budget — establish a rate before touching the spec. (b) If the button is genuinely late rather than absent, find a deterministic observable for "the custom component finished mounting" and wait on that instead of extending the timeout. (c) Rule out a load-dependent read: both occurrences are on saturated days, so reproduce once on a quiet instance and once under parallel load before concluding the spec is fragile.
Deliverables (Done when)
Flake signal
This test is confirmed recurrent (dailies 2026-08-05, 2026-08-07). As prevention it was quarantined at triage — @stable removed and test.fixme added — so it stops running in every context (daily, PR impacted-specs gate, full suite) until this issue is worked:
tests/tests-automations/regression/core-components/full-custom-component.spec.ts (test at line 66)
Lifting the quarantine after the fix (remove test.fixme + restore @stable) is a deliverable of this issue.
Spun out of daily-failure triage #1361 (run 31163810520, 2026-08-07).
Upstream: not filed
Symptom
a full custom component built from code exposes its declared interfacefailed its first attempt waiting on the custom component's code-editor button, then passed on retry — a flake, recurrent under the same signature on 2026-08-05 and 2026-08-07.tests/tests-automations/regression/core-components/full-custom-component.spec.ts:66("a full custom component built from code exposes its declared interface")getByTestId('code-button-modal').last()Error: expect(locator).toBeVisible() failedWhy these failures are one cause
Single test, single signature, matched by
normalizeSignature()across both dailies — the dataset reportsrecurrence.same_signature: trueover 2026-08-05 and 2026-08-07, which are non-adjacent. No grouping argument is being made beyond that.Preliminary read (descriptive — NOT a verdict)
This surfaced on a mass-failure day — 8 hard failures against the guard threshold of 5, so
daily-stable.ymltripped the mass-failure guard and auto-removed@stablefrom nothing. The run also carried a confirmed backend outage (108 s on shard 1, 09:07:57→09:09:46 UTC). The guard governs hard failures only and carries no exemption for the flake criterion, so this was quarantined exactly as it would have been on a clean day.Descriptively: the wait is on
code-button-modalbecoming visible after a custom component is added to the canvas, and it recovered on the very next attempt both times — which is consistent with the node not having finished rendering when the assertion started, but equally with a genuine intermittent in the add-component path. Nothing here distinguishes the two yet. Both recorded occurrences fall on days the mass-failure guard tripped (2026-08-05: 24 hard failures; 2026-08-07: 8), which is a confound worth holding onto rather than a cause.Investigation directive
Product first. (a) On the current nightly, add a custom component repeatedly with
--retries=0and measure how often the code button renders inside the 10 s budget — establish a rate before touching the spec. (b) If the button is genuinely late rather than absent, find a deterministic observable for "the custom component finished mounting" and wait on that instead of extending the timeout. (c) Rule out a load-dependent read: both occurrences are on saturated days, so reproduce once on a quiet instance and once under parallel load before concluding the spec is fragile.Deliverables (Done when)
--retries=0runs), fixing waits/flow as needed.test.fixmeand restore@stable, re-validated perCONTRIBUTING.md. (Nothing to lift if nothing was quarantined.)langflowai/langflow-nightly:latest(or therelease-1.x.xbranch), is re-validated there, and@stableis restored — not on a test-side mute.Flake signal
This test is confirmed recurrent (dailies 2026-08-05, 2026-08-07). As prevention it was quarantined at triage —
@stableremoved andtest.fixmeadded — so it stops running in every context (daily, PR impacted-specs gate, full suite) until this issue is worked:tests/tests-automations/regression/core-components/full-custom-component.spec.ts(test at line 66)Lifting the quarantine after the fix (remove
test.fixme+ restore@stable) is a deliverable of this issue.