forked from decidim/decidim
-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (142 loc) · 4.58 KB
/
test_app.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
141
142
143
on:
workflow_call:
inputs:
codecov_token:
required: false
description: 'Codecov token'
default: "bc15b944-6b42-420a-b3f9-a5a8fb214326"
type: string
ruby_version:
description: 'Ruby Version'
default: "3.3.4"
required: false
type: string
working-directory:
required: true
type: string
test_command:
description: 'The testing command to be ran'
required: true
type: string
bullet_enabled:
description: 'Enable bullet performance testing'
required: false
default: true
type: boolean
bullet_n_plus_one:
description: 'Enable bullet n+1 testing'
required: false
default: true
type: boolean
bullet_counter_cache:
description: 'Enable bullet counter cache testing'
required: false
default: true
type: boolean
bullet_unused_eager_loading:
description: 'Enable bullet unused eager loading testing'
required: false
default: true
type: boolean
chrome_version:
description: 'Chrome & Chromedriver version'
required: false
default: "126.0.6478.182"
type: string
jobs:
build_app:
name: Test
runs-on: ubuntu-22.04
if: "!startsWith(github.head_ref, 'chore/l10n')"
timeout-minutes: 60
env:
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: postgres
DATABASE_HOST: localhost
DECIDIM_SPAM_DETECTION_BACKEND_RESOURCE: "memory"
DECIDIM_SPAM_DETECTION_BACKEND_USER: "memory"
services:
validator:
image: ghcr.io/validator/validator:latest
ports: ["8888:8888"]
postgres:
image: postgres:14
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_PASSWORD: postgres
redis:
image: redis
ports: ["6379:6379"]
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ inputs.ruby_version }}
- run: |
sudo apt update
sudo apt install libu2f-udev
wget --no-verbose -O /tmp/chrome.deb https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${{inputs.chrome_version}}-1_amd64.deb
sudo dpkg -i /tmp/chrome.deb
rm /tmp/chrome.deb
- uses: nanasess/setup-chromedriver@v2
with:
chromedriver-version: ${{inputs.chrome_version}}
name: Install Chrome version ${{inputs.chrome_version}}
- run: |
sudo apt install wkhtmltopdf
- uses: actions/cache@v4
id: app-cache
with:
path: ./spec/decidim_dummy_app/
key: app-${{ github.sha }}
restore-keys: app-${{ github.sha }}
- run: |
bundle install
bundle exec rake parallel:create parallel:load_schema
name: Parallel tests
shell: "bash"
working-directory: ./spec/decidim_dummy_app/
- run: |
sudo Xvfb -ac $DISPLAY -screen 0 1920x1084x24 > /dev/null 2>&1 & # optional
${{ inputs.test_command }}
name: RSpec
working-directory: ${{ inputs.working-directory }}
env:
VALIDATOR_HTML_URI: http://localhost:8888/
RUBY_VERSION: ${{ inputs.ruby_version }}
DECIDIM_MODULE: ${{ inputs.working-directory }}
CODECOV_TOKEN: ${{ inputs.codecov_token }}
DECIDIM_BULLET_ENABLED: ${{ inputs.bullet_enabled }}
DECIDIM_BULLET_N_PLUS_ONE: ${{ inputs.bullet_n_plus_one }}
DECIDIM_BULLET_COUNTER_CACHE: ${{ inputs.bullet_counter_cache }}
DECIDIM_BULLET_UNUSED_EAGER: ${{ inputs.bullet_unused_eager_loading }}
DISPLAY: ":99"
CI: "true"
SIMPLECOV: "true"
SHAKAPACKER_RUNTIME_COMPILE: "false"
NODE_ENV: "test"
- uses: codecov/codecov-action@v4
name: Upload coverage
with:
token: ${{ inputs.codecov_token }}
name: ${{ inputs.working-directory }}
flags: ${{ inputs.working-directory }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: screenshots
path: ./spec/decidim_dummy_app/tmp/screenshots
if-no-files-found: ignore
overwrite: true