diff --git a/src/sql/workbench/services/query/common/queryManagement.ts b/src/sql/workbench/services/query/common/queryManagement.ts index c95953c75f..1a25b5d687 100644 --- a/src/sql/workbench/services/query/common/queryManagement.ts +++ b/src/sql/workbench/services/query/common/queryManagement.ts @@ -307,9 +307,11 @@ export class QueryManagementService implements IQueryManagementService { public onMessage(messagesMap: Map): void { for (const [uri, messages] of messagesMap) { - this._notify(uri, (runner: QueryRunner) => { - runner.handleMessage(messages.map(m => m.message)); - }); + if (messages) { + this._notify(uri, (runner: QueryRunner) => { + runner.handleMessage(messages.map(m => m.message)); + }); + } } } diff --git a/test/automation/src/sql/connectionDialog.ts b/test/automation/src/sql/connectionDialog.ts index 521b70a42d..dbad691c7d 100644 --- a/test/automation/src/sql/connectionDialog.ts +++ b/test/automation/src/sql/connectionDialog.ts @@ -4,19 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { Code } from '../code'; -import { waitForNewDialog, clickDialogButton } from './sqlutils'; -import { TestServerProfile, AuthenticationType } from './testConfig'; +import { waitForNewDialog } from './sqlutils'; const CONNECTION_DIALOG_TITLE = 'Connection'; -const CONNECTION_DIALOG_SELECTOR: string = '.modal-dialog .modal-content .modal-body .connection-dialog'; -const CONNECTION_DETAIL_CONTROL_SELECTOR: string = '.connection-provider-info .connection-table .connection-input'; - -const SERVER_INPUT_ARIA_LABEL = 'Server'; -const USERNAME_INPUT_ARIA_LABEL = 'User name'; -const PASSWORD_INPUT_ARIA_LABEL = 'Password'; -const AUTH_TYPE_ARIA_LABEL = 'Authentication type'; - -const CONNECT_BUTTON_ARIA_LABEL = 'Connect'; export class ConnectionDialog { @@ -26,26 +16,21 @@ export class ConnectionDialog { await waitForNewDialog(this.code, CONNECTION_DIALOG_TITLE); } - async connect(profile: TestServerProfile): Promise { - await this.code.waitForSetValue(this.getInputCssSelector(SERVER_INPUT_ARIA_LABEL), profile.serverName); - if (profile.authenticationType === AuthenticationType.SqlLogin) { - await this.code.waitAndClick(this.getSelectCssSelector(AUTH_TYPE_ARIA_LABEL)); - await this.selectAuthType(profile.authenticationTypeDisplayName); - await this.code.waitForSetValue(this.getInputCssSelector(USERNAME_INPUT_ARIA_LABEL), profile.userName); - await this.code.waitForSetValue(this.getInputCssSelector(PASSWORD_INPUT_ARIA_LABEL), profile.password); - } - await clickDialogButton(this.code, CONNECT_BUTTON_ARIA_LABEL); + private static readonly PROVIDER_SELECTOR = '.modal .modal-body select[aria-label="Connection type"]'; + async setProvider(provider: string): Promise { + await this.code.waitForSetValue(ConnectionDialog.PROVIDER_SELECTOR, provider); } - private getInputCssSelector(ariaLabel: string): string { - return `${CONNECTION_DIALOG_SELECTOR} ${CONNECTION_DETAIL_CONTROL_SELECTOR} .monaco-inputbox input[aria-label="${ariaLabel}"]`; + private static readonly TARGET_SELECTOR = '.modal .modal-body input[aria-label="${TARGET}"]'; + async setTarget(target: string, value: string): Promise { + await this.code.waitForSetValue(ConnectionDialog.TARGET_SELECTOR.replace('${TARGET}', '' + target), value); } - private getSelectCssSelector(ariaLabel: string): string { - return `${CONNECTION_DIALOG_SELECTOR} ${CONNECTION_DETAIL_CONTROL_SELECTOR} select[aria-label="${ariaLabel}"]`; - } + private static readonly CONNECT_BUTTON_SELECTOR = '.modal .modal-footer a[aria-label="Connect"]'; + async connect(): Promise { + await this.code.waitAndClick(ConnectionDialog.CONNECT_BUTTON_SELECTOR); - private async selectAuthType(authType: string) { - await this.code.waitAndClick(`.context-view.bottom.left .monaco-select-box-dropdown-container .select-box-dropdown-list-container .monaco-list .monaco-scrollable-element .monaco-list-rows .monaco-list-row div[aria-label="${authType}"][class*="option-text"]`); + const selector = `.editor-instance .monaco-editor textarea`; + return this.code.waitForActiveElement(selector); } } diff --git a/test/smoke/src/sql/areas/profiler/profiler.test.ts b/test/smoke/src/sql/areas/profiler/profiler.test.ts deleted file mode 100644 index 1e21766399..0000000000 --- a/test/smoke/src/sql/areas/profiler/profiler.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Application, getStandaloneServer } from '../../../../../automation'; - -export function setup() { - describe('profiler test suite', () => { - it('Launch profiler test', async function () { - const app = this.app as Application; - await app.workbench.profiler.launchProfiler(); - await app.workbench.connectionDialog.waitForConnectionDialog(); - await app.workbench.connectionDialog.connect(await getStandaloneServer()); - await app.workbench.profiler.waitForNewSessionDialogAndStart(); - }); - }); -} diff --git a/test/smoke/src/sql/areas/queryEditor/queryEditor.test.ts b/test/smoke/src/sql/areas/queryEditor/queryEditor.test.ts index 9445ae6da6..138795b6ab 100644 --- a/test/smoke/src/sql/areas/queryEditor/queryEditor.test.ts +++ b/test/smoke/src/sql/areas/queryEditor/queryEditor.test.ts @@ -8,15 +8,16 @@ import { Application } from '../../../../../automation'; export function setup() { describe('Query Editor', () => { - it('can open and connect file', async function () { + it('can open, connect and execute file', async function () { const app = this.app as Application; await app.workbench.quickaccess.openFile('test.sql'); await app.workbench.queryEditor.commandBar.clickButton(3); await app.workbench.connectionDialog.waitForConnectionDialog(); - await app.code.waitForSetValue('.modal .modal-body select[aria-label="Connection type"]', 'Sqlite'); - await app.code.waitForSetValue('.modal .modal-body input[aria-label="File"]', 'chinook.db'); - await app.code.waitAndClick('.modal .modal-footer a[aria-label="Connect"]'); - await app.workbench.queryEditor.commandBar.waitForButton(3, 'Disconnect'); + await app.workbench.connectionDialog.setProvider('Sqlite'); + await app.workbench.connectionDialog.setTarget('File', 'chinook.db'); + await app.workbench.connectionDialog.connect(); + await app.workbench.queryEditor.commandBar.clickButton(1); + await app.code.waitForElement('.query-editor-view .monaco-table'); }); }); }