From 6b9080306f0279983f9bbf221961a917b7cb86d8 Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Mon, 24 Mar 2025 16:02:52 -0400 Subject: [PATCH 1/7] test(qdoc): add more test cases for createReadme testing --- .../jetbrains/uitests/docTests/Utils.kt | 5 + .../createReadmeTests/CreateReadmeTest.kt | 45 ++++ .../CreateReadmeWorkspacesTest.kt | 217 ++++++++++++++++++ .../CreateReadmeSubFolderTest.kt | 91 ++++++++ .../NewReadmeDiffViewerScript.kt | 57 +++++ 5 files changed, 415 insertions(+) create mode 100644 ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt create mode 100644 ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt create mode 100644 ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/Utils.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/Utils.kt index 5417bf60f19..b0dbbd01fd9 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/Utils.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/Utils.kt @@ -13,6 +13,11 @@ fun prepTestData(isCreate: Boolean) { if (File(path).exists()) { File(path).delete() } + // check multi-root workspace readme as well + val path2 = Paths.get("tstData", "qdoc", "README.md").toUri() + if (File(path2).exists()) { + File(path2).delete() + } } else { val path = Paths.get("tstData", "qdoc", "updateFlow", "README.md").toUri() process = ProcessBuilder("git", "restore", path.path).start() diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt index 6eec3c8e929..2428b887a4a 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt @@ -3,6 +3,7 @@ package software.aws.toolkits.jetbrains.uitests.docTests.createReadmeTests +import com.intellij.driver.sdk.ui.ui import com.intellij.driver.sdk.waitForProjectOpen import com.intellij.ide.starter.ci.CIServer import com.intellij.ide.starter.config.ConfigurationStorage @@ -27,6 +28,7 @@ import software.aws.toolkits.jetbrains.uitests.docTests.prepTestData import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.acceptReadmeTestScript import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.createReadmePromptedToConfirmFolderTestScript import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.makeChangesFlowTestScript +import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.newReadmeDiffViewerTestScript import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.rejectReadmeTestScript import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.validateFeatureAvailabilityTestScript import software.aws.toolkits.jetbrains.uitests.executePuppeteerScript @@ -246,6 +248,49 @@ class CreateReadmeTest { } } + @Test + fun `New Readme opens in diff viewer`() { + val testCase = TestCase( + IdeProductProvider.IC, + LocalProjectInfo( + Paths.get("tstData", "qdoc", "createFlow") + ) + ).useRelease(System.getProperty("org.gradle.project.ideProfileName")) + + // inject connection + useExistingConnectionForTest() + + Starter.newContext(CurrentTestMethod.hyphenateWithClass(), testCase).apply { + System.getProperty("ui.test.plugins").split(File.pathSeparator).forEach { path -> + pluginConfigurator.installPluginFromPath( + Path.of(path) + ) + } + + copyExistingConfig(Paths.get("tstData", "configAmazonQTests")) + updateGeneralSettings() + }.runIdeWithDriver() + .useDriverAndCloseIde { + waitForProjectOpen() + // required wait time for the system to be fully ready + Thread.sleep(30000) + + val readmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") + val readme = File(readmePath.toUri()) + assertFalse(readme.exists()) + + val result = executePuppeteerScript(newReadmeDiffViewerTestScript) + assertFalse(result.contains("Error: Test Failed")) + + if (result.contains("Error: Test Failed")) { + println("result: $result") + } + + val panel = this.ui.x("//div[contains(@class, 'SimpleDiffPanel')]") + assertTrue(panel.present()) + } + } + companion object { @JvmStatic @AfterAll diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt new file mode 100644 index 00000000000..4af31d3d93f --- /dev/null +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -0,0 +1,217 @@ +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.uitests.docTests.createReadmeTests + +import com.intellij.driver.sdk.ui.ui +import com.intellij.driver.sdk.waitForProjectOpen +import com.intellij.ide.starter.ci.CIServer +import com.intellij.ide.starter.config.ConfigurationStorage +import com.intellij.ide.starter.di.di +import com.intellij.ide.starter.driver.engine.runIdeWithDriver +import com.intellij.ide.starter.ide.IdeProductProvider +import com.intellij.ide.starter.junit5.hyphenateWithClass +import com.intellij.ide.starter.models.TestCase +import com.intellij.ide.starter.project.LocalProjectInfo +import com.intellij.ide.starter.runner.CurrentTestMethod +import com.intellij.ide.starter.runner.Starter +import org.junit.jupiter.api.AfterAll +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.BeforeAll +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.kodein.di.DI +import org.kodein.di.bindSingleton +import software.aws.toolkits.jetbrains.uitests.TestCIServer +import software.aws.toolkits.jetbrains.uitests.clearAwsXmlFile +import software.aws.toolkits.jetbrains.uitests.docTests.prepTestData +import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.acceptReadmeTestScript +import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.createReadmeSubFolderPostFolderChangeTestScript +import software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts.createReadmeSubFolderPreFolderChangeTestScript +import software.aws.toolkits.jetbrains.uitests.executePuppeteerScript +import software.aws.toolkits.jetbrains.uitests.setupTestEnvironment +import software.aws.toolkits.jetbrains.uitests.useExistingConnectionForTest +import java.awt.event.KeyEvent +import java.io.File +import java.nio.file.Path +import java.nio.file.Paths + +class CreateReadmeWorkspacesTest { + init { + di = DI { + extend(di) + bindSingleton(overrides = true) { TestCIServer } + val defaults = ConfigurationStorage.instance().defaults.toMutableMap().apply { + put("LOG_ENVIRONMENT_VARIABLES", (!System.getenv("CI").toBoolean()).toString()) + } + + bindSingleton(overrides = true) { + ConfigurationStorage(this, defaults) + } + } + } + + @BeforeEach + fun setUpTest() { + // prep test data - remove readme if it exists + prepTestData(true) + } + + @Test + fun `Create readme with single-root workspace, root folder returns a readme` () { + val testCase = TestCase( + IdeProductProvider.IC, + LocalProjectInfo( + Paths.get("tstData", "qdoc", "createFlow") + ) + ).useRelease(System.getProperty("org.gradle.project.ideProfileName")) + + // inject connection + useExistingConnectionForTest() + + Starter.newContext(CurrentTestMethod.hyphenateWithClass(), testCase).apply { + System.getProperty("ui.test.plugins").split(File.pathSeparator).forEach { path -> + pluginConfigurator.installPluginFromPath( + Path.of(path) + ) + } + + copyExistingConfig(Paths.get("tstData", "configAmazonQTests")) + updateGeneralSettings() + }.runIdeWithDriver() + .useDriverAndCloseIde { + waitForProjectOpen() + // required wait time for the system to be fully ready + Thread.sleep(30000) + + val readmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") + val readme = File(readmePath.toUri()) + assertFalse(readme.exists()) + + val result = executePuppeteerScript(acceptReadmeTestScript) + assertFalse(result.contains("Error: Test Failed")) + if (result.contains("Error: Test Failed")) { + println("result: $result") + } + + val newReadmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") + val newReadme = File(newReadmePath.toUri()) + assertTrue(newReadme.exists()) + assertTrue(newReadme.readText().contains("REST")) + assertTrue(newReadme.readText().contains("API")) + } + } + + @Test + fun `Create readme with single-root workspace, in a subfolder returns a readme`() { + val testCase = TestCase( + IdeProductProvider.IC, + LocalProjectInfo( + Paths.get("tstData", "qdoc", "createFlow") + ) + ).useRelease(System.getProperty("org.gradle.project.ideProfileName")) + + // inject connection + useExistingConnectionForTest() + + Starter.newContext(CurrentTestMethod.hyphenateWithClass(), testCase).apply { + System.getProperty("ui.test.plugins").split(File.pathSeparator).forEach { path -> + pluginConfigurator.installPluginFromPath( + Path.of(path) + ) + } + + copyExistingConfig(Paths.get("tstData", "configAmazonQTests")) + updateGeneralSettings() + }.runIdeWithDriver() + .useDriverAndCloseIde { + waitForProjectOpen() + // required wait time for the system to be fully ready + Thread.sleep(30000) + + val readmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") + val readme = File(readmePath.toUri()) + assertFalse(readme.exists()) + + val result = executePuppeteerScript(createReadmeSubFolderPreFolderChangeTestScript) + this.ui.robot.pressAndReleaseKey(KeyEvent.VK_RIGHT) + this.ui.robot.pressAndReleaseKey(KeyEvent.VK_DOWN) + this.ui.robot.pressAndReleaseKey(KeyEvent.VK_ENTER) + val result2 = executePuppeteerScript(createReadmeSubFolderPostFolderChangeTestScript) + + assertFalse(result.contains("Error: Test Failed")) + assertFalse(result2.contains("Error: Test Failed")) + + if (result.contains("Error: Test Failed") || result2.contains("Error: Test Failed")) { + println("result: $result") + println("result2: $result2") + } + + val newReadmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") + val newReadme = File(newReadmePath.toUri()) + assertTrue(newReadme.exists()) + } + } + + @Test + fun `Create readme with multi-root workspace returns a readme`() { + val testCase = TestCase( + IdeProductProvider.IC, + LocalProjectInfo( + Paths.get("tstData", "qdoc") + ) + ).useRelease(System.getProperty("org.gradle.project.ideProfileName")) + + // inject connection + useExistingConnectionForTest() + + Starter.newContext(CurrentTestMethod.hyphenateWithClass(), testCase).apply { + System.getProperty("ui.test.plugins").split(File.pathSeparator).forEach { path -> + pluginConfigurator.installPluginFromPath( + Path.of(path) + ) + } + + copyExistingConfig(Paths.get("tstData", "configAmazonQTests")) + updateGeneralSettings() + }.runIdeWithDriver() + .useDriverAndCloseIde { + waitForProjectOpen() + // required wait time for the system to be fully ready + Thread.sleep(30000) + + val readmePath = Paths.get("tstData", "qdoc", "README.md") + val readme = File(readmePath.toUri()) + assertFalse(readme.exists()) + + val result = executePuppeteerScript(acceptReadmeTestScript) + assertFalse(result.contains("Error: Test Failed")) + if (result.contains("Error: Test Failed")) { + println("result: $result") + } + + val newReadmePath = Paths.get("tstData", "qdoc", "README.md") + val newReadme = File(newReadmePath.toUri()) + assertTrue(newReadme.exists()) + val readmeContents = newReadme.readText() + assertTrue(readmeContents.contains("REST")) + assertTrue(readmeContents.contains("API")) + } + } + + companion object { + @JvmStatic + @AfterAll + fun clearAwsXml() { + clearAwsXmlFile() + } + + @JvmStatic + @BeforeAll + fun setUp() { + // Setup test environment + setupTestEnvironment() + } + } +} diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt new file mode 100644 index 00000000000..9ccfb7fa7a4 --- /dev/null +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt @@ -0,0 +1,91 @@ + // Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + // SPDX-License-Identifier: Apache-2.0 + + package software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts + + import software.aws.toolkits.jetbrains.uitests.findAndClickButtonScript + + // language=JS + val createReadmeSubFolderPreFolderChangeScript = """ + const puppeteer = require('puppeteer'); + + async function testNavigation() { + const browser = await puppeteer.connect({ + browserURL: 'http://localhost:9222' + }) + + try { + + const pages = await browser.pages() + + for(const page of pages) { + const contents = await page.evaluate(el => el.innerHTML, await page.${'$'}(':root')); + + const element = await page.${'$'}('.mynah-chat-prompt-input') + if(element) { + + console.log('Typing /doc in the chat window') + + await page.type('.mynah-chat-prompt-input', '/doc') + await page.keyboard.press('Enter') + + console.log('Attempting to find and click Create a README button') + await findAndClickButton(page, 'Create a README', true, 10000) + console.log('Attempting to find and click Change folder button to select subfolder') + await findAndClickButton(page, 'Change folder', true, 10000) + } + } + + } finally { + await browser.close(); + } + } + + testNavigation().catch((error) => { + console.log('Error: Test Failed'); + console.error(error); + }); + """.trimIndent() + + // language=JS + val createReadmeSubFolderPostFolderChangeScript = """ + const puppeteer = require('puppeteer'); + + async function testNavigation() { + const browser = await puppeteer.connect({ + browserURL: 'http://localhost:9222' + }) + + try { + + const pages = await browser.pages() + + for(const page of pages) { + const contents = await page.evaluate(el => el.innerHTML, await page.${'$'}(':root')); + + const element = await page.${'$'}('.mynah-chat-prompt-input') + if(element) { + console.log('Attempting to find and click Yes button to confirm option') + await findAndClickButton(page, 'Yes', true, 10000) + + console.log('Waiting for README to be generated') + await new Promise(resolve => setTimeout(resolve, 90000)) + + console.log('Attempting to find and click Accept button'); + await findAndClickButton(page, 'Accept', true, 10000) + } + } + + } finally { + await browser.close(); + } + } + + testNavigation().catch((error) => { + console.log('Error: Test Failed'); + console.error(error); + }); + """.trimIndent() + + val createReadmeSubFolderPreFolderChangeTestScript = createReadmeSubFolderPreFolderChangeScript.plus(findAndClickButtonScript) + val createReadmeSubFolderPostFolderChangeTestScript = createReadmeSubFolderPostFolderChangeScript.plus(findAndClickButtonScript) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt new file mode 100644 index 00000000000..592246b79df --- /dev/null +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt @@ -0,0 +1,57 @@ + // Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + // SPDX-License-Identifier: Apache-2.0 + + package software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts + + import software.aws.toolkits.jetbrains.uitests.findAndClickButtonScript + + // language=JS + val newReadmeDiffViewerScript = """ + const puppeteer = require('puppeteer'); + + async function testNavigation() { + const browser = await puppeteer.connect({ + browserURL: 'http://localhost:9222' + }) + + try { + + const pages = await browser.pages() + + for(const page of pages) { + const contents = await page.evaluate(el => el.innerHTML, await page.${'$'}(':root')); + + const element = await page.${'$'}('.mynah-chat-prompt-input') + if(element) { + + console.log('Typing /doc in the chat window') + + await page.type('.mynah-chat-prompt-input', '/doc') + await page.keyboard.press('Enter') + + console.log('Attempting to find and click Create a README button') + await findAndClickButton(page, 'Create a README', true, 10000) + console.log('Attempting to find and click Yes button to confirm option') + await findAndClickButton(page, 'Yes', true, 10000) + + console.log('Waiting for README to be generated') + await new Promise(resolve => setTimeout(resolve, 75000)); + + console.log('Attempting to find Accept button to confirm Readme has been generated'); + await findAndClickButton(page, 'Accept', false, 10000) + } + } + + } finally { + await browser.close(); + } + } + + +testNavigation().catch((error) => { + console.log('Error: Test Failed'); + console.error(error); + }); + """.trimIndent() + + val newReadmeDiffViewerTestScript = newReadmeDiffViewerScript.plus(findAndClickButtonScript) From 0449dfecb501235bc233aed1963ce4981cf7b0e8 Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Tue, 25 Mar 2025 10:32:10 -0400 Subject: [PATCH 2/7] fix detekt issues --- .../CreateReadmeWorkspacesTest.kt | 4 ++-- .../CreateReadmeSubFolderTest.kt | 24 +++++++++---------- .../NewReadmeDiffViewerScript.kt | 16 ++++++------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt index 4af31d3d93f..305a9c421f7 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -16,8 +16,8 @@ import com.intellij.ide.starter.project.LocalProjectInfo import com.intellij.ide.starter.runner.CurrentTestMethod import com.intellij.ide.starter.runner.Starter import org.junit.jupiter.api.AfterAll -import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -59,7 +59,7 @@ class CreateReadmeWorkspacesTest { } @Test - fun `Create readme with single-root workspace, root folder returns a readme` () { + fun `Create readme with single-root workspace, root folder returns a readme`() { val testCase = TestCase( IdeProductProvider.IC, LocalProjectInfo( diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt index 9ccfb7fa7a4..bdda884444e 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/CreateReadmeSubFolderTest.kt @@ -1,12 +1,12 @@ - // Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. - // SPDX-License-Identifier: Apache-2.0 +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 - package software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts +package software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts - import software.aws.toolkits.jetbrains.uitests.findAndClickButtonScript +import software.aws.toolkits.jetbrains.uitests.findAndClickButtonScript - // language=JS - val createReadmeSubFolderPreFolderChangeScript = """ +// language=JS +val createReadmeSubFolderPreFolderChangeScript = """ const puppeteer = require('puppeteer'); async function testNavigation() { @@ -45,10 +45,10 @@ console.log('Error: Test Failed'); console.error(error); }); - """.trimIndent() +""".trimIndent() - // language=JS - val createReadmeSubFolderPostFolderChangeScript = """ +// language=JS +val createReadmeSubFolderPostFolderChangeScript = """ const puppeteer = require('puppeteer'); async function testNavigation() { @@ -85,7 +85,7 @@ console.log('Error: Test Failed'); console.error(error); }); - """.trimIndent() +""".trimIndent() - val createReadmeSubFolderPreFolderChangeTestScript = createReadmeSubFolderPreFolderChangeScript.plus(findAndClickButtonScript) - val createReadmeSubFolderPostFolderChangeTestScript = createReadmeSubFolderPostFolderChangeScript.plus(findAndClickButtonScript) +val createReadmeSubFolderPreFolderChangeTestScript = createReadmeSubFolderPreFolderChangeScript.plus(findAndClickButtonScript) +val createReadmeSubFolderPostFolderChangeTestScript = createReadmeSubFolderPostFolderChangeScript.plus(findAndClickButtonScript) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt index 592246b79df..8e39de1e55d 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/scripts/createReadmeScripts/NewReadmeDiffViewerScript.kt @@ -1,12 +1,12 @@ - // Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. - // SPDX-License-Identifier: Apache-2.0 +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 - package software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts +package software.aws.toolkits.jetbrains.uitests.docTests.scripts.createReadmeScripts - import software.aws.toolkits.jetbrains.uitests.findAndClickButtonScript +import software.aws.toolkits.jetbrains.uitests.findAndClickButtonScript - // language=JS - val newReadmeDiffViewerScript = """ +// language=JS +val newReadmeDiffViewerScript = """ const puppeteer = require('puppeteer'); async function testNavigation() { @@ -52,6 +52,6 @@ testNavigation().catch((error) => { console.log('Error: Test Failed'); console.error(error); }); - """.trimIndent() +""".trimIndent() - val newReadmeDiffViewerTestScript = newReadmeDiffViewerScript.plus(findAndClickButtonScript) +val newReadmeDiffViewerTestScript = newReadmeDiffViewerScript.plus(findAndClickButtonScript) From ed1cb7bd89c76b34f32fd9598b980e50e207220f Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Tue, 1 Apr 2025 14:34:54 -0400 Subject: [PATCH 3/7] update subfolder selection for create readme in subfolder test --- .../docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt index 305a9c421f7..5ea70600e09 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -136,7 +136,7 @@ class CreateReadmeWorkspacesTest { val result = executePuppeteerScript(createReadmeSubFolderPreFolderChangeTestScript) this.ui.robot.pressAndReleaseKey(KeyEvent.VK_RIGHT) - this.ui.robot.pressAndReleaseKey(KeyEvent.VK_DOWN) + this.ui.robot.enterText("\\/src") this.ui.robot.pressAndReleaseKey(KeyEvent.VK_ENTER) val result2 = executePuppeteerScript(createReadmeSubFolderPostFolderChangeTestScript) From 5ab963b3914b1c73e3a76b964b01419a0aac8414 Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Tue, 1 Apr 2025 14:54:28 -0400 Subject: [PATCH 4/7] update assertions for tests --- .../createReadmeTests/CreateReadmeTest.kt | 6 ++-- .../CreateReadmeWorkspacesTest.kt | 33 +++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt index 2428b887a4a..d849523d938 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt @@ -277,17 +277,17 @@ class CreateReadmeTest { val readmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") val readme = File(readmePath.toUri()) - assertFalse(readme.exists()) + assertThat(readme).doesNotExist() val result = executePuppeteerScript(newReadmeDiffViewerTestScript) - assertFalse(result.contains("Error: Test Failed")) + assertThat(result).doesNotContain("Error: Test Failed") if (result.contains("Error: Test Failed")) { println("result: $result") } val panel = this.ui.x("//div[contains(@class, 'SimpleDiffPanel')]") - assertTrue(panel.present()) + assertThat(panel.present()).isTrue() } } diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt index 5ea70600e09..72bad968ad4 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -15,9 +15,8 @@ import com.intellij.ide.starter.models.TestCase import com.intellij.ide.starter.project.LocalProjectInfo import com.intellij.ide.starter.runner.CurrentTestMethod import com.intellij.ide.starter.runner.Starter +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.AfterAll -import org.junit.jupiter.api.Assertions.assertFalse -import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -87,19 +86,17 @@ class CreateReadmeWorkspacesTest { val readmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") val readme = File(readmePath.toUri()) - assertFalse(readme.exists()) + assertThat(readme).doesNotExist() val result = executePuppeteerScript(acceptReadmeTestScript) - assertFalse(result.contains("Error: Test Failed")) + assertThat(result).doesNotContain("Error: Test Failed") if (result.contains("Error: Test Failed")) { println("result: $result") } val newReadmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") val newReadme = File(newReadmePath.toUri()) - assertTrue(newReadme.exists()) - assertTrue(newReadme.readText().contains("REST")) - assertTrue(newReadme.readText().contains("API")) + assertThat(newReadme).exists().content().contains("REST", "API") } } @@ -132,7 +129,7 @@ class CreateReadmeWorkspacesTest { val readmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") val readme = File(readmePath.toUri()) - assertFalse(readme.exists()) + assertThat(readme).exists() val result = executePuppeteerScript(createReadmeSubFolderPreFolderChangeTestScript) this.ui.robot.pressAndReleaseKey(KeyEvent.VK_RIGHT) @@ -140,8 +137,8 @@ class CreateReadmeWorkspacesTest { this.ui.robot.pressAndReleaseKey(KeyEvent.VK_ENTER) val result2 = executePuppeteerScript(createReadmeSubFolderPostFolderChangeTestScript) - assertFalse(result.contains("Error: Test Failed")) - assertFalse(result2.contains("Error: Test Failed")) + assertThat(result).doesNotContain("Error: Test Failed") + assertThat(result2).doesNotContain("Error: Test Failed") if (result.contains("Error: Test Failed") || result2.contains("Error: Test Failed")) { println("result: $result") @@ -150,7 +147,7 @@ class CreateReadmeWorkspacesTest { val newReadmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") val newReadme = File(newReadmePath.toUri()) - assertTrue(newReadme.exists()) + assertThat(newReadme).exists() } } @@ -183,20 +180,22 @@ class CreateReadmeWorkspacesTest { val readmePath = Paths.get("tstData", "qdoc", "README.md") val readme = File(readmePath.toUri()) - assertFalse(readme.exists()) + assertThat(readme).exists() val result = executePuppeteerScript(acceptReadmeTestScript) - assertFalse(result.contains("Error: Test Failed")) + assertThat(result).doesNotContain("Error: Test Failed") if (result.contains("Error: Test Failed")) { println("result: $result") } val newReadmePath = Paths.get("tstData", "qdoc", "README.md") val newReadme = File(newReadmePath.toUri()) - assertTrue(newReadme.exists()) - val readmeContents = newReadme.readText() - assertTrue(readmeContents.contains("REST")) - assertTrue(readmeContents.contains("API")) + assertThat(newReadme).exists() + .content() + .contains( + "REST", + "API" + ) } } From cfea556f049a4ff8be1dc9bed78a84c160f4d6e5 Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Tue, 1 Apr 2025 17:01:24 -0400 Subject: [PATCH 5/7] fix assertions for tests --- .../docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt index 72bad968ad4..607b3f1e6e6 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -129,7 +129,7 @@ class CreateReadmeWorkspacesTest { val readmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") val readme = File(readmePath.toUri()) - assertThat(readme).exists() + assertThat(readme).doesNotExist() val result = executePuppeteerScript(createReadmeSubFolderPreFolderChangeTestScript) this.ui.robot.pressAndReleaseKey(KeyEvent.VK_RIGHT) @@ -180,7 +180,7 @@ class CreateReadmeWorkspacesTest { val readmePath = Paths.get("tstData", "qdoc", "README.md") val readme = File(readmePath.toUri()) - assertThat(readme).exists() + assertThat(readme).doesNotExist() val result = executePuppeteerScript(acceptReadmeTestScript) assertThat(result).doesNotContain("Error: Test Failed") From 3defdb59c91eb5e67386736a4f78d29c800c869d Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Thu, 10 Apr 2025 11:15:11 -0400 Subject: [PATCH 6/7] update assertions for tests: remove explicitly logging failed results --- .../createReadmeTests/CreateReadmeTest.kt | 7 +--- .../CreateReadmeWorkspacesTest.kt | 37 +++++++++---------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt index d849523d938..10cf87e9fa8 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeTest.kt @@ -280,11 +280,8 @@ class CreateReadmeTest { assertThat(readme).doesNotExist() val result = executePuppeteerScript(newReadmeDiffViewerTestScript) - assertThat(result).doesNotContain("Error: Test Failed") - - if (result.contains("Error: Test Failed")) { - println("result: $result") - } + assertThat(result) + .doesNotContain("Error: Test Failed") val panel = this.ui.x("//div[contains(@class, 'SimpleDiffPanel')]") assertThat(panel.present()).isTrue() diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt index 607b3f1e6e6..928320a48ea 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -89,14 +89,15 @@ class CreateReadmeWorkspacesTest { assertThat(readme).doesNotExist() val result = executePuppeteerScript(acceptReadmeTestScript) - assertThat(result).doesNotContain("Error: Test Failed") - if (result.contains("Error: Test Failed")) { - println("result: $result") - } + assertThat(result) + .doesNotContain("Error: Test Failed") val newReadmePath = Paths.get("tstData", "qdoc", "createFlow", "README.md") val newReadme = File(newReadmePath.toUri()) - assertThat(newReadme).exists().content().contains("REST", "API") + assertThat(newReadme) + .exists() + .content() + .contains("REST", "API") } } @@ -129,7 +130,8 @@ class CreateReadmeWorkspacesTest { val readmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") val readme = File(readmePath.toUri()) - assertThat(readme).doesNotExist() + assertThat(readme) + .doesNotExist() val result = executePuppeteerScript(createReadmeSubFolderPreFolderChangeTestScript) this.ui.robot.pressAndReleaseKey(KeyEvent.VK_RIGHT) @@ -137,17 +139,15 @@ class CreateReadmeWorkspacesTest { this.ui.robot.pressAndReleaseKey(KeyEvent.VK_ENTER) val result2 = executePuppeteerScript(createReadmeSubFolderPostFolderChangeTestScript) - assertThat(result).doesNotContain("Error: Test Failed") - assertThat(result2).doesNotContain("Error: Test Failed") - - if (result.contains("Error: Test Failed") || result2.contains("Error: Test Failed")) { - println("result: $result") - println("result2: $result2") - } + assertThat(result) + .doesNotContain("Error: Test Failed") + assertThat(result2) + .doesNotContain("Error: Test Failed") val newReadmePath = Paths.get("tstData", "qdoc", "createFlow", "src", "README.md") val newReadme = File(newReadmePath.toUri()) - assertThat(newReadme).exists() + assertThat(newReadme) + .exists() } } @@ -183,14 +183,13 @@ class CreateReadmeWorkspacesTest { assertThat(readme).doesNotExist() val result = executePuppeteerScript(acceptReadmeTestScript) - assertThat(result).doesNotContain("Error: Test Failed") - if (result.contains("Error: Test Failed")) { - println("result: $result") - } + assertThat(result) + .doesNotContain("Error: Test Failed") val newReadmePath = Paths.get("tstData", "qdoc", "README.md") val newReadme = File(newReadmePath.toUri()) - assertThat(newReadme).exists() + assertThat(newReadme) + .exists() .content() .contains( "REST", From e765b34f9b6c33265ed5a003c7baeff9adfdf910 Mon Sep 17 00:00:00 2001 From: Gaurav Gandhi Date: Thu, 10 Apr 2025 11:15:11 -0400 Subject: [PATCH 7/7] update assertions for tests: remove explicitly logging failed results --- .../docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt index 928320a48ea..471e50d514d 100644 --- a/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt +++ b/ui-tests-starter/tst-243+/software/aws/toolkits/jetbrains/uitests/docTests/createReadmeTests/CreateReadmeWorkspacesTest.kt @@ -134,6 +134,10 @@ class CreateReadmeWorkspacesTest { .doesNotExist() val result = executePuppeteerScript(createReadmeSubFolderPreFolderChangeTestScript) + // Using keyboard press to select a subfolder based on a windows/linux folder selector + // right to move active cursor to the end + // enter src as the subfolder name (subfolder name tstData/qdoc/createFlow/src) + // enter to confirm selected subfolder this.ui.robot.pressAndReleaseKey(KeyEvent.VK_RIGHT) this.ui.robot.enterText("\\/src") this.ui.robot.pressAndReleaseKey(KeyEvent.VK_ENTER)