-
Notifications
You must be signed in to change notification settings - Fork 5
140 lines (119 loc) · 3.88 KB
/
e2e-playwright.js.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: End-to-end Tests
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
- master
- develop
pull_request:
jobs:
playwright-e2e:
runs-on: ubuntu-latest
services:
mailhog:
image: mailhog/mailhog
ports:
- 1025:1025 # smtp server
- 8025:8025 # web ui
postgres:
image: postgres
env:
POSTGRES_DB: default
POSTGRES_USER: default
POSTGRES_PASSWORD: secret
TZ: Europe/Warsaw
ports:
- 5432:5432
redis:
image: redis
api:
image: escolalms/api:latest
ports:
- 80:80
env:
LARAVEL_APP_NAME: Wellms Playwright Demo
LARAVEL_APP_ENV: local
LARAVEL_APP_KEY: base64:pveos6JL8iCwO3MbzoyQpNx6TETMYuUpfZ18CDKl6Cw=
LARAVEL_APP_DEBUG: true
LARAVEL_APP_LOG_LEVEL: debug
LARAVEL_APP_URL: http://localhost:1000
LARAVEL_DB_CONNECTION: pgsql
LARAVEL_DB_HOST: postgres
LARAVEL_DB_PORT: 5432
LARAVEL_DB_DATABASE: default
LARAVEL_DB_USERNAME: default
LARAVEL_DB_PASSWORD: secret
LARAVEL_BROADCAST_DRIVER: log
LARAVEL_CACHE_DRIVER: redis
LARAVEL_SESSION_DRIVER: cookie
LARAVEL_QUEUE_DRIVER: redis
LARAVEL_QUEUE_CONNECTION: redis
LARAVEL_REDIS_HOST: redis
LARAVEL_REDIS_PASSWORD:
LARAVEL_REDIS_PORT: 6379
LARAVEL_MAIL_DRIVER: smtp
LARAVEL_MAIL_HOST: mailhog
LARAVEL_MAIL_PORT: 1025
LARAVEL_MAIL_USERNAME: null
LARAVEL_MAIL_PASSWORD: null
LARAVEL_MAIL_ENCRYPTION:
LARAVEL_MJML_BINARY_PATH: /usr/bin/mjml
LARAVEL_TRACKER_ENABLED: false
DISABLE_HORIZON: true
DISABLE_SCHEDULER: true
steps:
- name: Wait for container to be healthy
run: |
docker logs api || echo "No logs available for the container."
until docker exec api php artisan health:check; do
echo 'Waiting for container to be healthy...'
docker logs api || echo "No logs available for the container."
sleep 15
done
echo "Container is healthy, proceeding to next step."
- uses: actions/checkout@v2
with:
fetch-depth: 1
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Test login endpoint
run: |
docker ps && \
curl -X POST "http://api:9000/api/auth/login" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "secret"}' \
-i
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- name: Node dependencies
run: npm i --legacy-peer-deps
- name: Build
run: cp .env.ci .env && REACT_APP_API_URL=http://localhost npm run --openssl-legacy-provider build
- name: Install Playwright
run: npx playwright install --with-deps
- name: Run your tests
run: npm run test:e2e
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: test-results