Reduce flakiness

This commit is contained in:
Daniel Imms
2019-11-09 18:43:25 -08:00
parent b0640b7705
commit 971e69f505
4 changed files with 31 additions and 35 deletions
@@ -53,18 +53,14 @@ describe('WebLinksAddon', () => {
async function testHostName(hostname: string): Promise<void> {
await openTerminal({ rendererType: 'dom' });
await page.evaluate(`window.term.loadAddon(new window.WebLinksAddon())`);
await new Promise<void>(r => setTimeout(r, 100));
await page.evaluate(`
window.ready = false;
window.term.writeln(' http://${hostname} ');
window.term.writeln(' http://${hostname}/a~b#c~d?e~f ');
window.term.writeln(' http://${hostname}/colon:test ');
window.term.writeln(' http://${hostname}/colon:test: ');
window.term.writeln('"http://${hostname}/"');
window.term.writeln('\\'http://${hostname}/\\'');
window.term.writeln('http://${hostname}/subpath/+/id', () => window.ready = true);
`);
await pollFor(page, 'window.ready', true);
const data = ` http://${hostname} \\r\\n` +
` http://${hostname}/a~b#c~d?e~f \\r\\n` +
` http://${hostname}/colon:test \\r\\n` +
` http://${hostname}/colon:test: \\r\\n` +
`"http://${hostname}/"\\r\\n` +
`\\'http://${hostname}/\\'\\r\\n` +
`http://${hostname}/subpath/+/id`;
await writeSync(page, data);
await pollForLinkAtCell(3, 1, `http://${hostname}`);
await pollForLinkAtCell(3, 2, `http://${hostname}/a~b#c~d?e~f`);
await pollForLinkAtCell(3, 3, `http://${hostname}/colon:test`);
@@ -101,3 +97,11 @@ async function pollFor(page: puppeteer.Page, fn: string, val: any, preFn?: () =>
});
}
}
async function writeSync(page: puppeteer.Page, data: string): Promise<void> {
await page.evaluate(`
window.ready = false;
window.term.write('${data}', () => window.ready = true);
`);
await pollFor(page, 'window.ready', true);
}
+10 -10
View File
@@ -5,7 +5,7 @@
import * as puppeteer from 'puppeteer';
import { ITerminalOptions } from 'xterm';
import { pollFor } from './TestUtils';
import { pollFor, writeSync } from './TestUtils';
const APP = 'http://127.0.0.1:3000/test';
@@ -199,7 +199,7 @@ function parseReport(encoding: string, msg: number[]): {state: any; row: number;
* Mouse tracking tests.
*/
describe('Mouse Tracking Tests', () => {
before(async () => {
before(async function(): Promise<void> {
browser = await puppeteer.launch({
headless: process.argv.indexOf('--headless') !== -1,
args: [`--window-size=${width},${height}`, `--no-sandbox`]
@@ -237,7 +237,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'DEFAULT';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?9h');`);
await writeSync(page, '\x1b[?9h');
// test at 0,0
await mouseDown('left');
@@ -359,7 +359,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'SGR';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?9h\x1b[?1006h');`);
await writeSync(page, '\x1b[?9h\x1b[?1006h');
// test at 0,0
await mouseDown('left');
@@ -486,7 +486,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'DEFAULT';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?1000h');`);
await writeSync(page, '\x1b[?1000h');
// test at 0,0
await mouseDown('left');
@@ -638,7 +638,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'SGR';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?1000h\x1b[?1006h');`);
await writeSync(page, '\x1b[?1000h\x1b[?1006h');
// test at 0,0
await mouseDown('left');
@@ -796,7 +796,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'DEFAULT';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?1002h');`);
await writeSync(page, '\x1b[?1002h');
// test at 0,0
await mouseDown('left');
@@ -953,7 +953,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'SGR';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?1002h\x1b[?1006h');`);
await writeSync(page, '\x1b[?1002h\x1b[?1006h');
// test at 0,0
// bug: release is fired immediately
@@ -1115,7 +1115,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'DEFAULT';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?1003h');`);
await writeSync(page, '\x1b[?1003h');
// test at 0,0
await mouseDown('left');
@@ -1276,7 +1276,7 @@ describe('Mouse Tracking Tests', () => {
const encoding = 'SGR';
await resetMouseModes();
await mouseMove(0, 0);
await page.evaluate(`window.term.write('\x1b[?1003h\x1b[?1006h');`);
await writeSync(page, '\x1b[?1003h\x1b[?1006h');
// test at 0,0
await mouseDown('left');
+5 -12
View File
@@ -6,6 +6,7 @@
import * as puppeteer from 'puppeteer';
import { assert } from 'chai';
import { ITerminalOptions } from 'xterm';
import { writeSync } from './TestUtils';
const APP = 'http://127.0.0.1:3000/test';
@@ -38,9 +39,7 @@ describe('Parser Integration Tests', function(): void {
return false;
}, '');
`);
await page.evaluate(`
window.term.write('\x1b[38;5;123mparams\x1b[38:2::50:100:150msubparams');
`);
await writeSync(page, '\x1b[38;5;123mparams\x1b[38:2::50:100:150msubparams');
assert.deepEqual(await page.evaluate(`(() => _customCsiHandlerParams)();`), [[38, 5, 123], [38, [2, -1, 50, 100, 150]]]);
});
});
@@ -62,9 +61,7 @@ describe('Parser Integration Tests', function(): void {
return false;
});
`);
await page.evaluate(`
window.term.write('\x1bP1;2+psome data\x1b\\\\');
`);
await writeSync(page, '\x1bP1;2+psome data\x1b\\\\');
assert.deepEqual(await page.evaluate(`(() => _customDcsHandlerCallStack)();`), [['C', [1, 2], 'some data'], ['B', [1, 2], 'some data']]);
});
});
@@ -86,9 +83,7 @@ describe('Parser Integration Tests', function(): void {
return false;
});
`);
await page.evaluate(`
window.term.write('\x1b(B');
`);
await writeSync(page, '\x1b(B');
assert.deepEqual(await page.evaluate(`(() => _customEscHandlerCallStack)();`), ['C', 'B']);
});
});
@@ -110,9 +105,7 @@ describe('Parser Integration Tests', function(): void {
return false;
});
`);
await page.evaluate(`
window.term.write('\x1b]1234;some data\x07');
`);
await writeSync(page, '\x1b]1234;some data\x07');
assert.deepEqual(await page.evaluate(`(() => _customOscHandlerCallStack)();`), [['C', 'some data'], ['B', 'some data']]);
});
});
-1
View File
@@ -12,7 +12,6 @@ export async function pollFor<T>(page: puppeteer.Page, evalOrFn: string | (() =>
}
const result = typeof evalOrFn === 'string' ? await page.evaluate(evalOrFn) : await evalOrFn();
if (!deepEqual(result, val)) {
console.log('result', result, 'val', val);
return new Promise<void>(r => {
setTimeout(() => r(pollFor(page, evalOrFn, val, preFn)), 1);
});