Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions extensions/intellij/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import org.jetbrains.changelog.markdownToHTML
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask
import org.gradle.kotlin.dsl.intellijPlatform

fun environment(key: String) = providers.environmentVariable(key)

Expand Down Expand Up @@ -30,15 +31,16 @@ repositories {

dependencies {
intellijPlatform {
create("IC", platformVersion)
intellijIdeaCommunity(platformVersion)
plugins(listOf("org.jetbrains.plugins.terminal:241.14494.150"))
testFramework(TestFrameworkType.Starter, "243.21565.193")
testFramework(TestFrameworkType.Platform)
}
implementation("com.posthog.java:posthog:1.2.0")

testImplementation("junit:junit:4.13.2")
testImplementation("com.intellij.remoterobot:remote-robot:$remoteRobotVersion")
testImplementation("com.intellij.remoterobot:remote-fixtures:$remoteRobotVersion")
testImplementation("org.kodein.di:kodein-di-jvm:7.20.2")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.3")
testImplementation("io.mockk:mockk:1.14.2") {
// this transitive dependency (1.6.4) conflicts with built-in version (1.7.3)
// otherwise e2e tests (runIdeForUiTests) will have linkage errors
Expand Down Expand Up @@ -146,6 +148,8 @@ tasks {

test {
useJUnitPlatform()
systemProperty("path.to.build.plugin", prepareSandbox.get().pluginDirectory.get().asFile)
environment("CONTINUE_GLOBAL_DIR", "${rootProject.projectDir}/src/test/kotlin/com/github/continuedev/continueintellijextension/e2e/test-continue")
jvmArgumentProviders += CommandLineArgumentProvider { listOf("-Dide.browser.jcef.sandbox.enable=false") }
}
}
Original file line number Diff line number Diff line change
@@ -1,75 +1,45 @@
package com.github.continuedev.continueintellijextension.e2e

import com.automation.remarks.junit5.Video
import com.github.continuedev.continueintellijextension.fixtures.dialog
import com.github.continuedev.continueintellijextension.fixtures.idea
import com.github.continuedev.continueintellijextension.fixtures.welcomeFrame
import com.github.continuedev.continueintellijextension.utils.RemoteRobotExtension
import com.github.continuedev.continueintellijextension.utils.StepsLogger
import com.intellij.remoterobot.RemoteRobot
import com.intellij.remoterobot.fixtures.ComponentFixture
import com.intellij.remoterobot.search.locators.byXpath
import com.intellij.remoterobot.steps.CommonSteps
import com.intellij.remoterobot.utils.keyboard
import com.intellij.remoterobot.utils.waitFor
import com.intellij.remoterobot.utils.waitForIgnoringError
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import java.time.Duration.ofMinutes
import java.time.Duration.ofSeconds
import com.intellij.driver.sdk.ui.components.codeEditor
import com.intellij.driver.sdk.ui.components.ideFrame
import com.intellij.driver.sdk.ui.components.welcomeScreen
import com.intellij.driver.sdk.wait
import com.intellij.ide.starter.driver.engine.runIdeWithDriver
import com.intellij.ide.starter.ide.IdeProductProvider
import com.intellij.ide.starter.models.TestCase
import com.intellij.ide.starter.plugins.PluginConfigurator
import com.intellij.ide.starter.project.NoProject
import com.intellij.ide.starter.runner.Starter
import org.junit.Test
import java.io.File
import kotlin.time.Duration.Companion.seconds

@ExtendWith(RemoteRobotExtension::class)
class Autocomplete {
init {
StepsLogger.init()
}

@BeforeEach
fun waitForIde(remoteRobot: RemoteRobot) {
waitForIgnoringError(ofMinutes(3)) { remoteRobot.callJs("true") }
}

@AfterEach
fun closeProject(remoteRobot: RemoteRobot) {
CommonSteps(remoteRobot).closeProject()
}

@Test
@Video
fun displayCompletion(remoteRobot: RemoteRobot): Unit = with(remoteRobot) {
welcomeFrame {
createNewProjectLink.click()
dialog("New Project") {
findText("Java").click()
checkBox("Add sample code").select()
button("Create").click()
@Test
fun simpleTestWithoutProject() {
val starter = Starter.newContext("testExample", TestCase(IdeProductProvider.IC, NoProject).withVersion("2024.3"))
val pluginPath = System.getProperty("path.to.build.plugin")
println("pluginPath=$pluginPath") // todo: remove this line later
PluginConfigurator(starter).installPluginFromFolder(File(pluginPath))
starter.runIdeWithDriver().useDriverAndCloseIde {
welcomeScreen {
createNewProjectButton.click()
wait(5.seconds)
x("//div[@text='Create']").click()
}
}

// Wait for the default "Main.java" tab to load
// Our "continue_tutorial.java.ft" tab loads first, but then "Main.java" takes focus.
waitFor(ofSeconds(20)) {
findAll<ComponentFixture>(
byXpath("//div[@visible_text='Main.java']")
).isNotEmpty()
}

idea {
with(textEditor()) {
val userMsg = "TEST_USER_MESSAGE_0"
editor.insertTextAtLine(0, 0, userMsg)
editor.clickOnOffset(userMsg.length)

ideFrame {
x("//div[@visible_text='Main.java']").click()
wait(5.seconds)
keyboard {
enterText(" ")
}

waitFor(ofSeconds(20)) {
editor.hasText("TEST_LLM_RESPONSE_0")
enterText("TEST_USER_MESSAGE_0")
}
wait(5.seconds)
assert(codeEditor().text.contains("TEST_LLM_RESPONSE_0")) // todo: assertion fails even if inlay text is visible, why?
}
}
}

}

This file was deleted.

This file was deleted.

Loading
Loading