diff --git a/app/gui/integration-test/project-view/graphRenderNodes.spec.ts b/app/gui/integration-test/project-view/graphRenderNodes.spec.ts
index 3e21fcf4cd73..4cf5aa80de1b 100644
--- a/app/gui/integration-test/project-view/graphRenderNodes.spec.ts
+++ b/app/gui/integration-test/project-view/graphRenderNodes.spec.ts
@@ -1,6 +1,7 @@
import { test } from '@playwright/test'
import * as actions from './actions'
import { expect } from './customExpect'
+import { mockExpressionUpdate } from './expressionUpdates'
import * as locate from './locate'
test('graph can open and render nodes', async ({ page }) => {
@@ -16,3 +17,12 @@ test('graph can open and render nodes', async ({ page }) => {
const finalNode = locate.graphNodeByBinding(page, 'final')
await expect(finalNode.locator('.WidgetToken')).toHaveText(['Main', '.', 'func1', 'prod'])
})
+
+test('Component icon indicates evaluation in progress', async ({ page }) => {
+ await actions.goToGraph(page)
+
+ const node = locate.graphNodeByBinding(page, 'final')
+ await expect(node.locator('.WidgetIcon .LoadingSpinner')).not.toBeVisible()
+ await mockExpressionUpdate(page, 'final', { payload: { type: 'Pending', progress: 0.1 } })
+ await expect(node.locator('.WidgetIcon .LoadingSpinner')).toBeVisible()
+})
diff --git a/app/gui/src/project-view/components/GraphEditor/ComponentWidgetTree.vue b/app/gui/src/project-view/components/GraphEditor/ComponentWidgetTree.vue
index bd8ca327a577..2fc612b8d766 100644
--- a/app/gui/src/project-view/components/GraphEditor/ComponentWidgetTree.vue
+++ b/app/gui/src/project-view/components/GraphEditor/ComponentWidgetTree.vue
@@ -1,14 +1,14 @@