diff --git a/grid.html b/grid.html
new file mode 100644
index 0000000000000..3930d978bd77e
--- /dev/null
+++ b/grid.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+ Grid Example
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
index 785f4e3abc0cc..384c987fed1cf 100644
--- a/index.html
+++ b/index.html
@@ -7,8 +7,6 @@
-
diff --git a/smoke/src/application.ts b/smoke/src/application.ts
index 59f2e6a13c0e2..4894252466c45 100644
--- a/smoke/src/application.ts
+++ b/smoke/src/application.ts
@@ -63,7 +63,7 @@ export class Application {
async start(): Promise {
await this._start();
await this.code.waitForElement('.explorer-folders-view');
- await this.code.waitForActiveElement(`.editor-container[id="workbench.editor.walkThroughPart"] > div > div[tabIndex="0"]`);
+ await this.code.waitForActiveElement(`.editor-instance[id="workbench.editor.walkThroughPart"] > div > div[tabIndex="0"]`);
}
async restart(options: { workspaceOrFolder?: string, extraArgs?: string[] }): Promise {
diff --git a/smoke/src/areas/editor/editor.test.ts b/smoke/src/areas/editor/editor.test.ts
index af9f49cf4c696..bc851c5b0d28d 100644
--- a/smoke/src/areas/editor/editor.test.ts
+++ b/smoke/src/areas/editor/editor.test.ts
@@ -53,18 +53,18 @@ export function setup() {
const app = this.app as Application;
await app.workbench.quickopen.openFile('app.js');
- await app.workbench.editor.gotoDefinition('app.js', 'express', 11);
+ await app.workbench.editor.gotoDefinition('app.js', 'app', 14);
- await app.workbench.editors.waitForActiveTab('index.d.ts');
+ await app.workbench.editor.waitForHighlightingLine('app.js', 11);
});
it(`verifies that 'Peek Definition' works`, async function () {
const app = this.app as Application;
await app.workbench.quickopen.openFile('app.js');
- const peek = await app.workbench.editor.peekDefinition('app.js', 'express', 11);
+ const peek = await app.workbench.editor.peekDefinition('app.js', 'app', 14);
- await peek.waitForFile('index.d.ts');
+ await peek.waitForFile('app.js');
});
});
}
\ No newline at end of file
diff --git a/smoke/src/areas/editor/editors.ts b/smoke/src/areas/editor/editors.ts
index 5ac99c68e8cda..50f244e8ed845 100644
--- a/smoke/src/areas/editor/editors.ts
+++ b/smoke/src/areas/editor/editors.ts
@@ -23,7 +23,7 @@ export class Editors {
}
async waitForActiveEditor(filename: string): Promise {
- const selector = `.editor-container .monaco-editor[data-uri$="${filename}"] textarea`;
+ const selector = `.editor-instance .monaco-editor[data-uri$="${filename}"] textarea`;
return this.code.waitForActiveElement(selector);
}
diff --git a/smoke/src/areas/preferences/settings.ts b/smoke/src/areas/preferences/settings.ts
index 6ac7bffece992..ecdef71c03360 100644
--- a/smoke/src/areas/preferences/settings.ts
+++ b/smoke/src/areas/preferences/settings.ts
@@ -8,6 +8,7 @@ import * as path from 'path';
import { Editor } from '../editor/editor';
import { Editors } from '../editor/editors';
import { Code } from '../../vscode/code';
+import { QuickOpen } from '../quickopen/quickopen';
export enum ActivityBarPosition {
LEFT = 0,
@@ -18,7 +19,7 @@ const SEARCH_INPUT = '.settings-search-input input';
export class SettingsEditor {
- constructor(private code: Code, private userDataPath: string, private editors: Editors, private editor: Editor) { }
+ constructor(private code: Code, private userDataPath: string, private editors: Editors, private editor: Editor, private quickopen: QuickOpen) { }
async addUserSetting(setting: string, value: string): Promise {
await this.openSettings();
@@ -41,10 +42,6 @@ export class SettingsEditor {
}
private async openSettings(): Promise {
- if (process.platform === 'darwin') {
- await this.code.dispatchKeybinding('cmd+,');
- } else {
- await this.code.dispatchKeybinding('ctrl+,');
- }
+ await this.quickopen.runCommand('Preferences: Open User Settings');
}
}
\ No newline at end of file
diff --git a/smoke/src/areas/search/search.test.ts b/smoke/src/areas/search/search.test.ts
index 484e428e7b1f3..3f6b713daf33f 100644
--- a/smoke/src/areas/search/search.test.ts
+++ b/smoke/src/areas/search/search.test.ts
@@ -3,16 +3,23 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
+import * as cp from 'child_process';
import { Application } from '../../application';
export function setup() {
describe('Search', () => {
+ after(function () {
+ const app = this.app as Application;
+ cp.execSync('git checkout .', { cwd: app.workspacePath });
+ cp.execSync('git reset --hard origin/master', { cwd: app.workspacePath });
+ });
+
it('searches for body & checks for correct result number', async function () {
const app = this.app as Application;
await app.workbench.search.openSearchViewlet();
await app.workbench.search.searchFor('body');
- await app.workbench.search.waitForResultText('14 results in 5 files');
+ await app.workbench.search.waitForResultText('21 results in 6 files');
});
it('searches only for *.js files & checks for correct result number', async function () {
@@ -31,7 +38,7 @@ export function setup() {
const app = this.app as Application;
await app.workbench.search.searchFor('body');
await app.workbench.search.removeFileMatch(1);
- await app.workbench.search.waitForResultText('10 results in 4 files');
+ await app.workbench.search.waitForResultText('17 results in 5 files');
});
it('replaces first search result with a replace term', async function () {
@@ -42,7 +49,7 @@ export function setup() {
await app.workbench.search.setReplaceText('ydob');
await app.workbench.search.replaceFileMatch(1);
- await app.workbench.search.waitForResultText('10 results in 4 files');
+ await app.workbench.search.waitForResultText('17 results in 5 files');
await app.workbench.search.searchFor('ydob');
await app.workbench.search.setReplaceText('body');
diff --git a/smoke/src/areas/search/search.ts b/smoke/src/areas/search/search.ts
index b1ce30d30b499..f5cda6b2af1cf 100644
--- a/smoke/src/areas/search/search.ts
+++ b/smoke/src/areas/search/search.ts
@@ -63,6 +63,10 @@ export class Search extends Viewlet {
await this.code.waitAndClick(`${VIEWLET} .search-widget .monaco-button.toggle-replace-button.collapse`);
}
+ async collapseReplace(): Promise {
+ await this.code.waitAndClick(`${VIEWLET} .search-widget .monaco-button.toggle-replace-button.expand`);
+ }
+
async setReplaceText(text: string): Promise {
await this.code.waitAndClick(`${VIEWLET} .search-widget .replace-container .monaco-inputbox input[title="Replace"]`);
await this.code.waitForElement(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`);
diff --git a/smoke/src/areas/workbench/workbench.ts b/smoke/src/areas/workbench/workbench.ts
index 661e0699a4da9..005265f912cec 100644
--- a/smoke/src/areas/workbench/workbench.ts
+++ b/smoke/src/areas/workbench/workbench.ts
@@ -55,7 +55,7 @@ export class Workbench {
this.debug = new Debug(code, this.quickopen, this.editors, this.editor);
this.statusbar = new StatusBar(code);
this.problems = new Problems(code);
- this.settingsEditor = new SettingsEditor(code, userDataPath, this.editors, this.editor);
+ this.settingsEditor = new SettingsEditor(code, userDataPath, this.editors, this.editor, this.quickopen);
this.keybindingsEditor = new KeybindingsEditor(code);
this.terminal = new Terminal(code);
}
diff --git a/smoke/src/main.ts b/smoke/src/main.ts
index 9d2262a1dc785..69caa041d4138 100644
--- a/smoke/src/main.ts
+++ b/smoke/src/main.ts
@@ -188,8 +188,8 @@ async function setupRepository(): Promise {
cp.spawnSync('git', ['clean', '-xdf'], { cwd: workspacePath });
}
- console.log('*** Running npm install...');
- cp.execSync('npm install', { cwd: workspacePath, stdio: 'inherit' });
+ console.log('*** Running yarn...');
+ cp.execSync('yarn', { cwd: workspacePath, stdio: 'inherit' });
}
}
diff --git a/smoke/src/utils.ts b/smoke/src/utils.ts
new file mode 100644
index 0000000000000..35d9ef41ad905
--- /dev/null
+++ b/smoke/src/utils.ts
@@ -0,0 +1,18 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { ISuiteCallbackContext, ITestCallbackContext } from 'mocha';
+
+export function describeRepeat(n: number, description: string, callback: (this: ISuiteCallbackContext) => void): void {
+ for (let i = 0; i < n; i++) {
+ describe(`${description} (iteration ${i})`, callback);
+ }
+}
+
+export function itRepeat(n: number, description: string, callback: (this: ITestCallbackContext, done: MochaDone) => any): void {
+ for (let i = 0; i < n; i++) {
+ it(`${description} (iteration ${i})`, callback);
+ }
+}