/
puppeteer.ts
40 lines (32 loc) 路 1.06 KB
/
puppeteer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* eslint-disable @typescript-eslint/no-var-requires */
import { Config } from '@jest/types';
import { setup, teardown } from 'jest-dev-server';
import onExit from 'signal-exit';
const {
server: { server },
} = require('./server.config');
const { teardown: teardownPuppeteer } = require('jest-environment-puppeteer');
const { setup: setupPuppeteer } = require('jest-environment-puppeteer');
let serverSetupPromise: Promise<void> | undefined;
export const destroyServer = async (globalConfig?: Config.GlobalConfig) => {
serverSetupPromise = undefined;
await teardown();
await teardownPuppeteer(globalConfig);
};
export const setupServer = async (globalConfig: Config.GlobalConfig) => {
await setup([server]);
onExit(() => {
destroyServer().then(() => {
process.exit();
});
});
await setupPuppeteer(globalConfig);
};
export const startServer = (globalConfig: Config.GlobalConfig) => {
if (serverSetupPromise) {
return serverSetupPromise;
} else {
serverSetupPromise = setupServer(globalConfig);
return serverSetupPromise;
}
};