Skip to content

ci(electron): Test Electron Framework permanently red on main since #606 — stale chat-app assertions #1204

@itomek

Description

@itomek

Why this matters

The Test Electron Framework job has been red on every PR that triggers it since PR #606 merged. The most recent green run on main is from 2026-05-08 — every dependabot bump or contributor change under src/gaia/electron/**, src/gaia/apps/*/webui/**, src/gaia/agents/emr/dashboard/electron/**, or tests/electron/** now lands on red CI, forcing every reviewer to manually decide "is this red mine?" before approving. That's exactly the wrong default for a CI signal.

Surfaced while reviewing #1194 (Electron 35→42 EMR bump). The same two failures also appear on #1195, #1196, and #1199 — i.e. unrelated to any of those PRs.

Failing assertions

1. test_electron_chat_app.js.empty-chat* selectors no longer exist

tests/electron/test_electron_chat_app.js:1176-1179:

expect(chatCss).toContain('.empty-chat');
expect(chatCss).toContain('.empty-chat-title');
expect(chatCss).toContain('.empty-chat-chip');

grep -n "empty-chat" src/gaia/apps/webui/src/components/ChatView.css returns nothing. The classes were removed when #606 reworked the empty-state UX.

2. test_electron_chat_installer.jsMemoryDashboard.tsx is 159 KB, breaches 100 KB cap

tests/electron/test_electron_chat_installer.js:397:

expect(stats.size).toBeLessThan(100 * 1024);

src/gaia/apps/webui/src/components/MemoryDashboard.tsx is 159,276 bytes — about 1.55× over the rule. Added wholesale by #606.

Root cause

Both violations were introduced in the same commit: 74f637a4feat(memory): agent memory v2 — second brain with hybrid search, LLM extraction, and observability dashboard (#606). The PR introduced new empty-state UX plus a large new dashboard component but did not update the corresponding tests.

Why it went unnoticed for ~2 weeks

.github/workflows/test_electron.yml has a paths: filter — it only runs when the diff touches the listed directories. No main commit between 2026-05-08 and 2026-05-21 has touched any of those paths, so the workflow simply hasn't run on main. The dependabot batch #1194#1199 was the first thing to re-trigger it, which is when the red surfaced.

This is a latent CI-gap class: when a path-filtered workflow is broken on main, every contributor pays a "is this red mine?" tax until someone fixes it.

Acceptance criteria

Test plan

  • cd tests/electron && npm test -- test_electron_chat_app.js test_electron_chat_installer.js — both pass on the fix branch.
  • Re-run Test Electron Framework on the fix PR; confirm green.
  • Sanity-check the path filter still triggers: push an unrelated whitespace-only change to one of the filtered dirs on the fix branch and confirm the workflow runs.

Optional follow-up (separate issue if worth tracking)

Test Electron Runtime (example) and Test Electron Runtime (jira) jobs actually boot Electron under xvfb, but there's no equivalent for src/gaia/agents/emr/dashboard/electron/. That gap is why #1194 (a major-version Electron bump) had to be verified by hand on a Linux box — there's no CI runtime signal for that app. Adding the third runtime job would catch the next major Electron bump automatically.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingelectronElectron app changesp0high prioritytestsTest changes

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions