Repository navigation
156 lines (135 loc) · 3.88 KB
/
Copy pathtests.yml
File metadata and controls
156 lines (135 loc) · 3.88 KB
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Tests
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
env:
DB_CONNECTION: pgsql
DB_DATABASE: trypost_test
DB_USERNAME: postgres
DB_PASSWORD: password
BROADCAST_CONNECTION: "null"
CACHE_STORE: array
QUEUE_CONNECTION: sync
SESSION_DRIVER: array
jobs:
tests:
name: Tests (${{ matrix.name }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: PostgreSQL
connection: pgsql
image: postgres:16
port: '5432'
username: postgres
health: '--health-cmd="pg_isready"'
- name: MySQL
connection: mysql
image: mysql:8.4
port: '3306'
username: root
health: '--health-cmd="mysqladmin ping -h 127.0.0.1 -u root -ppassword"'
env:
DB_CONNECTION: ${{ matrix.connection }}
DB_USERNAME: ${{ matrix.username }}
services:
database:
image: ${{ matrix.image }}
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: trypost_test
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: trypost_test
ports:
- ${{ matrix.port }}/tcp
options: >-
${{ matrix.health }}
--health-interval=5s
--health-timeout=5s
--health-retries=20
redis:
image: redis:7
ports:
- 6379/tcp
options: >-
--health-cmd="redis-cli ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup test environment
uses: ./.github/actions/setup-laravel
with:
db-port: ${{ job.services.database.ports[matrix.port] }}
redis-port: ${{ job.services.redis.ports['6379'] }}
- name: Run backend tests
env:
DB_PORT: ${{ job.services.database.ports[matrix.port] }}
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
run: php artisan test --compact --parallel
backend:
name: backend
runs-on: ubuntu-latest
needs: [tests]
if: always()
steps:
- name: Fail unless every engine passed
run: '[ "${{ needs.tests.result }}" = "success" ]'
e2e:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: trypost_test
ports:
- 5432/tcp
options: >-
--health-cmd="pg_isready"
--health-interval=10s
--health-timeout=5s
--health-retries=3
redis:
image: redis:7
ports:
- 6379/tcp
options: >-
--health-cmd="redis-cli ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup test environment
uses: ./.github/actions/setup-laravel
with:
node: 'true'
db-port: ${{ job.services.postgres.ports['5432'] }}
redis-port: ${{ job.services.redis.ports['6379'] }}
- name: Build assets
run: npm run build
- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
- name: Run browser tests
env:
DB_PORT: ${{ job.services.postgres.ports['5432'] }}
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
run: php artisan test tests/Browser --compact
- name: Upload Playwright artifacts
if: failure()
uses: actions/upload-artifact@v7
with:
name: playwright-artifacts
path: tests/Browser/Screenshots
if-no-files-found: ignore
retention-days: 7