Skip to content

Conversation

@cstuncsik
Copy link
Contributor

Summary

Related Linear tickets, Github issues, and Community forum posts

Review / Merge checklist

  • PR title and summary are descriptive. (conventions)
  • Docs updated or follow-up ticket created.
  • Tests included.
  • PR Labeled with release/backport (if the PR is an urgent fix that needs to be backported)

@bundlemon
Copy link

bundlemon bot commented Dec 5, 2025

BundleMon

Unchanged files (2)
Status Path Size Limits
WASM Dependencies
tree-sitter-bash.wasm
181.26KB -
WASM Dependencies
tree-sitter.wasm
74.47KB -

No change in files bundle size

Groups updated (2)
Status Path Size Limits
**/*.js
11.44MB (+157.88KB +1.37%) -
**/*.css
233.47KB (+12.7KB +5.75%) -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@codecov
Copy link

codecov bot commented Dec 5, 2025

Codecov Report

❌ Patch coverage is 34.07407% with 178 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ystem/src/components/N8nTooltip/Tooltip.stories.ts 0.56% 176 Missing ⚠️
...esign-system/src/components/N8nTooltip/Tooltip.vue 97.56% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@n8n-assistant n8n-assistant bot added the n8n team Authored by the n8n team label Dec 5, 2025
@currents-bot
Copy link

currents-bot bot commented Dec 5, 2025

E2E Tests: n8n tests failed after 11m 19s

🟢 570 · 🔴 3 · ⚪️ 43

View Run Details

Run Details

  • Project: n8n

  • Groups: 2

  • Framework: Playwright

  • Run Status: Failed

  • Commit: 37fa003

  • Spec files: 129

  • Overall tests: 616

  • Duration: 11m 19s

  • Parallelization: 9

Failed Spec Files

Spec File Failures
tests/ui/app-config/nps-survey.spec.ts 2
tests/ui/ai/chat-session.spec.ts 1

Groups

GroupId Results Spec Files Progress
multi-main:ui 🟢 516 · 🔴 3 · ⚪️ 43 120 / 120
multi-main:ui:isolated 🟢 54 · 🔴 0 · ⚪️ 0 9 / 9


This message was posted automatically by currents.dev | Integration Settings

@blacksmith-sh

This comment has been minimized.

@blacksmith-sh
Copy link

blacksmith-sh bot commented Dec 5, 2025

Found 3 test failures on Blacksmith runners:

Failures

Test View Logs
tests/ui/ai/chat-session.spec.ts/
Chat session ID reset › should update session ID in node output when session is reset
View Logs
tests/ui/app-config/nps-survey.spec.ts/
NPS Survey › allows user to ignore survey 3 times before stopping to show until 6 month
s later
View Logs
tests/ui/app-config/nps-survey.spec.ts/
NPS Survey › shows nps survey to recently activated user and can submit feedback
View Logs

Fix in Cursor

@cstuncsik cstuncsik marked this pull request as ready for review December 5, 2025 19:47
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 issues found across 46 files

Prompt for AI agents (all 5 issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="packages/frontend/@n8n/design-system/src/components/N8nTooltip/Tooltip.vue">

<violation number="1" location="packages/frontend/@n8n/design-system/src/components/N8nTooltip/Tooltip.vue:78">
P2: `N8nTooltip` drops all consumer attributes/listeners because `$attrs` is no longer forwarded while `inheritAttrs: false` is still set. Forward `$attrs` to `TooltipRoot` so props like `append-to`, `trigger`, and custom classes keep working.</violation>
</file>

<file name="packages/frontend/@n8n/design-system/src/components/N8nTooltip/Tooltip.test.ts">

<violation number="1" location="packages/frontend/@n8n/design-system/src/components/N8nTooltip/Tooltip.test.ts:355">
P2: The `buttons` test no longer verifies that the provided click listeners fire—`buttonSpy` is never exercised—so the test can’t catch regressions where button clicks stop working. Add a `userEvent.click` and assert the spy was called to cover the behavior.</violation>
</file>

<file name="packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.test.ts">

<violation number="1" location="packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.test.ts:43">
P2: This test no longer checks that the tooltip is absent before hovering, so a regression where the tooltip renders immediately would go undetected. Add an assertion that no `[data-dismissable-layer]` exists prior to `userEvent.hover` to keep the “only on hover” contract under test.</violation>

<violation number="2" location="packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.test.ts:58">
P2: This test also lost its pre-hover absence check, so it no longer verifies that the binary tooltip only appears after hovering the disabled button. Add a DOM assertion before the hover to keep the test aligned with its purpose.</violation>
</file>

<file name="packages/frontend/@n8n/design-system/src/v2/components/Tooltip/Tooltip.test.ts">

<violation number="1" location="packages/frontend/@n8n/design-system/src/v2/components/Tooltip/Tooltip.test.ts:17">
P1: Rule violated: **Tests**

Removing the entire Tooltip test suite violates the Community PR Guidelines §2 testing requirement—core Tooltip behavior now lacks any automated coverage after the refactor. Please replace the deleted tests with equivalent coverage for the new tooltip implementation.</violation>
</file>

Reply to cubic to teach it or ask questions. Re-run a review with @cubic-dev-ai review this PR

:class="$style.buttons"
:style="{ justifyContent: props.justifyButtons }"
<TooltipProvider>
<TooltipRoot
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: N8nTooltip drops all consumer attributes/listeners because $attrs is no longer forwarded while inheritAttrs: false is still set. Forward $attrs to TooltipRoot so props like append-to, trigger, and custom classes keep working.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/frontend/@n8n/design-system/src/components/N8nTooltip/Tooltip.vue, line 78:

<comment>`N8nTooltip` drops all consumer attributes/listeners because `$attrs` is no longer forwarded while `inheritAttrs: false` is still set. Forward `$attrs` to `TooltipRoot` so props like `append-to`, `trigger`, and custom classes keep working.</comment>

<file context>
@@ -1,77 +1,173 @@
-				:class=&quot;$style.buttons&quot;
-				:style=&quot;{ justifyContent: props.justifyButtons }&quot;
+	&lt;TooltipProvider&gt;
+		&lt;TooltipRoot
+			:disabled=&quot;disabled&quot;
+			:delay-duration=&quot;showAfter&quot;
</file context>
Suggested change
<TooltipRoot
<TooltipRoot
v-bind="$attrs"
Fix with Cubic

expect(document.querySelector('[data-dismissable-layer]')).toBeInTheDocument();
});

const button = document.querySelector('[data-dismissable-layer] button');
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The buttons test no longer verifies that the provided click listeners fire—buttonSpy is never exercised—so the test can’t catch regressions where button clicks stop working. Add a userEvent.click and assert the spy was called to cover the behavior.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/frontend/@n8n/design-system/src/components/N8nTooltip/Tooltip.test.ts, line 355:

<comment>The `buttons` test no longer verifies that the provided click listeners fire—`buttonSpy` is never exercised—so the test can’t catch regressions where button clicks stop working. Add a `userEvent.click` and assert the spy was called to cover the behavior.</comment>

<file context>
@@ -1,40 +1,474 @@
+				expect(document.querySelector(&#39;[data-dismissable-layer]&#39;)).toBeInTheDocument();
+			});
+
+			const button = document.querySelector(&#39;[data-dismissable-layer] button&#39;);
+			expect(button).toBeInTheDocument();
+			expect(button).toHaveTextContent(&#39;Button 1&#39;);
</file context>
Suggested change
const button = document.querySelector('[data-dismissable-layer] button');
const button = document.querySelector('[data-dismissable-layer] button') as HTMLElement;
expect(button).toBeInTheDocument();
expect(button).toHaveTextContent('Button 1');
await userEvent.click(button);
expect(buttonSpy).toHaveBeenCalled();
Fix with Cubic


it('shows binary data tooltip content only on disabled button hover', async () => {
const { getByRole, queryByRole, emitted } = renderComponent({
const { getByRole, emitted, baseElement } = renderComponent({
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This test also lost its pre-hover absence check, so it no longer verifies that the binary tooltip only appears after hovering the disabled button. Add a DOM assertion before the hover to keep the test aligned with its purpose.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.test.ts, line 58:

<comment>This test also lost its pre-hover absence check, so it no longer verifies that the binary tooltip only appears after hovering the disabled button. Add a DOM assertion before the hover to keep the test aligned with its purpose.</comment>

<file context>
@@ -40,22 +40,22 @@ describe(&#39;RunDataPinButton.vue&#39;, () =&gt; {
 
 	it(&#39;shows binary data tooltip content only on disabled button hover&#39;, async () =&gt; {
-		const { getByRole, queryByRole, emitted } = renderComponent({
+		const { getByRole, emitted, baseElement } = renderComponent({
 			props: {
 				tooltipContentsVisibility: {
</file context>
Suggested change
const { getByRole, emitted, baseElement } = renderComponent({
const { getByRole, emitted, baseElement } = renderComponent({
props: {
tooltipContentsVisibility: {
binaryDataTooltipContent: true,
pinDataDiscoveryTooltipContent: false,
},
disabled: true,
},
});
expect(baseElement.ownerDocument.querySelector('[data-dismissable-layer]')).not.toBeInTheDocument();
Fix with Cubic

const { getByRole, queryByRole, emitted } = renderComponent();

expect(queryByRole('tooltip')).not.toBeInTheDocument();
const { getByRole, emitted, baseElement } = renderComponent();
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This test no longer checks that the tooltip is absent before hovering, so a regression where the tooltip renders immediately would go undetected. Add an assertion that no [data-dismissable-layer] exists prior to userEvent.hover to keep the “only on hover” contract under test.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.test.ts, line 43:

<comment>This test no longer checks that the tooltip is absent before hovering, so a regression where the tooltip renders immediately would go undetected. Add an assertion that no `[data-dismissable-layer]` exists prior to `userEvent.hover` to keep the “only on hover” contract under test.</comment>

<file context>
@@ -40,22 +40,22 @@ describe(&#39;RunDataPinButton.vue&#39;, () =&gt; {
-		const { getByRole, queryByRole, emitted } = renderComponent();
-
-		expect(queryByRole(&#39;tooltip&#39;)).not.toBeInTheDocument();
+		const { getByRole, emitted, baseElement } = renderComponent();
 
 		expect(getByRole(&#39;button&#39;)).toBeEnabled();
</file context>
Suggested change
const { getByRole, emitted, baseElement } = renderComponent();
const { getByRole, emitted, baseElement } = renderComponent();
expect(baseElement.ownerDocument.querySelector('[data-dismissable-layer]')).not.toBeInTheDocument();
Fix with Cubic

return { tooltip };
}

describe('v2/components/Tooltip', () => {
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Rule violated: Tests

Removing the entire Tooltip test suite violates the Community PR Guidelines §2 testing requirement—core Tooltip behavior now lacks any automated coverage after the refactor. Please replace the deleted tests with equivalent coverage for the new tooltip implementation.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/frontend/@n8n/design-system/src/v2/components/Tooltip/Tooltip.test.ts, line 17:

<comment>Removing the entire Tooltip test suite violates the Community PR Guidelines §2 testing requirement—core Tooltip behavior now lacks any automated coverage after the refactor. Please replace the deleted tests with equivalent coverage for the new tooltip implementation.</comment>

<file context>
@@ -1,384 +0,0 @@
-import userEvent from &#39;@testing-library/user-event&#39;;
-import { render, waitFor } from &#39;@testing-library/vue&#39;;
-
-import Tooltip from &#39;./Tooltip.vue&#39;;
-
-async function getTooltipContent(_trigger?: Element | null) {
-	const tooltip = await waitFor(() =&gt; {
-		// Reka UI tooltip content has data-dismissable-layer attribute
-		const el = document.querySelector(&#39;[data-dismissable-layer]&#39;);
</file context>
Fix with Cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

n8n team Authored by the n8n team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants