@@ -4,6 +4,7 @@ const { RspackDevServer: Server } = require('@rspack/dev-server');
44const config = require ( '../fixtures/client-config/rspack.config' ) ;
55const runBrowser = require ( '../helpers/run-browser' ) ;
66const sessionSubscribe = require ( '../helpers/session-subscribe' ) ;
7+ const { getRandomPorts } = require ( '../helpers/get-random-port' ) ;
78const port = require ( '../helpers/ports-map' ) . api ;
89
910describe ( 'API' , ( ) => {
@@ -337,12 +338,19 @@ describe('API', () => {
337338 } ) ;
338339
339340 describe ( 'Server.getFreePort' , ( ) => {
341+ let basePort ;
342+ let reservedPorts ;
340343 let dummyServers = [ ] ;
341344 let devServerPort ;
342345
346+ beforeEach ( async ( ) => {
347+ reservedPorts = await getRandomPorts ( 8 , '0.0.0.0' ) ;
348+ [ basePort ] = reservedPorts ;
349+ } ) ;
350+
343351 afterEach ( ( ) => {
344- process . env . RSPACK_DEV_SERVER_BASE_PORT = undefined ;
345- process . env . RSPACK_DEV_SERVER_PORT_RETRY = undefined ;
352+ delete process . env . RSPACK_DEV_SERVER_BASE_PORT ;
353+ delete process . env . RSPACK_DEV_SERVER_PORT_RETRY ;
346354
347355 return dummyServers
348356 . reduce (
@@ -363,14 +371,14 @@ describe('API', () => {
363371 } ) ;
364372
365373 function createDummyServers ( n ) {
366- process . env . RSPACK_DEV_SERVER_BASE_PORT = 60000 ;
374+ process . env . RSPACK_DEV_SERVER_BASE_PORT = ` ${ basePort } ` ;
367375
368376 return ( Array . isArray ( n ) ? n : [ ...new Array ( n ) ] ) . reduce (
369377 ( p , _ , i ) =>
370378 p . then (
371379 ( ) =>
372380 new Promise ( ( resolve ) => {
373- devServerPort = 60000 + i ;
381+ devServerPort = basePort + i ;
374382 const compiler = rspack ( config ) ;
375383 const server = new Server (
376384 { port : devServerPort , host : '0.0.0.0' } ,
@@ -407,7 +415,7 @@ describe('API', () => {
407415
408416 const freePort = await Server . getFreePort ( null ) ;
409417
410- expect ( freePort ) . toEqual ( 60000 + retryCount ) ;
418+ expect ( freePort ) . toEqual ( basePort + retryCount ) ;
411419
412420 const { page, browser } = await runBrowser ( ) ;
413421
@@ -447,7 +455,7 @@ describe('API', () => {
447455 // eslint-disable-next-line no-undefined
448456 const freePort = await Server . getFreePort ( undefined ) ;
449457
450- expect ( freePort ) . toEqual ( 60000 + retryCount ) ;
458+ expect ( freePort ) . toEqual ( basePort + retryCount ) ;
451459
452460 const { page, browser } = await runBrowser ( ) ;
453461
@@ -486,7 +494,7 @@ describe('API', () => {
486494
487495 const freePort = await Server . getFreePort ( ) ;
488496
489- expect ( freePort ) . toEqual ( 60000 + retryCount ) ;
497+ expect ( freePort ) . toEqual ( basePort + retryCount ) ;
490498
491499 const { page, browser } = await runBrowser ( ) ;
492500
@@ -525,7 +533,7 @@ describe('API', () => {
525533
526534 const freePort = await Server . getFreePort ( ) ;
527535
528- expect ( freePort ) . toEqual ( 60000 + retryCount ) ;
536+ expect ( freePort ) . toEqual ( basePort + retryCount ) ;
529537
530538 const { page, browser } = await runBrowser ( ) ;
531539
@@ -556,15 +564,15 @@ describe('API', () => {
556564 } ) ;
557565
558566 it ( 'should retry finding the port when serial ports are busy' , async ( ) => {
559- const busyPorts = [ 60000 , 60001 , 60002 , 60003 , 60004 , 60005 ] ;
567+ const busyPorts = reservedPorts . slice ( 0 , 6 ) ;
560568
561569 process . env . RSPACK_DEV_SERVER_PORT_RETRY = 1000 ;
562570
563571 await createDummyServers ( busyPorts ) ;
564572
565573 const freePort = await Server . getFreePort ( ) ;
566574
567- expect ( freePort ) . toBeGreaterThan ( 60005 ) ;
575+ expect ( freePort ) . toBeGreaterThan ( busyPorts [ busyPorts . length - 1 ] ) ;
568576
569577 const { page, browser } = await runBrowser ( ) ;
570578
0 commit comments