mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
basic text cell functionality smoke test (#15195)
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
<div style="overflow: hidden; width: 100%; height: 100%; display: flex; flex-flow: column">
|
<div style="overflow: hidden; width: 100%; height: 100%; display: flex; flex-flow: column">
|
||||||
<div class="placeholder-cell-component" style="flex: 0 0 auto;">
|
<div class="placeholder-cell-component" style="flex: 0 0 auto;">
|
||||||
<div class="placeholder-cell-component text">
|
<div class="placeholder-cell-component text">
|
||||||
<p>{{clickOn}} <a href="#" (click)="addCell('code', $event)">{{plusCode}}</a> {{or}} <a href="#" (click)="addCell('markdown', $event)">{{plusText}}</a> {{toAddCell}}</p>
|
<p>{{clickOn}} <a id="addCode" href="#" (click)="addCell('code', $event)">{{plusCode}}</a> {{or}} <a id="addMarkdown" href="#" (click)="addCell('markdown', $event)">{{plusText}}</a> {{toAddCell}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -15,6 +15,7 @@ export class Notebook {
|
|||||||
|
|
||||||
public readonly toolbar: NotebookToolbar;
|
public readonly toolbar: NotebookToolbar;
|
||||||
public readonly view: NotebookView;
|
public readonly view: NotebookView;
|
||||||
|
private newNotebookCount: number = 0;
|
||||||
|
|
||||||
constructor(private code: Code, private quickAccess: QuickAccess, private quickInput: QuickInput, private editors: Editors) {
|
constructor(private code: Code, private quickAccess: QuickAccess, private quickInput: QuickInput, private editors: Editors) {
|
||||||
this.toolbar = new NotebookToolbar(code);
|
this.toolbar = new NotebookToolbar(code);
|
||||||
@@ -31,10 +32,13 @@ export class Notebook {
|
|||||||
|
|
||||||
async newUntitledNotebook(): Promise<void> {
|
async newUntitledNotebook(): Promise<void> {
|
||||||
await this.code.dispatchKeybinding(winOrCtrl + '+alt+n');
|
await this.code.dispatchKeybinding(winOrCtrl + '+alt+n');
|
||||||
await this.editors.waitForActiveTab('Notebook-0');
|
await this.editors.waitForActiveTab(`Notebook-${this.newNotebookCount}`);
|
||||||
await this.code.waitForElement('.notebookEditor');
|
await this.code.waitForElement('.notebookEditor');
|
||||||
|
this.newNotebookCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notebook Toolbar Actions
|
||||||
|
|
||||||
async addCell(cellType: 'markdown' | 'code'): Promise<void> {
|
async addCell(cellType: 'markdown' | 'code'): Promise<void> {
|
||||||
if (cellType === 'markdown') {
|
if (cellType === 'markdown') {
|
||||||
await this.code.dispatchKeybinding('ctrl+shift+t');
|
await this.code.dispatchKeybinding('ctrl+shift+t');
|
||||||
@@ -79,6 +83,8 @@ export class Notebook {
|
|||||||
await this.toolbar.waitForNotTrustedIcon();
|
await this.toolbar.waitForNotTrustedIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cell Actions
|
||||||
|
|
||||||
async waitForTypeInEditor(text: string) {
|
async waitForTypeInEditor(text: string) {
|
||||||
const editor = '.notebook-cell.active .monaco-editor';
|
const editor = '.notebook-cell.active .monaco-editor';
|
||||||
await this.code.waitAndClick(editor);
|
await this.code.waitAndClick(editor);
|
||||||
@@ -95,6 +101,46 @@ export class Notebook {
|
|||||||
return this.code.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' ')));
|
return this.code.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' ')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static readonly placeholderSelector = 'div.placeholder-cell-component';
|
||||||
|
async addCellFromPlaceholder(cellType: 'Markdown' | 'Code'): Promise<void> {
|
||||||
|
await this.code.waitAndClick(`${Notebook.placeholderSelector} p a[id="add${cellType}"]`);
|
||||||
|
await this.code.waitForElement('.notebook-cell.active');
|
||||||
|
}
|
||||||
|
|
||||||
|
async waitForPlaceholderGone(): Promise<void> {
|
||||||
|
await this.code.waitForElementGone(Notebook.placeholderSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Text Cell Actions
|
||||||
|
|
||||||
|
private static readonly textCellPreviewSelector = 'div.notebook-preview';
|
||||||
|
private static readonly doubleClickToEditSelector = `${Notebook.textCellPreviewSelector} p i`;
|
||||||
|
async waitForDoubleClickToEdit(): Promise<void> {
|
||||||
|
await this.code.waitForElement(Notebook.doubleClickToEditSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
async doubleClickTextCell(): Promise<void> {
|
||||||
|
await this.code.waitAndClick(Notebook.textCellPreviewSelector);
|
||||||
|
await this.code.waitAndDoubleClick(`${Notebook.textCellPreviewSelector}.actionselect`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async waitForDoubleClickToEditGone(): Promise<void> {
|
||||||
|
await this.code.waitForElementGone(Notebook.doubleClickToEditSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static readonly textCellToolbar = 'text-cell-component markdown-toolbar-component ul.actions-container';
|
||||||
|
async changeTextCellView(view: 'Rich Text View' | 'Split View' | 'Markdown View'): Promise<void> {
|
||||||
|
const actionSelector = `${Notebook.textCellToolbar} a[title="${view}"]`;
|
||||||
|
await this.code.waitAndClick(actionSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
async waitForTextCellPreviewContent(text: string, fontType: 'p' | 'h1' | 'h2' | 'h3'): Promise<void> {
|
||||||
|
const textSelector = `${Notebook.textCellPreviewSelector} ${fontType}`;
|
||||||
|
await this.code.waitForElement(textSelector, result => result?.textContent === text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cell Output Actions
|
||||||
|
|
||||||
async waitForActiveCellResults(): Promise<void> {
|
async waitForActiveCellResults(): Promise<void> {
|
||||||
const outputComponent = '.notebook-cell.active .notebook-output';
|
const outputComponent = '.notebook-cell.active .notebook-output';
|
||||||
await this.code.waitForElement(outputComponent);
|
await this.code.waitForElement(outputComponent);
|
||||||
|
|||||||
@@ -59,6 +59,24 @@ export function setup() {
|
|||||||
|
|
||||||
await app.workbench.quickaccess.runCommand('workbench.action.closeActiveEditor');
|
await app.workbench.quickaccess.runCommand('workbench.action.closeActiveEditor');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('can perform basic text cell functionality', async function () {
|
||||||
|
const app = this.app as Application;
|
||||||
|
await app.workbench.sqlNotebook.newUntitledNotebook();
|
||||||
|
await app.workbench.sqlNotebook.addCellFromPlaceholder('Markdown');
|
||||||
|
await app.workbench.sqlNotebook.waitForPlaceholderGone();
|
||||||
|
|
||||||
|
await app.code.dispatchKeybinding('escape');
|
||||||
|
await app.workbench.sqlNotebook.waitForDoubleClickToEdit();
|
||||||
|
await app.workbench.sqlNotebook.doubleClickTextCell();
|
||||||
|
await app.workbench.sqlNotebook.waitForDoubleClickToEditGone();
|
||||||
|
|
||||||
|
await app.workbench.sqlNotebook.changeTextCellView('Split View');
|
||||||
|
const sampleText: string = 'Test text cells';
|
||||||
|
await app.workbench.sqlNotebook.waitForTypeInEditor(sampleText);
|
||||||
|
await app.code.dispatchKeybinding('escape');
|
||||||
|
await app.workbench.sqlNotebook.waitForTextCellPreviewContent(sampleText, 'p');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user