1
- import { getPortPromise } from 'portfinder' ;
2
1
import { TestEnv } from '../../../../../../node-integration-tests/utils' ;
3
2
import * as http from 'http' ;
4
3
import * as path from 'path' ;
5
4
import { createServer , Server } from 'http' ;
6
5
import { parse } from 'url' ;
7
6
import next from 'next' ;
7
+ import { AddressInfo } from 'net' ;
8
8
9
9
// Type not exported from NextJS
10
10
// @ts -ignore
@@ -24,9 +24,10 @@ export const createNextServer = async config => {
24
24
} ) ;
25
25
} ;
26
26
27
- export const startServer = async ( server : Server , port : string | number ) => {
28
- return new Promise ( resolve => {
29
- server . listen ( port || 0 , ( ) => {
27
+ export const startServer = async ( server : Server ) => {
28
+ return new Promise < { server : http . Server ; url : string } > ( resolve => {
29
+ server . listen ( 0 , ( ) => {
30
+ const port = ( server . address ( ) as AddressInfo ) . port ;
30
31
const url = `http://localhost:${ port } ` ;
31
32
resolve ( { server, url } ) ;
32
33
} ) ;
@@ -39,7 +40,6 @@ export class NextTestEnv extends TestEnv {
39
40
}
40
41
41
42
public static async init ( ) : Promise < NextTestEnv > {
42
- const port = await getPortPromise ( ) ;
43
43
const server = await createNextServer ( {
44
44
dev : false ,
45
45
dir : path . resolve ( __dirname , '../../..' ) ,
@@ -50,8 +50,8 @@ export class NextTestEnv extends TestEnv {
50
50
conf : path . resolve ( __dirname , '../../next.config.js' ) ,
51
51
} ) ;
52
52
53
- await startServer ( server , port ) ;
53
+ const { url } = await startServer ( server ) ;
54
54
55
- return new NextTestEnv ( server , `http://localhost: ${ port } ` ) ;
55
+ return new NextTestEnv ( server , url ) ;
56
56
}
57
57
}
0 commit comments