Skip to content

Commit a7b248e

Browse files
committed
Fix flakes in fit addon integration tests
1 parent 7b2e8a6 commit a7b248e

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

addons/addon-fit/test/FitAddon.test.ts

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ import { ITestContext, createTestContext, openTerminal, timeout } from '../../..
1010
let ctx: ITestContext;
1111
test.beforeAll(async ({ browser }) => {
1212
ctx = await createTestContext(browser);
13+
ctx.page.setViewportSize({ width: 1024, height: 768 });
1314
await openTerminal(ctx);
1415
});
1516
test.afterAll(async () => await ctx.page.close());
1617

1718
test.describe('FitAddon', () => {
1819
test.beforeEach(async function(): Promise<any> {
20+
await ctx.page.evaluate(`document.querySelector('#terminal-container').style.display=''`);
1921
await ctx.page.evaluate(`
2022
window.term.reset()
2123
window.fit?.dispose();
@@ -38,15 +40,14 @@ test.describe('FitAddon', () => {
3840
// });
3941

4042
test('no terminal', async function(): Promise<any> {
41-
await ctx.page.evaluate(`window.fit = new FitAddon();`);
42-
strictEqual(await ctx.page.evaluate(`window.fit.proposeDimensions()`), undefined);
43+
await ctx.page.evaluate(`window.fit2 = new FitAddon();`);
44+
strictEqual(await ctx.page.evaluate(`window.fit2.proposeDimensions()`), undefined);
45+
await ctx.page.evaluate(`window.fit2.dispose();`);
4346
});
4447

4548
test.describe('proposeDimensions', () => {
46-
// test.afterEach(() => unloadFit());
47-
4849
test('default', async function(): Promise<any> {
49-
await loadFit();
50+
await setDimensions();
5051
const dimensions: {cols: number, rows: number} = await ctx.page.evaluate(`window.fit.proposeDimensions()`);
5152
ok(dimensions.cols > 85);
5253
ok(dimensions.cols < 88);
@@ -55,7 +56,7 @@ test.describe('FitAddon', () => {
5556
});
5657

5758
test('width', async function(): Promise<any> {
58-
await loadFit(1008);
59+
await setDimensions(1008);
5960
const dimensions: {cols: number, rows: number} = await ctx.page.evaluate(`window.fit.proposeDimensions()`);
6061
ok(dimensions.cols > 108);
6162
ok(dimensions.cols < 111);
@@ -64,7 +65,7 @@ test.describe('FitAddon', () => {
6465
});
6566

6667
test('small', async function(): Promise<any> {
67-
await loadFit(1, 1);
68+
await setDimensions(1, 1);
6869
deepEqual(await ctx.page.evaluate(`window.fit.proposeDimensions()`), {
6970
cols: 2,
7071
rows: 1
@@ -76,7 +77,7 @@ test.describe('FitAddon', () => {
7677
await ctx.page.evaluate(`document.querySelector('#terminal-container').style.display='none'`);
7778
await ctx.page.evaluate(`window.term = new Terminal()`);
7879
await ctx.page.evaluate(`window.term.open(document.querySelector('#terminal-container'))`);
79-
await loadFit();
80+
await setDimensions();
8081
const dimensions: { cols: number, rows: number } | undefined = await ctx.page.evaluate(`window.fit.proposeDimensions()`);
8182
// The value of dims will be undefined if the char measure strategy falls back to the DOM
8283
// method, so only assert if it's not undefined.
@@ -86,15 +87,12 @@ test.describe('FitAddon', () => {
8687
ok(dimensions.rows > 24);
8788
ok(dimensions.rows < 29);
8889
}
89-
await ctx.page.evaluate(`document.querySelector('#terminal-container').style.display='block'`);
9090
});
9191
});
9292

9393
test.describe('fit', () => {
94-
test.afterEach(() => unloadFit());
95-
9694
test('default', async function(): Promise<any> {
97-
await loadFit();
95+
await setDimensions();
9896
await ctx.page.evaluate(`window.fit.fit()`);
9997
const cols: number = await ctx.proxy.cols;
10098
const rows: number = await ctx.proxy.rows;
@@ -105,7 +103,7 @@ test.describe('FitAddon', () => {
105103
});
106104

107105
test('width', async function(): Promise<any> {
108-
await loadFit(1008);
106+
await setDimensions(1008);
109107
await ctx.page.evaluate(`window.fit.fit()`);
110108
const cols: number = await ctx.proxy.cols;
111109
const rows: number = await ctx.proxy.rows;
@@ -116,23 +114,20 @@ test.describe('FitAddon', () => {
116114
});
117115

118116
test('small', async function(): Promise<any> {
119-
await loadFit(1, 1);
117+
await setDimensions(1, 1);
120118
await ctx.page.evaluate(`window.fit.fit()`);
121119
strictEqual(await ctx.proxy.cols, 2);
122120
strictEqual(await ctx.proxy.rows, 1);
123121
});
124122
});
125123
});
126124

127-
async function loadFit(width: number = 800, height: number = 450): Promise<void> {
125+
async function setDimensions(width: number = 800, height: number = 450): Promise<void> {
128126
await ctx.page.evaluate(`
129-
window.fit = new FitAddon();
130-
window.term.loadAddon(window.fit);
131127
document.querySelector('#terminal-container').style.width='${width}px';
132128
document.querySelector('#terminal-container').style.height='${height}px';
129+
document.querySelector('#terminal-container').style.display='';
133130
`);
134-
}
135-
136-
async function unloadFit(): Promise<void> {
137-
await ctx.page.evaluate(`window.fit.dispose();`);
131+
// HACK: Await a short period as hiding #terminal-container can mess with other tests
132+
await timeout(500);
138133
}

0 commit comments

Comments
 (0)