gitlab-qa 7.13.1 → 7.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab/ci/rules.gitlab-ci.yml +70 -0
- data/.gitlab-ci.yml +128 -18
- data/docs/run_qa_against_gdk.md +11 -1
- data/docs/running_against_remote_grid.md +39 -10
- data/docs/what_tests_can_be_run.md +1 -0
- data/lib/gitlab/qa/report/gitlab_issue_client.rb +8 -1
- data/lib/gitlab/qa/report/report_as_issue.rb +3 -1
- data/lib/gitlab/qa/report/results_in_issues.rb +6 -2
- data/lib/gitlab/qa/runtime/env.rb +4 -1
- data/lib/gitlab/qa/runtime/omnibus_configurations/license_mode.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/service_ping_disabled.rb +33 -0
- data/lib/gitlab/qa/version.rb +1 -1
- data/lib/gitlab/qa.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe746c675e46af459fc920bfcf752441411cca5f573e35ddf7fb06571e27c972
|
4
|
+
data.tar.gz: f6e619f95e5ff3d8f249aaea2e7ca674dcc22624cf9d94b1ef43aeed9d470417
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b54bdc2eb26373a0a1d4bf096bf6e1adb6ad72b2fc1d439a1bddf417ecdc3deb7cc39d58b91cd89f8b748cf4e02b8ca809af6539a5faf40f638f18554fb70ea0
|
7
|
+
data.tar.gz: 10cbfcbc452a16a47718458c75121967c216c01b492c33da80f42e56d97d478844b719f2121f38816707f4110b0ee81743a5e026228e2bab8573e7755b2d7822
|
@@ -37,6 +37,12 @@
|
|
37
37
|
.if-set-feature-flag: &if-set-feature-flag
|
38
38
|
if: '$GITLAB_QA_OPTIONS =~ /--set-feature-flags/'
|
39
39
|
|
40
|
+
.if-qa-tests-specified: &if-qa-tests-specified
|
41
|
+
if: '$QA_TESTS != null && $QA_TESTS != ""'
|
42
|
+
|
43
|
+
.if-qa-tests-not-specified: &if-qa-tests-not-specified
|
44
|
+
if: '$QA_TESTS == null || $QA_TESTS == ""'
|
45
|
+
|
40
46
|
#########
|
41
47
|
# Rules #
|
42
48
|
#########
|
@@ -98,3 +104,67 @@
|
|
98
104
|
- <<: *if-set-feature-flag
|
99
105
|
when: never
|
100
106
|
- !reference [".rules:only-qa", rules]
|
107
|
+
|
108
|
+
# === When QA_TESTS variable has a value ===
|
109
|
+
|
110
|
+
.rules:ce-never-when-qa-tests-specified:
|
111
|
+
rules:
|
112
|
+
- <<: *if-qa-tests-specified
|
113
|
+
when: never
|
114
|
+
- !reference [".rules:ce-qa", rules]
|
115
|
+
|
116
|
+
.rules:ee-never-when-qa-tests-specified:
|
117
|
+
rules:
|
118
|
+
- <<: *if-qa-tests-specified
|
119
|
+
when: never
|
120
|
+
- !reference [".rules:ee-qa", rules]
|
121
|
+
|
122
|
+
.rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified:
|
123
|
+
rules:
|
124
|
+
- <<: *if-qa-tests-specified
|
125
|
+
when: never
|
126
|
+
- !reference [".rules:ce-never-when-triggered-by-feature-flag-definition-change", rules]
|
127
|
+
|
128
|
+
.rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified:
|
129
|
+
rules:
|
130
|
+
- <<: *if-qa-tests-specified
|
131
|
+
when: never
|
132
|
+
- !reference [".rules:ee-never-when-triggered-by-feature-flag-definition-change", rules]
|
133
|
+
|
134
|
+
.rules:only-qa-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified:
|
135
|
+
rules:
|
136
|
+
- <<: *if-qa-tests-specified
|
137
|
+
when: never
|
138
|
+
- !reference [".rules:only-qa-never-when-triggered-by-feature-flag-definition-change", rules]
|
139
|
+
|
140
|
+
# === When QA_TESTS variable does not have a value ===
|
141
|
+
|
142
|
+
.rules:ce-never-when-qa-tests-not-specified:
|
143
|
+
rules:
|
144
|
+
- <<: *if-qa-tests-not-specified
|
145
|
+
when: never
|
146
|
+
- !reference [".rules:ce-qa", rules]
|
147
|
+
|
148
|
+
.rules:ee-never-when-qa-tests-not-specified:
|
149
|
+
rules:
|
150
|
+
- <<: *if-qa-tests-not-specified
|
151
|
+
when: never
|
152
|
+
- !reference [".rules:ee-qa", rules]
|
153
|
+
|
154
|
+
.rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified:
|
155
|
+
rules:
|
156
|
+
- <<: *if-qa-tests-not-specified
|
157
|
+
when: never
|
158
|
+
- !reference [".rules:ce-never-when-triggered-by-feature-flag-definition-change", rules]
|
159
|
+
|
160
|
+
.rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified:
|
161
|
+
rules:
|
162
|
+
- <<: *if-qa-tests-not-specified
|
163
|
+
when: never
|
164
|
+
- !reference [".rules:ee-never-when-triggered-by-feature-flag-definition-change", rules]
|
165
|
+
|
166
|
+
.rules:only-qa-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified:
|
167
|
+
rules:
|
168
|
+
- <<: *if-qa-tests-not-specified
|
169
|
+
when: never
|
170
|
+
- !reference [".rules:only-qa-never-when-triggered-by-feature-flag-definition-change", rules]
|
data/.gitlab-ci.yml
CHANGED
@@ -66,6 +66,7 @@ rspec:
|
|
66
66
|
|
67
67
|
.test:
|
68
68
|
stage: test
|
69
|
+
timeout: 1 hour 30 minutes
|
69
70
|
services:
|
70
71
|
- docker:20.10.5-dind
|
71
72
|
tags:
|
@@ -187,9 +188,9 @@ ee:custom-parallel:
|
|
187
188
|
allow_failure: true
|
188
189
|
parallel: 10
|
189
190
|
|
190
|
-
ce:instance:
|
191
|
+
ce:instance-parallel:
|
191
192
|
extends:
|
192
|
-
- .rules:ce-qa
|
193
|
+
- .rules:ce-never-when-qa-tests-specified
|
193
194
|
- .test
|
194
195
|
- .high-capacity
|
195
196
|
- .ce-variables
|
@@ -197,6 +198,14 @@ ce:instance:
|
|
197
198
|
- .rspec-report-opts
|
198
199
|
parallel: 5
|
199
200
|
|
201
|
+
ce:instance:
|
202
|
+
extends:
|
203
|
+
- .rules:ce-never-when-qa-tests-not-specified
|
204
|
+
- .test
|
205
|
+
- .high-capacity
|
206
|
+
- .ce-variables
|
207
|
+
- .rspec-report-opts
|
208
|
+
|
200
209
|
ce:instance-quarantine:
|
201
210
|
extends:
|
202
211
|
- .rules:ce-qa
|
@@ -208,9 +217,9 @@ ce:instance-quarantine:
|
|
208
217
|
variables:
|
209
218
|
QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
|
210
219
|
|
211
|
-
ee:instance:
|
220
|
+
ee:instance-parallel:
|
212
221
|
extends:
|
213
|
-
- .rules:ee-qa
|
222
|
+
- .rules:ee-never-when-qa-tests-specified
|
214
223
|
- .test
|
215
224
|
- .high-capacity
|
216
225
|
- .ee-variables
|
@@ -218,6 +227,14 @@ ee:instance:
|
|
218
227
|
- .rspec-report-opts
|
219
228
|
parallel: 5
|
220
229
|
|
230
|
+
ee:instance:
|
231
|
+
extends:
|
232
|
+
- .rules:ee-never-when-qa-tests-not-specified
|
233
|
+
- .test
|
234
|
+
- .high-capacity
|
235
|
+
- .ee-variables
|
236
|
+
- .rspec-report-opts
|
237
|
+
|
221
238
|
ee:instance-quarantine:
|
222
239
|
extends:
|
223
240
|
- .rules:ee-qa
|
@@ -229,9 +246,9 @@ ee:instance-quarantine:
|
|
229
246
|
variables:
|
230
247
|
QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
|
231
248
|
|
232
|
-
ce:relative_url:
|
249
|
+
ce:relative_url-parallel:
|
233
250
|
extends:
|
234
|
-
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
251
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
235
252
|
- .test
|
236
253
|
- .high-capacity
|
237
254
|
- .ce-variables
|
@@ -241,6 +258,16 @@ ce:relative_url:
|
|
241
258
|
variables:
|
242
259
|
QA_SCENARIO: "Test::Instance::RelativeUrl"
|
243
260
|
|
261
|
+
ce:relative_url:
|
262
|
+
extends:
|
263
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
264
|
+
- .test
|
265
|
+
- .high-capacity
|
266
|
+
- .ce-variables
|
267
|
+
- .rspec-report-opts
|
268
|
+
variables:
|
269
|
+
QA_SCENARIO: "Test::Instance::RelativeUrl"
|
270
|
+
|
244
271
|
ce:relative_url-quarantine:
|
245
272
|
extends:
|
246
273
|
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
@@ -253,9 +280,9 @@ ce:relative_url-quarantine:
|
|
253
280
|
QA_SCENARIO: "Test::Instance::RelativeUrl"
|
254
281
|
QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
|
255
282
|
|
256
|
-
ee:relative_url:
|
283
|
+
ee:relative_url-parallel:
|
257
284
|
extends:
|
258
|
-
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
285
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
259
286
|
- .test
|
260
287
|
- .high-capacity
|
261
288
|
- .ee-variables
|
@@ -265,6 +292,16 @@ ee:relative_url:
|
|
265
292
|
variables:
|
266
293
|
QA_SCENARIO: "Test::Instance::RelativeUrl"
|
267
294
|
|
295
|
+
ee:relative_url:
|
296
|
+
extends:
|
297
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
298
|
+
- .test
|
299
|
+
- .high-capacity
|
300
|
+
- .ee-variables
|
301
|
+
- .rspec-report-opts
|
302
|
+
variables:
|
303
|
+
QA_SCENARIO: "Test::Instance::RelativeUrl"
|
304
|
+
|
268
305
|
ee:relative_url-quarantine:
|
269
306
|
extends:
|
270
307
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
@@ -336,9 +373,9 @@ ee:image:
|
|
336
373
|
- .test
|
337
374
|
- .ee-variables
|
338
375
|
|
339
|
-
ce:update:
|
376
|
+
ce:update-parallel:
|
340
377
|
extends:
|
341
|
-
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
378
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
342
379
|
- .test
|
343
380
|
- .high-capacity
|
344
381
|
- .ce-variables
|
@@ -347,6 +384,15 @@ ce:update:
|
|
347
384
|
- .update-scenario-script
|
348
385
|
parallel: 5
|
349
386
|
|
387
|
+
ce:update:
|
388
|
+
extends:
|
389
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
390
|
+
- .test
|
391
|
+
- .high-capacity
|
392
|
+
- .ce-variables
|
393
|
+
- .rspec-report-opts
|
394
|
+
- .update-scenario-script
|
395
|
+
|
350
396
|
ce:update-quarantine:
|
351
397
|
extends:
|
352
398
|
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
@@ -359,9 +405,9 @@ ce:update-quarantine:
|
|
359
405
|
variables:
|
360
406
|
QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
|
361
407
|
|
362
|
-
ee:update:
|
408
|
+
ee:update-parallel:
|
363
409
|
extends:
|
364
|
-
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
410
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
365
411
|
- .test
|
366
412
|
- .high-capacity
|
367
413
|
- .ee-variables
|
@@ -370,6 +416,15 @@ ee:update:
|
|
370
416
|
- .update-scenario-script
|
371
417
|
parallel: 10
|
372
418
|
|
419
|
+
ee:update:
|
420
|
+
extends:
|
421
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
422
|
+
- .test
|
423
|
+
- .high-capacity
|
424
|
+
- .ee-variables
|
425
|
+
- .rspec-report-opts
|
426
|
+
- .update-scenario-script
|
427
|
+
|
373
428
|
ee:update-quarantine:
|
374
429
|
extends:
|
375
430
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
@@ -382,17 +437,26 @@ ee:update-quarantine:
|
|
382
437
|
QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
|
383
438
|
|
384
439
|
# The Test::Omnibus::Upgrade scenario isn't run on master (because it always uses the latest CE/EE image) so we don't report the test results in issues
|
385
|
-
ce:upgrade:
|
440
|
+
ce:upgrade-parallel:
|
386
441
|
script:
|
387
442
|
- bundle exec exe/gitlab-qa Test::Omnibus::Upgrade CE -- $RSPEC_REPORT_OPTS
|
388
443
|
extends:
|
389
|
-
- .rules:only-qa-never-when-triggered-by-feature-flag-definition-change
|
444
|
+
- .rules:only-qa-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
390
445
|
- .test
|
391
446
|
- .high-capacity
|
392
447
|
- .rspec-report-opts
|
393
448
|
- .knapsack-variables
|
394
449
|
parallel: 5
|
395
450
|
|
451
|
+
ce:upgrade:
|
452
|
+
script:
|
453
|
+
- bundle exec exe/gitlab-qa Test::Omnibus::Upgrade CE -- $RSPEC_REPORT_OPTS
|
454
|
+
extends:
|
455
|
+
- .rules:only-qa-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
456
|
+
- .test
|
457
|
+
- .high-capacity
|
458
|
+
- .rspec-report-opts
|
459
|
+
|
396
460
|
ce:upgrade-quarantine:
|
397
461
|
script:
|
398
462
|
- bundle exec exe/gitlab-qa Test::Omnibus::Upgrade CE -- --tag quarantine --tag ~orchestrated $RSPEC_REPORT_OPTS
|
@@ -464,6 +528,26 @@ ee:mattermost-quarantine:
|
|
464
528
|
variables:
|
465
529
|
QA_SCENARIO: "Test::Integration::Mattermost"
|
466
530
|
|
531
|
+
ce:service_ping_disabled:
|
532
|
+
extends:
|
533
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
534
|
+
- .test
|
535
|
+
- .high-capacity
|
536
|
+
- .ce-variables
|
537
|
+
- .rspec-report-opts
|
538
|
+
variables:
|
539
|
+
QA_SCENARIO: "Test::Integration::ServicePingDisabled"
|
540
|
+
|
541
|
+
ee:service_ping_disabled:
|
542
|
+
extends:
|
543
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
544
|
+
- .test
|
545
|
+
- .high-capacity
|
546
|
+
- .ee-variables
|
547
|
+
- .rspec-report-opts
|
548
|
+
variables:
|
549
|
+
QA_SCENARIO: "Test::Integration::ServicePingDisabled"
|
550
|
+
|
467
551
|
# Disabling geo jobs temporarily due to https://gitlab.com/gitlab-org/gitlab/-/issues/273063
|
468
552
|
# ee:geo:
|
469
553
|
# extends:
|
@@ -920,9 +1004,9 @@ ee:elasticsearch-quarantine:
|
|
920
1004
|
variables:
|
921
1005
|
QA_SCENARIO: "Test::Integration::Elasticsearch"
|
922
1006
|
|
923
|
-
ce:praefect:
|
1007
|
+
ce:praefect-parallel:
|
924
1008
|
extends:
|
925
|
-
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
1009
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
926
1010
|
- .test
|
927
1011
|
- .high-capacity
|
928
1012
|
- .ce-variables
|
@@ -933,6 +1017,17 @@ ce:praefect:
|
|
933
1017
|
QA_SCENARIO: "Test::Integration::Praefect"
|
934
1018
|
QA_CAN_TEST_PRAEFECT: "true"
|
935
1019
|
|
1020
|
+
ce:praefect:
|
1021
|
+
extends:
|
1022
|
+
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
1023
|
+
- .test
|
1024
|
+
- .high-capacity
|
1025
|
+
- .ce-variables
|
1026
|
+
- .rspec-report-opts
|
1027
|
+
variables:
|
1028
|
+
QA_SCENARIO: "Test::Integration::Praefect"
|
1029
|
+
QA_CAN_TEST_PRAEFECT: "true"
|
1030
|
+
|
936
1031
|
ce:praefect-quarantine:
|
937
1032
|
extends:
|
938
1033
|
- .rules:ce-never-when-triggered-by-feature-flag-definition-change
|
@@ -946,9 +1041,9 @@ ce:praefect-quarantine:
|
|
946
1041
|
QA_CAN_TEST_PRAEFECT: "true"
|
947
1042
|
QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
|
948
1043
|
|
949
|
-
ee:praefect:
|
1044
|
+
ee:praefect-parallel:
|
950
1045
|
extends:
|
951
|
-
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
1046
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
|
952
1047
|
- .test
|
953
1048
|
- .high-capacity
|
954
1049
|
- .ee-variables
|
@@ -959,6 +1054,17 @@ ee:praefect:
|
|
959
1054
|
QA_SCENARIO: "Test::Integration::Praefect"
|
960
1055
|
QA_CAN_TEST_PRAEFECT: "true"
|
961
1056
|
|
1057
|
+
ee:praefect:
|
1058
|
+
extends:
|
1059
|
+
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
|
1060
|
+
- .test
|
1061
|
+
- .high-capacity
|
1062
|
+
- .ee-variables
|
1063
|
+
- .rspec-report-opts
|
1064
|
+
variables:
|
1065
|
+
QA_SCENARIO: "Test::Integration::Praefect"
|
1066
|
+
QA_CAN_TEST_PRAEFECT: "true"
|
1067
|
+
|
962
1068
|
ee:praefect-quarantine:
|
963
1069
|
extends:
|
964
1070
|
- .rules:ee-never-when-triggered-by-feature-flag-definition-change
|
@@ -981,6 +1087,7 @@ ce:gitaly-cluster:
|
|
981
1087
|
- .rspec-report-opts
|
982
1088
|
variables:
|
983
1089
|
QA_SCENARIO: "Test::Integration::GitalyCluster"
|
1090
|
+
QA_LOG_PATH: "tmp/gitaly_cluster.log"
|
984
1091
|
|
985
1092
|
ce:gitaly-cluster-quarantine:
|
986
1093
|
extends:
|
@@ -992,6 +1099,7 @@ ce:gitaly-cluster-quarantine:
|
|
992
1099
|
- .rspec-report-opts
|
993
1100
|
variables:
|
994
1101
|
QA_SCENARIO: "Test::Integration::GitalyCluster"
|
1102
|
+
QA_LOG_PATH: "tmp/gitaly_cluster.log"
|
995
1103
|
|
996
1104
|
ee:gitaly-cluster:
|
997
1105
|
extends:
|
@@ -1002,6 +1110,7 @@ ee:gitaly-cluster:
|
|
1002
1110
|
- .rspec-report-opts
|
1003
1111
|
variables:
|
1004
1112
|
QA_SCENARIO: "Test::Integration::GitalyCluster"
|
1113
|
+
QA_LOG_PATH: "tmp/gitaly_cluster.log"
|
1005
1114
|
|
1006
1115
|
ee:gitaly-cluster-quarantine:
|
1007
1116
|
extends:
|
@@ -1013,6 +1122,7 @@ ee:gitaly-cluster-quarantine:
|
|
1013
1122
|
- .rspec-report-opts
|
1014
1123
|
variables:
|
1015
1124
|
QA_SCENARIO: "Test::Integration::GitalyCluster"
|
1125
|
+
QA_LOG_PATH: "tmp/gitaly_cluster.log"
|
1016
1126
|
|
1017
1127
|
ce:mtls:
|
1018
1128
|
extends:
|
data/docs/run_qa_against_gdk.md
CHANGED
@@ -49,6 +49,16 @@ make a few changes to your `gdk/gitlab/config/gitlab.yml` file.
|
|
49
49
|
**Note:** The hostname of the URL provided to `gitlab-qa` must match the hostname configured for GDK.
|
50
50
|
If they do not match, a test will be signed out when it visits a page directly because the hostname of the URL visited will be different from the hostname that was used when signing in.
|
51
51
|
|
52
|
+
**Note:** When you log into your GDK instance of GitLab for the first time, the root password requires a change.
|
53
|
+
GitLab QA expects the default initial password to be used in tests; see all default values listed in
|
54
|
+
[Supported GitLab environment variables](what_tests_can_be_run.md#supported-gitlab-environment-variables).
|
55
|
+
If you have changed your root password, you must set the `GITLAB_INITIAL_ROOT_PASSWORD` environment
|
56
|
+
variable.
|
57
|
+
|
58
|
+
```
|
59
|
+
export GITLAB_INITIAL_ROOT_PASSWORD="<GDK root password>"
|
60
|
+
```
|
61
|
+
|
52
62
|
### Running EE tests
|
53
63
|
|
54
64
|
When running EE tests you'll need to have a license available. GitLab engineers can [request a license](https://about.gitlab.com/handbook/developer-onboarding/#working-on-gitlab-ee).
|
@@ -101,7 +111,7 @@ your DNS and point to the IP/port of `dnsdock` application.
|
|
101
111
|
|
102
112
|
### Docker on macOS caveats
|
103
113
|
|
104
|
-
When using OS X Docker, you need to go to Preferences > Advanced and allocate at least **5.0 GB**,
|
114
|
+
When using OS X Docker, you need to go to Preferences > Resources > Advanced and allocate at least **5.0 GB**,
|
105
115
|
otherwise some steps may fail to execute the `chrome-webdriver`.
|
106
116
|
|
107
117
|
When using docker-machine, see [this StackOverflow link for increasing memory](https://stackoverflow.com/questions/32834082/how-to-increase-docker-machine-memory-mac/36982696#36982696).
|
@@ -8,20 +8,49 @@ I.e, if you have a Selenium server set up at http://localhost:4444 or if you hav
|
|
8
8
|
|
9
9
|
| Variable | Description | Default | Example(s) |
|
10
10
|
|---------------------------|----------------------------------------------------------------|----------|--------------------------------|
|
11
|
-
| QA_BROWSER | Browser to run against | "chrome" | "chrome" "firefox"
|
11
|
+
| QA_BROWSER | Browser to run against | "chrome" | "chrome" "firefox" "safari" |
|
12
12
|
| QA_REMOTE_GRID_PROTOCOL | Protocol to use | "http" | "http" "https" |
|
13
13
|
| QA_REMOTE_GRID | Remote grid to run tests against | | "localhost:3000" "provider:80" |
|
14
|
-
| QA_REMOTE_GRID_USERNAME | Username to specify in the remote grid. "USERNAME@provider:80" | |
|
14
|
+
| QA_REMOTE_GRID_USERNAME | Username to specify in the remote grid. "USERNAME@provider:80" | | "gitlab-sl" |
|
15
15
|
| QA_REMOTE_GRID_ACCESS_KEY | Key/Token paired with `QA_REMOTE_GRID_USERNAME` | | |
|
16
|
+
| QA_REMOTE_TUNNEL_ID | Name of the remote tunnel to use | "gitlab-sl_tunnel_id" | |
|
17
|
+
| QA_REMOTE_MOBILE_DEVICE_NAME | Name of mobile device to test against. `QA_BROWSER` must be set to `safari` for iOS devices and `chrome` for Android devices. | | "iPhone 12 Simulator" |
|
16
18
|
|
17
|
-
##
|
19
|
+
## Testing with Sauce Labs
|
18
20
|
|
19
|
-
|
21
|
+
Running directly against an environment like staging is not recommended because test logs expose credentials. Therefore, it is best practice and the default to use a tunnel.
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
To install a tunnel, follow these [instructions](https://docs.saucelabs.com/secure-connections/sauce-connect/installation).
|
24
|
+
|
25
|
+
To start the tunnel, copy the run command in **Sauce Labs > Tunnels** and run it in the terminal. You must be logged in to Sauce Labs. Use the credentials in 1Password to log in.
|
26
|
+
|
27
|
+
It is highly recommended to use `GITLAB_QA_ACCESS_TOKEN` to speed up tests and reduce flakiness.
|
28
|
+
|
29
|
+
|
30
|
+
### Run a test in a desktop browser
|
31
|
+
|
32
|
+
While tunnel is running, to test against a local instance in a desktop browser, run:
|
33
|
+
```shell
|
34
|
+
$ QA_BROWSER="safari" \
|
35
|
+
QA_REMOTE_GRID="ondemand.saucelabs.com:80" \
|
36
|
+
QA_REMOTE_GRID_USERNAME="gitlab-sl" \
|
37
|
+
QA_REMOTE_GRID_ACCESS_KEY="<access key found in Sauce Lab account>" \
|
38
|
+
GITLAB_QA_ACCESS_TOKEN="<token>" \
|
39
|
+
gitlab-qa Test::Instance::Any <CE|EE> http://<local_ip>:3000 -- -- <relative_spec_path>
|
27
40
|
```
|
41
|
+
|
42
|
+
### Run a test in a mobile device browser
|
43
|
+
|
44
|
+
`QA_REMOTE_MOBILE_DEVICE_NAME` can be any device name in the [supported browser devices](https://saucelabs.com/platform/supported-browsers-devices) in the Emulators/simulators list, and the latest versions of Android or iOS. You must set `QA_BROWSER` to `safari` for iOS devices and `chrome` for Android devices.```
|
45
|
+
|
46
|
+
```shell
|
47
|
+
$ QA_BROWSER="safari" \
|
48
|
+
QA_REMOTE_MOBILE_DEVICE_NAME="iPhone 12 Simulator" \
|
49
|
+
QA_REMOTE_GRID="ondemand.saucelabs.com:80" \
|
50
|
+
QA_REMOTE_GRID_USERNAME="gitlab-sl" \
|
51
|
+
QA_REMOTE_GRID_ACCESS_KEY="<found in Sauce Lab account>" \
|
52
|
+
GITLAB_QA_ACCESS_TOKEN="<token>" \
|
53
|
+
gitlab-qa Test::Instance::Any <CE|EE> http://<local_ip>:3000 -- -- <relative_spec_path>
|
54
|
+
```
|
55
|
+
|
56
|
+
Results can be watched in real time in Sauce Labs under AUTOMATED > Test Results
|
@@ -62,6 +62,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
|
|
62
62
|
| `QA_ARTIFACTS_DIR` |`/tmp/gitlab-qa`| Path to a directory where artifacts (logs and screenshots) for failing tests will be saved. | No|
|
63
63
|
| `DOCKER_HOST` |`http://localhost`| Docker host to run tests against. | No|
|
64
64
|
| `WEBDRIVER_HEADLESS` |- | When running locally, set to `false` to allow Chrome tests to be visible - watch your tests being run. | No|
|
65
|
+
| `CHROME_DISABLE_DEV_SHM` | `false` | Set to `true` to disable `/dev/shm` usage in Chrome on Linux. | No|
|
65
66
|
| `QA_ADDITIONAL_REPOSITORY_STORAGE` |- | The name of additional, non-default storage to be used with tests tagged `repository_storage`, run via the `Test::Instance::RepositoryStorage` scenario. Note: Admin access is required to change repository storage. | No|
|
66
67
|
| `QA_PRAEFECT_REPOSITORY_STORAGE` |- | The name of repository storage using Praefect. Note: Admin access is required to change repository storage. | No|
|
67
68
|
| `QA_COOKIES` |- | Optionally set to "cookie1=value;cookie2=value" in order to add a cookie to every request. This can be used to set the canary cookie by setting it to "gitlab_canary=true". | No|
|
@@ -107,7 +107,14 @@ module Gitlab
|
|
107
107
|
retry
|
108
108
|
rescue StandardError => e
|
109
109
|
pipeline = QA::Runtime::Env.pipeline_from_project_name
|
110
|
-
channel =
|
110
|
+
channel = case pipeline
|
111
|
+
when "canary"
|
112
|
+
"qa-production"
|
113
|
+
when "staging-canary"
|
114
|
+
"qa-staging"
|
115
|
+
else
|
116
|
+
"qa-#{pipeline}"
|
117
|
+
end
|
111
118
|
error_msg = warn_exception(e)
|
112
119
|
|
113
120
|
return unless QA::Runtime::Env.ci_commit_ref_name == QA::Runtime::Env.default_branch
|
@@ -111,9 +111,11 @@ module Gitlab
|
|
111
111
|
'found:gitlab.com'
|
112
112
|
when 'canary', 'staging'
|
113
113
|
"found:#{pipeline}.gitlab.com"
|
114
|
+
when 'staging-canary'
|
115
|
+
"found:canary.staging.gitlab.com"
|
114
116
|
when 'preprod'
|
115
117
|
'found:pre.gitlab.com'
|
116
|
-
when 'staging-orchestrated', 'nightly', QA::Runtime::Env.default_branch, 'staging-ref'
|
118
|
+
when 'staging-orchestrated', 'nightly', QA::Runtime::Env.default_branch, 'staging-ref', 'release'
|
117
119
|
"found:#{pipeline}"
|
118
120
|
else
|
119
121
|
raise "No `found:*` label for the `#{pipeline}` pipeline!"
|
@@ -35,7 +35,7 @@ module Gitlab
|
|
35
35
|
issue = find_linked_results_issue_by_iid(testcase, test)
|
36
36
|
|
37
37
|
if issue
|
38
|
-
issue = update_issue_title(issue, test, 'issue') if issue
|
38
|
+
issue = update_issue_title(issue, test, 'issue') if issue_title_needs_updating?(issue, test)
|
39
39
|
else
|
40
40
|
puts "No valid issue link found"
|
41
41
|
issue = find_or_create_results_issue(test)
|
@@ -51,7 +51,7 @@ module Gitlab
|
|
51
51
|
testcase = find_testcase_by_iid(test)
|
52
52
|
|
53
53
|
if testcase
|
54
|
-
testcase = update_issue_title(testcase, test, 'test_case') if testcase
|
54
|
+
testcase = update_issue_title(testcase, test, 'test_case') if issue_title_needs_updating?(testcase, test)
|
55
55
|
else
|
56
56
|
testcase = find_issue(test, 'test_case')
|
57
57
|
end
|
@@ -67,6 +67,10 @@ module Gitlab
|
|
67
67
|
find_issue_by_iid(iid, 'test_case')
|
68
68
|
end
|
69
69
|
|
70
|
+
def issue_title_needs_updating?(issue, test)
|
71
|
+
issue.title.strip != title_from_test(test) && !%w[canary production preprod release].include?(pipeline)
|
72
|
+
end
|
73
|
+
|
70
74
|
def find_linked_results_issue_by_iid(testcase, test)
|
71
75
|
iid = issue_iid_from_testcase(testcase)
|
72
76
|
|
@@ -15,6 +15,8 @@ module Gitlab
|
|
15
15
|
'QA_REMOTE_GRID_USERNAME' => :remote_grid_username,
|
16
16
|
'QA_REMOTE_GRID_ACCESS_KEY' => :remote_grid_access_key,
|
17
17
|
'QA_REMOTE_GRID_PROTOCOL' => :remote_grid_protocol,
|
18
|
+
'QA_REMOTE_MOBILE_DEVICE_NAME' => :remote_mobile_device_name,
|
19
|
+
'QA_REMOTE_TUNNEL_ID' => :remote_tunnel_id,
|
18
20
|
'QA_BROWSER' => :browser,
|
19
21
|
'QA_ADDITIONAL_REPOSITORY_STORAGE' => :qa_additional_repository_storage,
|
20
22
|
'QA_PRAEFECT_REPOSITORY_STORAGE' => :qa_praefect_repository_storage,
|
@@ -121,7 +123,8 @@ module Gitlab
|
|
121
123
|
'GOOGLE_JSON_KEY' => :google_json_key,
|
122
124
|
'GCS_BUCKET_NAME' => :gcs_bucket_name,
|
123
125
|
'SMOKE_ONLY' => :smoke_only,
|
124
|
-
'NO_ADMIN' => :no_admin
|
126
|
+
'NO_ADMIN' => :no_admin,
|
127
|
+
'CHROME_DISABLE_DEV_SHM' => :chrome_disable_dev_shm
|
125
128
|
}.freeze
|
126
129
|
|
127
130
|
ENV_VARIABLES.each do |env_name, method_name|
|
@@ -7,7 +7,7 @@ module Gitlab
|
|
7
7
|
class LicenseMode < Default
|
8
8
|
def configuration
|
9
9
|
<<~OMNIBUS
|
10
|
-
gitlab_rails['env'] = { 'GITLAB_LICENSE_MODE' => 'test', 'CUSTOMER_PORTAL_URL' => 'https://customers.
|
10
|
+
gitlab_rails['env'] = { 'GITLAB_LICENSE_MODE' => 'test', 'CUSTOMER_PORTAL_URL' => 'https://customers.staging.gitlab.com' }
|
11
11
|
OMNIBUS
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gitlab
|
4
|
+
module QA
|
5
|
+
module Scenario
|
6
|
+
module Test
|
7
|
+
module Integration
|
8
|
+
class ServicePingDisabled < Scenario::Template
|
9
|
+
def perform(release, *rspec_args)
|
10
|
+
Component::Gitlab.perform do |gitlab|
|
11
|
+
gitlab.release = release
|
12
|
+
gitlab.network = 'test'
|
13
|
+
|
14
|
+
gitlab.omnibus_configuration << <<~OMNIBUS
|
15
|
+
gitlab_rails['usage_ping_enabled'] = false;
|
16
|
+
OMNIBUS
|
17
|
+
|
18
|
+
gitlab.instance do
|
19
|
+
Component::Specs.perform do |specs|
|
20
|
+
specs.suite = 'Test::Integration::ServicePingDisabled'
|
21
|
+
specs.release = gitlab.release
|
22
|
+
specs.network = gitlab.network
|
23
|
+
specs.args = [gitlab.address, *rspec_args]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/gitlab/qa/version.rb
CHANGED
data/lib/gitlab/qa.rb
CHANGED
@@ -72,6 +72,7 @@ module Gitlab
|
|
72
72
|
autoload :ClientSSL, 'gitlab/qa/scenario/test/integration/client_ssl'
|
73
73
|
autoload :Registry, 'gitlab/qa/scenario/test/integration/registry'
|
74
74
|
autoload :RegistryTLS, 'gitlab/qa/scenario/test/integration/registry_tls'
|
75
|
+
autoload :ServicePingDisabled, 'gitlab/qa/scenario/test/integration/service_ping_disabled'
|
75
76
|
end
|
76
77
|
|
77
78
|
module Sanity
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-qa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab Quality
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|
@@ -309,6 +309,7 @@ files:
|
|
309
309
|
- lib/gitlab/qa/scenario/test/integration/registry.rb
|
310
310
|
- lib/gitlab/qa/scenario/test/integration/registry_tls.rb
|
311
311
|
- lib/gitlab/qa/scenario/test/integration/saml.rb
|
312
|
+
- lib/gitlab/qa/scenario/test/integration/service_ping_disabled.rb
|
312
313
|
- lib/gitlab/qa/scenario/test/integration/smtp.rb
|
313
314
|
- lib/gitlab/qa/scenario/test/integration/ssh_tunnel.rb
|
314
315
|
- lib/gitlab/qa/scenario/test/omnibus/image.rb
|