test(frontend): Start backend automatisch op
This commit is contained in:
		
							parent
							
								
									cbd214c445
								
							
						
					
					
						commit
						37be342137
					
				
					 2 changed files with 41 additions and 0 deletions
				
			
		
							
								
								
									
										39
									
								
								frontend/tests/setup-backend.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								frontend/tests/setup-backend.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | ||||||
|  | import { spawn } from 'child_process'; | ||||||
|  | import { ChildProcess } from 'node:child_process'; | ||||||
|  | 
 | ||||||
|  | let backendProcess: ChildProcess; | ||||||
|  | 
 | ||||||
|  | export async function setup(): Promise<void> { | ||||||
|  |     // Spin up the database
 | ||||||
|  |     spawn('docker', ['compose', 'up', 'db', '--detach'], { | ||||||
|  |         cwd: '..', | ||||||
|  |         stdio: "pipe", | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     backendProcess = spawn('npm', ['run', 'dev'], { | ||||||
|  |         cwd: '../backend', | ||||||
|  |         stdio: "pipe", | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // Wait until you can curl the backend
 | ||||||
|  |     let backendReady = false; | ||||||
|  |     while (!backendReady) { | ||||||
|  |         try { | ||||||
|  |             await fetch('http://localhost:3000/api') | ||||||
|  |             backendReady = true; | ||||||
|  |         } catch (_) { | ||||||
|  |             // Ignore the error
 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export async function teardown(): Promise<void> { | ||||||
|  |     if (backendProcess) { | ||||||
|  |         backendProcess.kill(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     spawn('docker', ['compose', 'down'], { | ||||||
|  |         cwd: '..', | ||||||
|  |         stdio: "pipe" | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | @ -9,6 +9,8 @@ export default mergeConfig( | ||||||
|             environment: "jsdom", |             environment: "jsdom", | ||||||
|             exclude: [...configDefaults.exclude, "e2e/**"], |             exclude: [...configDefaults.exclude, "e2e/**"], | ||||||
|             root: fileURLToPath(new URL("./", import.meta.url)), |             root: fileURLToPath(new URL("./", import.meta.url)), | ||||||
|  |             // Startup the backend server, because it is needed for some tests
 | ||||||
|  |             globalSetup: [ "./tests/setup-backend.ts" ] | ||||||
|         }, |         }, | ||||||
|     }), |     }), | ||||||
| ); | ); | ||||||
|  |  | ||||||
		Reference in a new issue