Merge pull request #13432 from Kilo-Org/nimble-reef

test(jetbrains): stop frontend tests opening a real browser
This commit is contained in:
Kirill Kalishev
2026-08-25 15:09:28 -04:00
committed by GitHub
5 changed files with 46 additions and 0 deletions
@@ -24,6 +24,7 @@ import ai.kilocode.client.testing.TestCoroutines
import ai.kilocode.client.testing.pumpEdt
import ai.kilocode.client.testing.TestUiTimers
import ai.kilocode.client.testing.fire
import ai.kilocode.client.testing.installBrowser
import ai.kilocode.client.ui.list.ActiveListBadge
import ai.kilocode.client.ui.list.ActiveListItem
import ai.kilocode.client.ui.list.ActiveListMetrics
@@ -69,6 +70,7 @@ class AgentManagerPanelTest : BasePlatformTestCase() {
override fun setUp() {
super.setUp()
installBrowser()
coroutines = TestCoroutines()
rpc = FakeWorktreeRpcApi()
service = KiloWorktreeService(coroutines.scope, rpc)
@@ -4,6 +4,7 @@ import ai.kilocode.client.testing.FakeWorktreeRpcApi
import ai.kilocode.client.testing.TestCoroutines
import ai.kilocode.client.testing.pumpEdt
import ai.kilocode.client.testing.TestUiTimers
import ai.kilocode.client.testing.installBrowser
import ai.kilocode.client.util.edtWait
import ai.kilocode.rpc.dto.GhAvailability
import com.intellij.openapi.application.ApplicationManager
@@ -22,6 +23,7 @@ class GhBannerTest : BasePlatformTestCase() {
override fun setUp() {
super.setUp()
installBrowser()
coroutines = TestCoroutines()
rpc = FakeWorktreeRpcApi()
timers = TestUiTimers()
@@ -4,6 +4,7 @@ import ai.kilocode.client.testing.FakeWorktreeRpcApi
import ai.kilocode.client.testing.TestCoroutines
import ai.kilocode.client.testing.pumpEdt
import ai.kilocode.client.testing.TestUiTimers
import ai.kilocode.client.testing.installBrowser
import ai.kilocode.client.util.edtWait
import ai.kilocode.rpc.dto.GhAvailability
import com.intellij.openapi.application.ApplicationManager
@@ -21,6 +22,7 @@ class GhStatusCoordinatorTest : BasePlatformTestCase() {
override fun setUp() {
super.setUp()
installBrowser()
coroutines = TestCoroutines()
rpc = FakeWorktreeRpcApi()
timers = TestUiTimers()
@@ -4,6 +4,7 @@ import ai.kilocode.client.util.edtWait
import ai.kilocode.client.app.KiloProviderService
import ai.kilocode.client.plugin.KiloBundle
import ai.kilocode.client.testing.FakeProviderRpcApi
import ai.kilocode.client.testing.installBrowser
import ai.kilocode.client.ui.UiStyle
import ai.kilocode.client.ui.list.ActiveListActionCell
import ai.kilocode.client.ui.list.ActiveListConfig
@@ -985,6 +986,7 @@ class ProvidersSettingsUiTest : BasePlatformTestCase() {
fun `test provider oauth auto response shows device auth panel`() {
val callback = CompletableDeferred<ai.kilocode.rpc.dto.ProviderActionResultDto>()
val browser = installBrowser()
val rpc = installProvider(
ProviderSettingsDto(
providers = listOf(provider("openai", "OpenAI")),
@@ -1016,6 +1018,7 @@ class ProvidersSettingsUiTest : BasePlatformTestCase() {
assertTrue(t, t.contains("Open Browser"))
assertTrue(t, t.contains("Cancel"))
assertEquals("https://auth.openai.com/device", fieldsByName(panel, "kilo.provider.oauth.url").single().text)
assertEquals(listOf("https://auth.openai.com/device"), browser.urls)
val qr = components(panel).filterIsInstance<JBLabel>().single { it.name == "kilo.provider.oauth.qr" }
assertNotNull(qr.icon)
}
@@ -0,0 +1,37 @@
package ai.kilocode.client.testing
import com.intellij.ide.browsers.BrowserLauncher
import com.intellij.ide.browsers.WebBrowser
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project
import com.intellij.testFramework.fixtures.BasePlatformTestCase
import com.intellij.testFramework.replaceService
import java.nio.file.Path
class FakeBrowserLauncher : BrowserLauncher() {
val urls = mutableListOf<String>()
val files = mutableListOf<Path>()
override fun open(url: String) {
urls.add(url)
}
@Suppress("DEPRECATION")
override fun browse(file: java.io.File) {
files.add(file.toPath())
}
override fun browse(file: Path) {
files.add(file)
}
override fun browse(url: String, browser: WebBrowser?, project: Project?) {
urls.add(url)
}
}
fun BasePlatformTestCase.installBrowser(): FakeBrowserLauncher {
val fake = FakeBrowserLauncher()
ApplicationManager.getApplication().replaceService(BrowserLauncher::class.java, fake, testRootDisposable)
return fake
}