Skip to content

fix(log-viewer): keep a find match's panel up, and make a highlighted frame read on any theme - #6

Closed
lukecotter wants to merge 2 commits into
refactor-inspector-tab-controllerfrom
bug-find-tooltip
Closed

lukecotter wants to merge 2 commits into
refactor-inspector-tab-controllerfrom
bug-find-tooltip

Conversation

@lukecotter

Copy link
Copy Markdown
Owner

main is red. The web e2e times out after 7m46s on every run since certinia#1029 merged — see the failure on certinia#1042.

expect(locator).toHaveCount(expected) failed
Locator:  locator('.runtime-extensions-editor').locator('.monaco-list-row').filter({ hasText: 'Activating' })
Expected: 0
Received: 1
Timeout:  120000ms
  at waitForExtensionsActivated

Cause

certinia#1029 provisions Salesforce Services from a local unpacked copy when it finds one, and falls back to the gallery id when it does not. A CI runner has no local copy, so it always takes the fallback.

@vscode/test-web pushes extensionIds into additionalBuiltinExtensions as a gallery reference (workbench.js:135-139), so the browser resolves it from the publisher CDN — which sends no Access-Control-Allow-Origin to a localhost origin. Services therefore sits at Activating for good, and waitForExtensionsActivated waits out its full 120s, three times over with retries.

That fallback never worked; it was hidden. createWebConfig passes --disable-web-security, which allowed the cross-origin fetch. The same PR dropped that flag so the suite could see CORS and CSP faults — which is exactly what it then saw, on a fault that was already there.

Fix

Provision Services when a local unpacked copy exists, and otherwise not at all.

Nothing is lost. No spec needs Services today: initServices() is called lazily from org commands, and no spec exercises one. The gallery route cannot work from a localhost origin whatever we do, so keeping it as a "fallback" only buys a guaranteed 120s hang.

Verified

Forced the CI condition locally by making findServicesExtension() return nothing, and ran the suite on the merged code and on this fix:

result
merged code, no local copy fails — same locator, same 120s timeout
this fix, no local copy passes, 9.2s
this fix, local copy present passes, 11.4s

tsc -b 0, eslint 0 errors, prettier clean.

Stepping to a match centres the view, and the render that moves the
frames asks the hit test again at the pointer. That answer took the
match's own panel away, so the panel showed only when the pointer
happened to rest off the chart.

The chart now reports what changed the hover, and a panel opened by find
or by the keyboard is held until the pointer moves or something else
closes it.
The highlight takes its colour from the host's `editor.findMatchBackground`,
a grey in several themes, and a search dims the frames around a match
towards grey too, so the match could be lost among them. A frame too
brief to carry a border got no border at all, leaving a hairline.

Every highlight now carries a halo in the tone its colour is not, and a
frame too thin to border is bordered at the width the wash widened it
to. Both hairlines sit inside the frame's own row.
@lukecotter

Copy link
Copy Markdown
Owner Author

Moved to certinia#1059.

@lukecotter lukecotter closed this Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant