Skip to content

Commit 5dd704a

Browse files
wip(tests): make await page.close() optional to ease test creation (use DEV=1 & test.only())
1 parent 6cc0a05 commit 5dd704a

File tree

2 files changed

+27
-29
lines changed

2 files changed

+27
-29
lines changed

tests/basic.test.js

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
2424
});
2525
await expect(page.$eval('#app', el => el.textContent.trim())).resolves.toBe('Hello World !');
2626

27-
await page.close();
2827
});
2928

3029

@@ -45,7 +44,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
4544
await expect(output.some(e => e.type === 'error' && e.content[0] === 'SFC template')).toBe(true);
4645
//await new Promise(resolve => page.on('consoleValues', ({ type, args }) => type === 'error' && args[0] === 'SFC template' && resolve() ));
4746

48-
await page.close();
4947
});
5048

5149

@@ -69,7 +67,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
6967

7068
await expect(output.some(e => e.type === 'error' && e.content[0] === 'SFC style')).toBe(true);
7169

72-
await page.close();
7370
});
7471

7572

@@ -88,7 +85,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
8885

8986
await expect(output.some(e => e.type === 'error' && e.content[0] === 'SFC script')).toBe(true);
9087

91-
await page.close();
9288
});
9389

9490

@@ -116,7 +112,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
116112
await expect(page.$eval('#app', el => el.textContent.trim())).resolves.toBe('Hello World !');
117113
await expect(!output.some(e => e.type === 'error')).toBe(true);
118114

119-
await page.close();
120115
});
121116

122117

@@ -135,7 +130,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
135130

136131
await expect(output.filter(e => e.type === 'pageerror' && e.text).map(e => e.text)[0]).toMatch(/.*HTTP Error.*/);
137132

138-
await page.close();
139133
});
140134

141135

@@ -163,7 +157,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
163157

164158
)).resolves.toBe(true);
165159

166-
await page.close();
167160
});
168161

169162

@@ -191,7 +184,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
191184

192185
)).resolves.toBe(false);
193186

194-
await page.close();
195187
});
196188

197189

@@ -225,7 +217,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
225217

226218
await expect(output.some(e => e.type === 'log' && e.content[0] === 'test_ok' )).toBe(true);
227219

228-
await page.close();
229220
});
230221

231222

@@ -259,7 +250,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
259250

260251
await expect(output.some(e => e.type === 'log' && e.content[0] === 'test_ok' )).toBe(true);
261252

262-
await page.close();
263253
});
264254

265255

@@ -293,7 +283,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
293283

294284
await expect(output.some(e => e.type === 'log' && e.content[0] === 'test_ok' )).toBe(true);
295285

296-
await page.close();
297286
});
298287

299288

@@ -329,7 +318,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
329318

330319
await expect(output.some(e => e.type === 'log' && e.content[0] === 'test_ok' )).toBe(true);
331320

332-
await page.close();
333321
});
334322

335323

@@ -387,7 +375,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
387375

388376
expect(await page.content()).toEqual(expect.stringContaining('<span><span>foo (<span>bar (test)</span>)</span></span>'));
389377

390-
await page.close();
391378
});
392379

393380

@@ -408,7 +395,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
408395

409396
expect(output.filter(e => e.type === 'log').map(e => e.content).flat().join(',')).toBe('error,done');
410397

411-
await page.close();
412398
});
413399

414400

@@ -451,7 +437,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
451437

452438
expect(output.filter(e => e.type === 'log').map(e => e.content).flat().join(',')).toBe('foo,bar,baz');
453439

454-
await page.close();
455440
});
456441

457442

@@ -508,7 +493,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
508493

509494
expect(output.filter(e => e.type === 'log').map(e => e.content).flat().join(',')).toBe('cache.get,cache.set,mounted,cache.get,mounted');
510495

511-
await page.close();
512496
});
513497

514498

@@ -533,7 +517,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
533517

534518
await expect(page.$eval('#app', el => el.textContent.trim())).resolves.toBe('Custom Hello World !');
535519

536-
await page.close();
537520
});
538521

539522

@@ -574,7 +557,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
574557
}))
575558
.resolves.toMatch(/\.hello-world.*/);
576559

577-
await page.close();
578560
});
579561

580562

@@ -599,7 +581,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
599581

600582
await expect(output.filter(e => e.type === 'pageerror' && e.text).map(e => e.text)[0]).toMatch(`SyntaxError: 'import' and 'export' may appear only with 'sourceType: "module"'`);
601583

602-
await page.close();
603584
});
604585

605586

@@ -643,7 +624,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
643624
await expect(page.$eval('#app', el => el.textContent.trim())).resolves.toBe('Hello World !');
644625
await expect(page.$eval('#app .test', el => JSON.parse(JSON.stringify(getComputedStyle(el))))).resolves.toMatchObject( { color: 'rgb(255, 0, 0)' } );
645626

646-
await page.close();
647627
});
648628

649629

@@ -678,7 +658,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
678658
});
679659

680660
await expect(page.$eval('#app', el => el.innerHTML)).resolves.toMatch(/.*[CDATA[10]].*/);
681-
await page.close();
682661
});
683662

684663

@@ -715,7 +694,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
715694
});
716695

717696
await expect(page.$eval('#app', el => el.innerHTML)).resolves.toMatch(`<div><div>hello</div><div>foo</div><div>bar</div><div id="foo" class="bar"></div></div>`);
718-
await page.close();
719697
});
720698

721699

@@ -736,7 +714,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
736714
// original Vue2 expected match: `_vm.store.foo.apply(_vm.store, args)`
737715
// Vue3 expected match: `_ctx.store.foo(...args)`
738716
await expect(page.$eval('#app', el => el.vueApp.$options.render.toString()) ).resolves.toMatch(`.store.foo(...args)`);
739-
await page.close();
740717
});
741718

742719

@@ -772,7 +749,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
772749
});
773750

774751
await expect(page.$eval('#app', el => el.innerHTML)).resolves.toMatch( JSON.stringify({ bar: 2, baz: 3 }, null, 2));
775-
await page.close();
776752
});
777753
}
778754

@@ -793,7 +769,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
793769
});
794770

795771
await expect(page.$eval('#app', el => el.vueApp.$options.render.toString()) ).resolves.toMatch(`return _vm.spy(1);`);
796-
await page.close();
797772
});
798773
}
799774

@@ -823,7 +798,6 @@ const { defaultFilesFactory, createPage } = require('./testsTools.js');
823798
});
824799

825800
await expect(page.$eval('#app', el => el.innerHTML)).resolves.toMatch(`<input>`);
826-
await page.close();
827801
});
828802

829803

tests/testsTools.js

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@ const mime = require('mime-types');
55

66
const local = new URL('http://local/');
77

8-
// call: DEV=1 yarn run tests
9-
// place before page.close: await new Promise(() => {});
10-
//
8+
// DEV
9+
// 1/ call: DEV=1 yarn run tests
10+
// 2/ use test.only(
11+
1112
const isDev = !!JSON.parse(process.env.DEV ?? 0);
1213

1314
if ( isDev )
1415
jest.setTimeout(1e9);
1516

1617

18+
const pendingPages = [];
19+
1720
async function createPage({ files, processors= {}}) {
1821

1922
async function getFile(url) {
@@ -89,9 +92,30 @@ async function createPage({ files, processors= {}}) {
8992

9093
await new Promise(resolve => setTimeout(resolve, 250));
9194

95+
pendingPages.push(page);
96+
9297
return { page, output };
9398
}
9499

100+
101+
// close all pending pages from previous test
102+
beforeEach(async () => {
103+
104+
await Promise.all(pendingPages.map(e => e.isClosed() ? undefined : e.close()));
105+
pendingPages.length = 0;
106+
107+
});
108+
109+
110+
// if dev, suspend on first test
111+
afterEach(async () => {
112+
113+
if ( isDev )
114+
await new Promise(() => {});
115+
116+
});
117+
118+
95119
let browser;
96120

97121
beforeAll(async () => {

0 commit comments

Comments
 (0)