diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index b99a42ca..5cee2de6 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -31,12 +31,12 @@ jobs: path: ~/.npm key: node-modules-${{ hashFiles('app/package-lock.json') }} - - name: Install Node.js dependencies - run: | - cd app - npm ci + # - name: Install Node.js dependencies + # run: | + # cd app + # npm ci - - name: Setup Env Vars not in github secrets + - name: Setup Dummy Env Vars run: | cd app cp .env.server.example .env.server diff --git a/app/ci-start-app-with-scripts.js b/app/ci-start-app-with-scripts.js new file mode 100644 index 00000000..049db80f --- /dev/null +++ b/app/ci-start-app-with-scripts.js @@ -0,0 +1,43 @@ +const cp = require('child_process'); +const readline = require('linebyline'); + +function spawn(name, cmd, args, done) { + const spawnOptions = { + detached: true, + }; + const proc = cp.spawn(cmd, args, spawnOptions); + + proc.stdin.destroy(); + + readline(proc.stdout).on('line', (data) => { + console.log(`\x1b[0m\x1b[33m[${name}][out]\x1b[0m ${data}`); + }); + readline(proc.stderr).on('line', (data) => { + console.log(`\x1b[0m\x1b[33m[${name}][err]\x1b[0m ${data}`); + }); + proc.on('exit', done); +} + +const cb = (code) => { + if (code !== 0) { + process.exit(code); + } +}; + +spawn( + 'db-cleanup', + 'sh', + [ + '-c', + '(docker container rm $(docker container ls -f name=^wasp-dev-db-OpenSaaS- -q) -f || true) && docker volume rm$(docker volume ls -f name=^wasp-dev-db-OpenSaaS- -q) -f || true', + ], + cb +); + +spawn('db', 'wasp', ['start', 'db'], cb); + +spawn('wait-for-db', 'npx', ['wait-port', '5432'], cb); + +spawn('db-migrate', 'wasp', ['db', 'migrate-dev'], cb); + +spawn('app', 'wasp', ['start'], cb); diff --git a/app/package.json b/app/package.json index b0c6e6cd..5891c224 100644 --- a/app/package.json +++ b/app/package.json @@ -1,13 +1,6 @@ { "name": "opensaas", "scripts": { - "example-app:start": "node ci-start-app.js", - "example-app:start-db": "npm run example-app:cleanup-db && wasp start db", - "example-app:start-app": "npm run example-app:wait-for-db && wasp db migrate-dev && wasp start", - "example-app:wait-for-db": "npx wait-port 5432", - "example-app:cleanup-db": "(docker container rm $(docker container ls -f name=^wasp-dev-db-OpenSaaS- -q) -f || true) && docker volume rm $(docker volume ls -f name=^wasp-dev-db-OpenSaaS- -q) -f || true", - "example-app:playwright": "playwright test", - "example-app:playwright:ui": "playwright test --ui" }, "dependencies": { "@aws-sdk/client-s3": "^3.523.0", diff --git a/app/playwright.config.ts b/app/playwright.config.ts index 7949a6e5..d5b3e0d7 100644 --- a/app/playwright.config.ts +++ b/app/playwright.config.ts @@ -56,7 +56,7 @@ export default defineConfig({ // only run the web server on CI webServer: process.env.CI ? { - command: 'npm run example-app:start', + command: 'node ci-start-app-with-scripts.js', // Wait for the backend to start url: 'http://localhost:3001', reuseExistingServer: !process.env.CI,