Search smoke tests (#13469)

* Add smoke test

* add simple tests for searching in notebooks view

* address pr comments

* address pr comments

* add search smoke tests to separate file

* remove span from selector
This commit is contained in:
Barbara Valdez
2021-03-25 12:43:55 -07:00
committed by GitHub
parent 94c0795fc7
commit 15f7b12849
3 changed files with 58 additions and 0 deletions

View File

@@ -14,9 +14,11 @@ const winOrCtrl = process.platform === 'darwin' ? 'ctrl' : 'win';
export class Notebook {
public readonly toolbar: NotebookToolbar;
public readonly view: NotebookView;
constructor(private code: Code, private quickAccess: QuickAccess, private quickInput: QuickInput, private editors: Editors) {
this.toolbar = new NotebookToolbar(code);
this.view = new NotebookView(code, quickAccess);
}
async openFile(fileName: string): Promise<void> {
@@ -194,3 +196,29 @@ export class NotebookToolbar {
await this.code.waitForElement(NotebookToolbar.notTrustedButtonSelector);
}
}
export class NotebookView {
private static readonly inputBox = '.notebookExplorer-viewlet .search-widget .input-box';
private static actualResult = '.search-view .result-messages';
constructor(private code: Code, private quickAccess: QuickAccess) { }
async focus(): Promise<void> {
return this.quickAccess.runCommand('Notebooks: Focus on Search Results View');
}
async searchInNotebook(expr: string): Promise<IElement> {
await this.waitForSetSearchValue(expr);
await this.code.dispatchKeybinding('enter');
let selector = `${NotebookView.actualResult} `;
if (expr) {
selector += '.message';
}
return await this.code.waitForElement(selector, undefined);
}
async waitForSetSearchValue(text: string): Promise<void> {
const textArea = `${NotebookView.inputBox} textarea`;
await this.code.waitForTypeInEditor(textArea, text);
}
}

View File

@@ -0,0 +1,28 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { assert } from 'console';
import { Application } from '../../../../../automation';
export function setup() {
describe('NotebookView', () => {
it('No search results if search query is empty', async function () {
const app = this.app as Application;
await app.workbench.sqlNotebook.view.focus();
const results = await app.workbench.sqlNotebook.view.searchInNotebook('');
assert(results.children !== undefined && results.children.length === 0);
});
it('Simple query search works correctly', async function () {
const app = this.app as Application;
await app.workbench.sqlNotebook.view.focus();
// Adding a regex expression to not depend on specific results of files
const regexExpr = /[0-9]+( results in )[0-9]+( files)/;
const results = await app.workbench.sqlNotebook.view.searchInNotebook('hello');
assert(results.textContent !== '' && results.textContent.match(regexExpr));
});
});
}

View File

@@ -5,6 +5,7 @@
import { setup as setupQueryEditorTests, setupWeb as setupQueryEditorWebTests } from './areas/queryEditor/queryEditor.test';
import { setup as setupNotebookTests } from './areas/notebook/notebook.test';
import { setup as setupNotebookViewTests } from './areas/notebook/notebookView.test';
import { ApplicationOptions } from '../../../automation';
import * as yazl from 'yauzl';
import * as fs from 'fs';
@@ -19,6 +20,7 @@ export function main(isWeb: boolean = false): void {
setupQueryEditorTests();
}
setupNotebookTests();
setupNotebookViewTests();
}
/* eslint-disable no-sync */