name: Build and Test on: pull_request: branches: - master push: branches: - master jobs: build-and-test: runs-on: ubuntu-latest env: POSTGRES_DB: planka POSTGRES_USER: user POSTGRES_PASSWORD: password steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' - name: Set up PostgreSQL uses: ikalnytskyi/action-setup-postgres@v5 with: database: ${{ env.POSTGRES_DB }} username: ${{ env.POSTGRES_USER }} password: ${{ env.POSTGRES_PASSWORD }} - name: Cache Node.js modules uses: actions/cache@v3 with: path: client/node_modules key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install dependencies and build client run: | npm install cd client npm run build - name: Set up and start server for testing env: DEFAULT_ADMIN_EMAIL: demo@demo.demo DEFAULT_ADMIN_PASSWORD: demo DEFAULT_ADMIN_NAME: Demo Demo DEFAULT_ADMIN_USERNAME: demo run: | client/tests/setup-symlinks.sh cd server cp .env.sample .env sed -i "s|^DATABASE_URL=.*|DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost/${POSTGRES_DB}|" .env npm run db:init npm start --prod & - name: Wait for server to start run: | sudo apt-get install wait-for-it -y wait-for-it -h localhost -p 1337 -t 10 - name: Run UI tests run: | npx playwright install chromium npm run test:acceptance working-directory: ./client