From dcf690123e8684cb200d74677263eea39cae342f Mon Sep 17 00:00:00 2001 From: Tibor Dancs Date: Wed, 15 Jan 2020 15:19:48 +0100 Subject: [PATCH] Implemented new Python Django devfile test Signed-off-by: Tibor Dancs --- tests/e2e/index.ts | 4 +- tests/e2e/mocha-python-django.opts | 8 +++ tests/e2e/package.json | 1 + tests/e2e/pageobjects/ide/DialogWindow.ts | 0 tests/e2e/pageobjects/ide/Ide.ts | 0 tests/e2e/tests/devfiles/JavaMaven.spec.ts | 6 +-- tests/e2e/tests/devfiles/JavaVertx.spec.ts | 6 +-- tests/e2e/tests/devfiles/PythonDjango.spec.ts | 52 +++++++++++++++++++ tests/e2e/testsLibrary/CodeExecutionTests.ts | 2 +- 9 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 tests/e2e/mocha-python-django.opts mode change 100755 => 100644 tests/e2e/pageobjects/ide/DialogWindow.ts mode change 100755 => 100644 tests/e2e/pageobjects/ide/Ide.ts create mode 100644 tests/e2e/tests/devfiles/PythonDjango.spec.ts mode change 100755 => 100644 tests/e2e/testsLibrary/CodeExecutionTests.ts diff --git a/tests/e2e/index.ts b/tests/e2e/index.ts index 6c15e1b9669b..8c790ccaf562 100644 --- a/tests/e2e/index.ts +++ b/tests/e2e/index.ts @@ -15,9 +15,9 @@ export * from './utils/workspace/TestWorkspaceUtil'; export * from './utils/workspace/WorkspaceStatus'; export * from './pageobjects/dashboard/Dashboard'; export * from './pageobjects/dashboard/NewWorkspace'; -export * from './pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins'; -export * from './pageobjects/dashboard/workspace-details/WorkspaceDetails'; export * from './pageobjects/dashboard/Workspaces'; +export * from './pageobjects/dashboard/workspace-details/WorkspaceDetails'; +export * from './pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins'; export * from './pageobjects/ide/ContextMenu'; export * from './pageobjects/ide/DebugView'; export * from './pageobjects/ide/DialogWindow'; diff --git a/tests/e2e/mocha-python-django.opts b/tests/e2e/mocha-python-django.opts new file mode 100644 index 000000000000..cbc1584de964 --- /dev/null +++ b/tests/e2e/mocha-python-django.opts @@ -0,0 +1,8 @@ +--timeout 2200000 +--reporter 'dist/driver/CheReporter.js' +-u tdd +--bail +--full-trace +--spec dist/tests/login/Login.spec.js +--spec dist/tests/devfiles/PythonDjango.spec.js +--require source-map-support/register diff --git a/tests/e2e/package.json b/tests/e2e/package.json index b2ae4bb8451c..30ec4f63d885 100644 --- a/tests/e2e/package.json +++ b/tests/e2e/package.json @@ -14,6 +14,7 @@ "test-operatorhub-installation": "./generateIndex.sh && npm run lint && npm run tsc && mocha --opts mocha-che-operatorhub.opts", "test-wkspc-creation-and-ls": "./generateIndex.sh && npm run lint && npm run tsc && mocha --opts mocha-wkspc-creation-and-ls.opts", "test-java-vertx": "./generateIndex.sh && npm run lint && npm run tsc && mocha --opts mocha-java-vertx.opts", + "test-python-django": "./generateIndex.sh && npm run lint && npm run tsc && mocha --opts mocha-python-django.opts", "test-all-devfiles": "./generateIndex.sh && npm run lint && npm run tsc && mocha --opts mocha-all-devfiles.opts", "lint": "tslint --fix -p .", "tsc": "tsc -p ." diff --git a/tests/e2e/pageobjects/ide/DialogWindow.ts b/tests/e2e/pageobjects/ide/DialogWindow.ts old mode 100755 new mode 100644 diff --git a/tests/e2e/pageobjects/ide/Ide.ts b/tests/e2e/pageobjects/ide/Ide.ts old mode 100755 new mode 100644 diff --git a/tests/e2e/tests/devfiles/JavaMaven.spec.ts b/tests/e2e/tests/devfiles/JavaMaven.spec.ts index d6979cb425d3..a5adcafd1a3c 100644 --- a/tests/e2e/tests/devfiles/JavaMaven.spec.ts +++ b/tests/e2e/tests/devfiles/JavaMaven.spec.ts @@ -22,20 +22,20 @@ const codeNavigationClassName: string = 'String.class'; const stack : string = 'Java Maven'; const taskName: string = 'maven build'; -suite('Java Maven test', async () => { +suite(`${stack} test`, async () => { suite (`Create ${stack} workspace ${workspaceName}`, async () => { workspaceHandling.createAndOpenWorkspace(workspaceName, stack); projectAndFileTests.waitWorkspaceReadiness(workspaceName, sampleName, 'src'); }); suite('Validation of workspace build and run', async () => { - codeExecutionTests.runTask(taskName, 120000); + codeExecutionTests.runTask(taskName, 120_000); codeExecutionTests.closeTerminal(taskName); }); suite('Language server validation', async () => { projectAndFileTests.openFile(fileFolderPath, tabTitle); - commonLsTests.waitLSInitialization('Starting Java Language Server', 1800000, 360000); + commonLsTests.waitLSInitialization('Starting Java Language Server', 1_800_000, 360_000); commonLsTests.suggestionInvoking(tabTitle, 10, 20, 'append(char c) : PrintStream'); commonLsTests.errorHighlighting(tabTitle, 'error', 11); commonLsTests.autocomplete(tabTitle, 10, 11, 'System - java.lang'); diff --git a/tests/e2e/tests/devfiles/JavaVertx.spec.ts b/tests/e2e/tests/devfiles/JavaVertx.spec.ts index 5dfc19d1f94d..35d806e05cde 100644 --- a/tests/e2e/tests/devfiles/JavaVertx.spec.ts +++ b/tests/e2e/tests/devfiles/JavaVertx.spec.ts @@ -23,7 +23,7 @@ const buildTaskName: string = 'maven build'; const LSstarting: string = 'Starting Java Language Server'; const stack: string = 'Java Vert.x'; -suite('Java Vert.x test', async () => { +suite(`${stack} test`, async () => { suite (`Create ${stack} workspace ${workspaceName}`, async () => { workspaceHandling.createAndOpenWorkspace(workspaceName, stack); @@ -32,7 +32,7 @@ suite('Java Vert.x test', async () => { suite('Language server validation', async () => { projectAndFileTests.openFile(fileFolderPath, tabTitle); - commonLsTests.waitLSInitialization(LSstarting, 1800000, 360000); + commonLsTests.waitLSInitialization(LSstarting, 1_800_000, 360_000); commonLsTests.suggestionInvoking(tabTitle, 19, 31, 'router(Vertx vertx) : Router'); commonLsTests.errorHighlighting(tabTitle, 'error', 20); commonLsTests.autocomplete(tabTitle, 19, 7, 'Router - io.vertx.ext.web'); @@ -40,7 +40,7 @@ suite('Java Vert.x test', async () => { }); suite('Validation of project build', async () => { - codeExecutionTests.runTask(buildTaskName, 120000); + codeExecutionTests.runTask(buildTaskName, 120_000); codeExecutionTests.closeTerminal(buildTaskName); }); diff --git a/tests/e2e/tests/devfiles/PythonDjango.spec.ts b/tests/e2e/tests/devfiles/PythonDjango.spec.ts new file mode 100644 index 000000000000..93235ddc8c0a --- /dev/null +++ b/tests/e2e/tests/devfiles/PythonDjango.spec.ts @@ -0,0 +1,52 @@ +/********************************************************************* + * Copyright (c) 2019 Red Hat, Inc. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + **********************************************************************/ +import { NameGenerator } from '../../utils/NameGenerator'; +import 'reflect-metadata'; +import * as codeExecutionHelper from '../../testsLibrary/CodeExecutionTests'; +import * as workspaceHandler from '../../testsLibrary/WorksapceHandlingTests'; +import * as projectManager from '../../testsLibrary/ProjectAndFileTests'; + +const workspaceName: string = NameGenerator.generate('wksp-test-', 5); +const workspaceStack: string = 'Python Django'; +const workspaceSampleName: string = 'django-realworld-example-app'; +const workspaceRootFolderName: string = 'conduit'; + +const taskInstallDependencies: string = 'install dependencies'; +const taskMigrate: string = 'migrate'; +const taskRunServer: string = 'run server'; +const taskExpectedDialogText: string = 'A process is now listening on port 7000'; + +suite(`${workspaceStack} test`, async () => { + + suite(`Create ${workspaceStack} workspace ${workspaceName}`, async () => { + workspaceHandler.createAndOpenWorkspace(workspaceName, workspaceStack); + projectManager.waitWorkspaceReadiness(workspaceName, workspaceSampleName, workspaceRootFolderName); + }); + + suite('Install dependencies', async () => { + codeExecutionHelper.runTask(taskInstallDependencies, 60_000); + codeExecutionHelper.closeTerminal(taskInstallDependencies); + }); + + suite('Migrate Django application project', async () => { + codeExecutionHelper.runTask(taskMigrate, 30_000); + codeExecutionHelper.closeTerminal(taskMigrate); + }); + + suite('Run django server', async () => { + codeExecutionHelper.runTaskWithDialogShellAndOpenLink(taskRunServer, taskExpectedDialogText, 30_000); + }); + + suite('Stop and remove workspace', async() => { + workspaceHandler.stopWorkspace(workspaceName); + workspaceHandler.removeWorkspace(workspaceName); + }); + +}); diff --git a/tests/e2e/testsLibrary/CodeExecutionTests.ts b/tests/e2e/testsLibrary/CodeExecutionTests.ts old mode 100755 new mode 100644 index 7e4ac788a755..0e1db31fe102 --- a/tests/e2e/testsLibrary/CodeExecutionTests.ts +++ b/tests/e2e/testsLibrary/CodeExecutionTests.ts @@ -20,7 +20,7 @@ const dialogWindowOpenLinkButtonText: string = 'Open Link'; const dialogWindowCloseButtonText: string = 'close'; export function runTask(taskName: string, timeout: number) { - test( `Run command '${taskName}'`, async () => { + test(`Run command '${taskName}'`, async () => { await topMenu.runTask(taskName); await ide.waitNotification('has exited with code 0.', timeout); });