microsoft / microsoft/Kusto-Explorer-VsCode
Integration tests fail locally when desktop Kusto Explorer data is present (import prompt blocks activation)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6
- Forks
- 7
- Avg merge
- 6d 10h
- Merged PRs (30d)
- 3
Description
Problem
npm run test:integration fails for a developer who has desktop Kusto Explorer data on their machine:
1) ScratchPad1 document is open by default:
AssertionError [ERR_ASSERTION]: ScratchPad1 should be open after activation
46 passing (21s)
1 failing
The cause appears in the same output:
rejected promise not handled within 1 second: Error: DialogService: refused to show dialog in tests.
Contents: Kusto Explorer connections and query set documents found. Would you like to import them?
The extension prompts to import connections from desktop Kusto Explorer during activation. The test DialogService refuses modal dialogs, that rejection goes unhandled, and activation never completes — so ScratchPad1 is never opened and the assertion fails. The failing test is a symptom; the prompt is the cause.
The suite is not hermetic
The failure depends on machine and profile state rather than on the code under test. Evidence gathered by running the same suite in two worktrees on the same machine, both based on the same main:
| worktree | result |
|---|---|
| one branch | 46 passing, exit 0 — no failure |
| another branch | 46 passing / 1 failing, exit 1 — prompt fired |
Neither branch touches activation, connection import, or the scratchpad. The differentiator is the per-worktree .vscode-test/user-data profile: once a profile has recorded that the import prompt was handled, the prompt stops firing and the suite goes green. A fresh profile plus desktop Kusto Explorer data present on the machine reproduces the failure.
This was also independently controlled for by reverting a branch's changed files to its merge-base and re-running: the identical 46/1 failure persisted, confirming it is not caused by the code under test.
CI is unaffected — hosted runners have no desktop Kusto Explorer installation, so the prompt never fires there and Integration Tests (VS Code) passes. That is precisely why this only bites locally, and only for contributors who actually use the desktop product.
Suggested fix
The extension already contributes a setting for exactly this:
msKustoExplorer.connections.suppressKustoExplorerImportPrompt (boolean, default false)
.vscode-test.mjs currently passes only:
launchArgs: [
"--disable-updates",
"--skip-release-notes",
"--user-data-dir", ".vscode-test/user-data",
],
Seeding that setting to true for the test profile — or otherwise stubbing the desktop-import detection during integration runs — would make the suite independent of whether the developer has desktop Kusto Explorer installed.
Separately, the unhandled promise rejection is worth a look on its own: a refused or dismissed dialog blocking activation is a failure mode that could plausibly affect real users who dismiss the prompt in an unexpected way, not just tests.
Reproduction
- Have desktop Kusto Explorer connections/query sets present on the machine.
- Delete
src/Client/.vscode-test/user-dataso the test profile is fresh. npm run test:integrationfromsrc/Client.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/Client/.vscode-test.mjs and inspect the integration-test launchArgs and test profile setup. Run npm run test:integration with a fresh src/Client/.vscode-test/user-data profile and desktop Kusto Explorer data present; done means the suite no longer shows the import prompt failure and the ScratchPad1 test passes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript, vscode
- Domain
- developer-experience, testing-qa
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 76/100