Add more tests

This commit is contained in:
Daniel Imms 2019-07-31 10:24:42 -07:00
parent 65cd41503b
commit e723f810ec
4 changed files with 38 additions and 17 deletions

View file

@ -30,7 +30,7 @@ export class SettingsEditor {
async clearUserSettings(): Promise<void> {
const settingsPath = path.join(this.userDataPath, 'User', 'settings.json');
await new Promise((c, e) => fs.writeFile(settingsPath, '{}', 'utf8', err => err ? e(err) : c()));
await new Promise((c, e) => fs.writeFile(settingsPath, '{\n}', 'utf8', err => err ? e(err) : c()));
await this.openSettings();
await this.editor.waitForEditorContents('settings.json', c => c === '{}');

View file

@ -141,7 +141,8 @@ if (typeof stablePath === 'string' && !fs.existsSync(stablePath)) {
fail(`Can't find Stable Code at ${stablePath}.`);
}
const userDataDir = path.join(testDataPath, 'd');
// TODO: Server should be launched from smoke tests
const userDataDir = opts.web ? path.join(process.env.HOME!, '.vscode-remote/data') : path.join(testDataPath, 'd');
let quality: Quality;
if (process.env.VSCODE_DEV === '1') {
@ -245,6 +246,11 @@ describe('Running Code', () => {
const app = new Application(this.defaultOptions);
await app!.start(opts.web ? false : undefined);
this.app = app;
// TODO: User data dir is not cleared for web yet
if (opts.web) {
await app.workbench.settingsEditor.clearUserSettings();
}
});
after(async function () {
@ -273,7 +279,8 @@ describe('Running Code', () => {
}
if (opts.web) {
console.log('setup term tests only');
setupDataExplorerTests();
setupDataPreferencesTests();
setupTerminalTests();
return;
}

View file

@ -11,7 +11,13 @@ const height = 800;
const vscodeToPuppeteerKey = {
cmd: 'Meta',
ctrl: 'Control',
enter: 'Enter'
enter: 'Enter',
escape: 'Escape',
right: 'ArrowRight',
up: 'ArrowUp',
down: 'ArrowDown',
left: 'ArrowLeft',
home: 'Home'
};
function buildDriver(browser: puppeteer.Browser, page: puppeteer.Page): IDriver {
@ -24,7 +30,12 @@ function buildDriver(browser: puppeteer.Browser, page: puppeteer.Page): IDriver
reloadWindow: (windowId) => Promise.resolve(),
exitApplication: () => browser.close(),
dispatchKeybinding: async (windowId, keybinding) => {
const keys = keybinding.split('+');
const chords = keybinding.split(' ');
chords.forEach(async (chord, index) => {
if (index > 0) {
await timeout(100);
}
const keys = chord.split('+');
const keysDown: string[] = [];
for (let i = 0; i < keys.length; i++) {
if (keys[i] in vscodeToPuppeteerKey) {
@ -36,6 +47,9 @@ function buildDriver(browser: puppeteer.Browser, page: puppeteer.Page): IDriver
while (keysDown.length > 0) {
await page.keyboard.up(keysDown.pop()!);
}
});
await timeout(100);
},
click: async (windowId, selector, xoffset, yoffset) => {
const { x, y } = await page.evaluate(`