-
Notifications
You must be signed in to change notification settings - Fork 114
153 lines (147 loc) · 5.17 KB
/
test.yaml
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
name: Test
on:
workflow_call:
pull_request:
branches: [main]
paths:
- '**'
- '!docs/**'
- '!examples/**'
- '!*.md'
env:
HASURA_GRAPHQL_ADMIN_SECRET: test_secret_key
JWT_ALGORITHM: HS256
JWT_KEY: never_use_this_secret_key_in_production_this_is_only_for_CI_testing_098hu32r4389ufb4n38994321
POSTGRES_PASSWORD: postgrespassword
jobs:
test:
name: Service tests
runs-on: ubuntu-latest
services:
postgres:
# TODO bump
image: nhost/postgres:latest
env:
POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
options: --restart always --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
graphql-engine:
image: hasura/graphql-engine:v2.15.2
env:
HASURA_GRAPHQL_ENABLE_TELEMETRY: 'false'
HASURA_GRAPHQL_ADMIN_SECRET: ${{ env.HASURA_GRAPHQL_ADMIN_SECRET }}
HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${{ env.POSTGRES_PASSWORD }}@postgres:5432/postgres
HASURA_GRAPHQL_JWT_SECRET: '{"type": "${{ env.JWT_ALGORITHM }}", "key": "${{ env.JWT_KEY }}"}'
options: >-
--restart always
mailhog:
image: mailhog/mailhog
env:
SMTP_HOST: mailhog
SMTP_PORT: 1025
SMTP_PASS: password
SMTP_USER: user
SMTP_SECURE: 'false'
SMTP_SENDER: [email protected]
container:
image: node:16
env:
AUTH_PORT: 4000
HASURA_GRAPHQL_ADMIN_SECRET: ${{ env.HASURA_GRAPHQL_ADMIN_SECRET }}
HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${{env.POSTGRES_PASSWORD }}@postgres:5432/postgres
HASURA_GRAPHQL_GRAPHQL_URL: 'http://graphql-engine:8080/v1/graphql'
HASURA_GRAPHQL_JWT_SECRET: '{"type": "${{ env.JWT_ALGORITHM }}", "key": "${{ env.JWT_KEY }}"}'
AUTH_SMTP_HOST: mailhog
AUTH_SMTP_PORT: 1025
AUTH_SMTP_USER: user
AUTH_SMTP_PASS: password
AUTH_SMTP_SENDER: [email protected]
AUTH_SMTP_SECURE: false
AUTH_CLIENT_URL: http://localhost:3000
options: --hostname hasura-auth
steps:
- uses: actions/checkout@v3
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
- name: Run Jest tests
# env:
# AUTH_LOCALE_ALLOWED_LOCALES: en,fr
run: pnpm run test --coverage
- name: Upload test results
uses: actions/upload-artifact@v1
with:
name: coverage
path: coverage
e2e-lookup:
name: Lookup e2e tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
repository: nhost/nhost
# * Install Node and dependencies. Package downloads will be cached for the next jobs.
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
BUILD: 'none'
# * List packages that has an `e2e` script AND a nhost/config.yaml file, then return an array of their name and path
- name: List examples with an e2e script
id: set-matrix
run: |
PACKAGES=$(pnpm recursive list --depth -1 --parseable \
| xargs -I@ realpath --relative-to=$PWD @ \
| xargs -I@ echo "test -f @/nhost/config.yaml && echo @" | sh \
| xargs -I@ jq "if (.scripts.e2e | length) != 0 then {name: .name, path: \"@\"} else null end" @/package.json \
| awk "!/null/" \
| jq -c --slurp)
echo "matrix=$PACKAGES" >> $GITHUB_OUTPUT
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
e2e:
runs-on: ubuntu-latest
needs:
- e2e-lookup
strategy:
matrix:
package: ${{ fromJson(needs.e2e-lookup.outputs.matrix) }}
name: 'e2e (${{ matrix.package.path }})'
steps:
- name: Checkout nhost/nhost
uses: actions/checkout@v3
with:
repository: nhost/nhost
- name: Checkout hasura-auth
uses: actions/checkout@v3
with:
path: hasura-auth
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build
uses: docker/build-push-action@v3
timeout-minutes: 60
with:
context: hasura-auth
tags: nhost/hasura-auth:local
cache-from: type=gha
cache-to: type=gha,mode=max
load: true
- name: Install Nhost CLI
uses: ./.github/actions/nhost-cli
with:
path: ${{ matrix.package.path }}
config: |
services:
auth:
image: nhost/hasura-auth:local
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
# TODO Set turborepo in the nhost/hasura-auth repo
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
- name: Run e2e tests
run: pnpm --filter="${{ matrix.package.name }}" run e2e
# ? (enable turborepo e2e, and fine-tune turbo cache e2e config: env vars, nhost/config.yaml)
env:
SERVICES_AUTH_IMAGE: nhost/hasura-auth:local