(projectFolder: string)
| 101 | } |
| 102 | |
| 103 | async function startDevServer(projectFolder: string): Promise<cp.ChildProcessWithoutNullStreams> { |
| 104 | const devServerListening = getDeferred(); |
| 105 | const devServerProc = cp.spawn('npm', ['run-script', 'start'], { |
| 106 | env: { ...process.env, BROWSER: 'none', SKIP_PREFLIGHT_CHECK: 'true' }, |
| 107 | cwd: projectFolder, |
| 108 | stdio: 'pipe', |
| 109 | }); |
| 110 | const timer = setTimeout(() => { |
| 111 | console.log('Did not get recognized dev server output, continuing'); |
| 112 | devServerListening.resolve(undefined); |
| 113 | }, 10000); |
| 114 | devServerProc.stdout.on('data', d => { |
| 115 | d = d.toString(); |
| 116 | if (d.includes('You can now view')) { |
| 117 | console.log('Detected CRA dev server started'); |
| 118 | devServerListening.resolve(undefined); |
| 119 | } else if (d.includes('Something is already')) { |
| 120 | devServerListening.reject(new Error('Failed to start the dev server: ' + d)); |
| 121 | } |
| 122 | |
| 123 | console.log(d.toString().replace(/\r?\n$/, '')); |
| 124 | }); |
| 125 | devServerProc.stderr.on('data', d => console.error(d.toString().replace(/\r?\n$/, ''))); |
| 126 | await devServerListening.promise; |
| 127 | clearTimeout(timer); |
| 128 | |
| 129 | return devServerProc; |
| 130 | } |
no test coverage detected