decidim-dev 0.13.1 → 0.14.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/decidim/gamification/badges/test.svg +145 -0
- data/config/locales/ca.yml +10 -0
- data/config/locales/en.yml +10 -0
- data/config/locales/es-PY.yml +10 -0
- data/config/locales/es.yml +10 -0
- data/config/locales/eu.yml +10 -0
- data/config/locales/fi.yml +17 -7
- data/config/locales/fr.yml +11 -1
- data/config/locales/gl.yml +10 -0
- data/config/locales/hu.yml +38 -0
- data/config/locales/it.yml +10 -0
- data/config/locales/nl.yml +10 -0
- data/config/locales/pl.yml +10 -0
- data/config/locales/pt-BR.yml +10 -0
- data/config/locales/pt.yml +10 -0
- data/config/locales/sv.yml +10 -0
- data/lib/decidim/dev/test/factories.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/authorization.rb +2 -0
- data/lib/decidim/dev/test/rspec_support/capybara.rb +1 -0
- data/lib/decidim/dev/test/rspec_support/component.rb +6 -0
- data/lib/decidim/dev/test/rspec_support/gamification.rb +10 -0
- data/lib/decidim/dev/test/rspec_support/geocoder.rb +13 -0
- data/lib/decidim/dev/test/rspec_support/helpers.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/translation_helpers.rb +6 -9
- data/lib/decidim/dev/test/spec_helper.rb +0 -2
- data/lib/decidim/dev/version.rb +1 -1
- metadata +24 -29
- data/lib/decidim/dev/test/ext/screenshot_helper.rb +0 -111
- data/lib/decidim/dev/test/screenshot_helper_ext.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c25ea76d43131809869549e86940c492c8037b1aedee4e81abe38d6e8e198e7
|
4
|
+
data.tar.gz: d187a93f0409aa3aaf307671858ce87ad391ba5f540aa73f1696157cc94328f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 608e86180ff366011a2cea8e9ff9b248d097219c538e53c997c9c9a3807261f08b44dc9f8bab59ad5b3ad75f00069bbf1d58de693c2d0b9093caa6e5243e2019
|
7
|
+
data.tar.gz: c2a24a5756b0130562d91e5cb8927b999f1a51f227d9e26496e31a85555a2be1ea4063155ec01599337b812940bb1cdcf6f8d3cca314169efbc7e42a1264e7ff
|
@@ -0,0 +1,145 @@
|
|
1
|
+
<svg version="1.1" id="proposals-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
2
|
+
y="0px" width="1080px" height="1080px" viewBox="0 0 1080 1080" enable-background="new 0 0 1080 1080" xml:space="preserve">
|
3
|
+
<g id="proposals" class="stroke-primary">
|
4
|
+
<g id="sleeve">
|
5
|
+
|
6
|
+
<rect class="fill-primary" id="_x32_5-pct_1_" x="419.5" y="798.5" fill="#31536E" fill-opacity="0.25" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="251" height="286"/>
|
7
|
+
<rect class="fill-primary" x="419.5" y="911.5" fill="#31536E" width="251" height="173"/>
|
8
|
+
<circle fill="#FFFFFF" stroke="#31536E" stroke-width="8" stroke-miterlimit="10" cx="615.667" cy="864.668" r="22.5"/>
|
9
|
+
<circle class="fill-primary" fill="#31536E" cx="615.5" cy="864.5" r="13"/>
|
10
|
+
</g>
|
11
|
+
<g>
|
12
|
+
<g id="hand">
|
13
|
+
|
14
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
15
|
+
M650.395,674.5c51.605,0,58.62-90.165,64.562-154.237"/>
|
16
|
+
|
17
|
+
<line fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="457.5" y1="798.5" x2="457.5" y2="667.689"/>
|
18
|
+
|
19
|
+
<line fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="646.5" y1="675.5" x2="646.5" y2="798.5"/>
|
20
|
+
|
21
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
22
|
+
M451.324,498.5c0,0,31.176-4,64.176-32s32-81-4-111c-22,12-156,79-156,79l0,0v74c0,17.992-2.5,41,1.577,65.972
|
23
|
+
C377.942,619.5,401.5,665,466.031,667.689"/>
|
24
|
+
|
25
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
26
|
+
M505.818,513.229c12.682,29.272,13.405,80.272,8.682,102.271"/>
|
27
|
+
|
28
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
29
|
+
M468.5,380.5v-14.282c0-28.564,17.923-51.718,42.5-51.718l0,0c24.577,0,44.5,23.154,44.5,51.718v95.564
|
30
|
+
c0,28.563-19.923,51.718-44.5,51.718l0,0c-17.737,0-25.049-1.979-32.199-19.428"/>
|
31
|
+
|
32
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
33
|
+
M548.052,337.583c7.849-8.05,19.034-13.083,31.448-13.083l0,0c23.748,0,43,18.419,43,41.141v94.719
|
34
|
+
c0,22.721-19.252,41.14-43,41.14l0,0c-11.874,0-22.624-4.605-30.406-12.05"/>
|
35
|
+
|
36
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
37
|
+
M621.341,356.167c6.171-4.207,13.628-6.667,21.659-6.667l0,0c21.263,0,38.5,17.237,38.5,38.5v81c0,21.263-17.237,38.5-38.5,38.5
|
38
|
+
l0,0c-13.871,0-26.029-7.336-32.807-18.34"/>
|
39
|
+
|
40
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
41
|
+
M681.973,386.233c4.827-4.194,9.131-6.733,16.027-6.733l0,0c15.188,0,27.5,12.312,27.5,27.5v89c0,15.188-12.312,27.5-27.5,27.5
|
42
|
+
l0,0c-15.188,0-27.5-12.312-27.5-27.5"/>
|
43
|
+
<path class="fill-primary" id="_x32_5-pct_2_" fill="#31536E" fill-opacity="0.25" d="M688,523.5c-15.188,0-27.5-12.312-27.5-27.5l0.008-0.075
|
44
|
+
C653.52,503.064,643.779,507.5,633,507.5c-13.871,0-26.028-7.336-32.807-18.339c-7.803,7.611-18.669,12.339-30.693,12.339
|
45
|
+
c-11.874,0-22.624-4.605-30.406-12.051l-0.006-0.91C531.29,503.501,517.15,513.5,501,513.5c-10.683,0-18.826-16-27.386-20.245
|
46
|
+
c-5.651-2.803-13.74,8.544-14.813,0.817l10,35C475.952,546.522,490.26,623.5,524,623.5c16.15,0,18.094-67.051,18.094-67.051
|
47
|
+
c7.782,7.445,8.532,23.051,20.406,23.051c12.024,0,29.891-47.728,37.693-55.339C606.972,535.164,619.129,542.5,633,542.5
|
48
|
+
c10.779,0,20.52-4.436,27.508-11.575L660.5,531c0,15.188,12.312,27.5,27.5,27.5s27.5-12.312,27.5-27.5v-35
|
49
|
+
C715.5,511.188,703.188,523.5,688,523.5z"/>
|
50
|
+
<path fill="none" stroke="#31536E" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
51
|
+
M473.499,373.498c0,0,12.987,26.002,22.994,22.002s32.046-23.229,32.046-23.229"/>
|
52
|
+
|
53
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
54
|
+
M542.539,502.5c12.047,5.577,23.875,74.756,22.961,69"/>
|
55
|
+
</g>
|
56
|
+
</g>
|
57
|
+
|
58
|
+
<line fill="none" stroke="#31536E" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="638.5" y1="864.5" x2="648.5" y2="864.5"/>
|
59
|
+
|
60
|
+
<line fill="none" stroke="#31536E" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="580.5" y1="864.5" x2="593.5" y2="864.5"/>
|
61
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
62
|
+
M426.638,477.259"/>
|
63
|
+
<path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
64
|
+
M469.333,347.889V99.028c0-23.58-19.115-42.695-42.695-42.695l0,0c-23.58,0-42.696,19.115-42.696,42.695v320.536"/>
|
65
|
+
|
66
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-miterlimit="10" x1="404.098" y1="165.608" x2="447.455" y2="165.608"/>
|
67
|
+
|
68
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-miterlimit="10" x1="404.098" y1="269.608" x2="447.455" y2="269.608"/>
|
69
|
+
|
70
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-miterlimit="10" x1="404.098" y1="387.608" x2="447.455" y2="387.608"/>
|
71
|
+
<g id="stars_2" class="stars">
|
72
|
+
|
73
|
+
<path fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
74
|
+
M137.5,645.605c0-14.688-18.667-35.354-35.355-35.354c15.355,0,35.355-20.333,35.355-35.354c0,15.021,16.666,35.354,35.355,35.354
|
75
|
+
C153.833,610.251,137.5,630.918,137.5,645.605z"/>
|
76
|
+
<g>
|
77
|
+
|
78
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="1008.882" cy="708.662" r="13.5"/>
|
79
|
+
|
80
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="992.383" y1="691.927" x2="971.17" y2="670.714"/>
|
81
|
+
|
82
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="1026.324" y1="725.868" x2="1047.537" y2="747.081"/>
|
83
|
+
|
84
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="1025.617" y1="692.634" x2="1046.83" y2="671.421"/>
|
85
|
+
|
86
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="992.383" y1="725.868" x2="971.17" y2="747.081"/>
|
87
|
+
</g>
|
88
|
+
<g>
|
89
|
+
|
90
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="212.112" y1="161.345" x2="185.95" y2="187.508"/>
|
91
|
+
|
92
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="176.758" y1="196.701" x2="150.595" y2="222.864"/>
|
93
|
+
|
94
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="211.405" y1="222.864" x2="185.242" y2="196.701"/>
|
95
|
+
|
96
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="176.051" y1="187.508" x2="149.888" y2="161.345"/>
|
97
|
+
</g>
|
98
|
+
|
99
|
+
<path fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
100
|
+
M833.092,333.86c0,0-24.604,4.603-30.25,10.249c-5.646,5.646-10.248,30.249-10.248,30.249s-4.604-24.603-10.25-30.249
|
101
|
+
c-5.646-5.646-30.248-10.249-30.248-10.249s25.188-5.187,30.248-10.249c5.062-5.062,10.25-30.249,10.25-30.249
|
102
|
+
s4.604,24.603,10.248,30.249C808.488,329.257,833.092,333.86,833.092,333.86z"/>
|
103
|
+
<g>
|
104
|
+
|
105
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="978.834" cy="500.751" r="18.5"/>
|
106
|
+
|
107
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="938.834" cy="500.751" r="7.166"/>
|
108
|
+
|
109
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="978.834" cy="540.751" r="7.166"/>
|
110
|
+
|
111
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="1018.834" cy="500.751" r="7.166"/>
|
112
|
+
|
113
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="978.834" cy="460.751" r="7.166"/>
|
114
|
+
</g>
|
115
|
+
<g>
|
116
|
+
|
117
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="296.246" y1="682.224" x2="351.149" y2="737.129"/>
|
118
|
+
|
119
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="351.149" y1="682.224" x2="296.246" y2="737.129"/>
|
120
|
+
|
121
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="305.5" y1="709.251" x2="278.5" y2="709.251"/>
|
122
|
+
|
123
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="343.5" y1="709.251" x2="370.5" y2="709.251"/>
|
124
|
+
|
125
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="324.5" y1="728.251" x2="324.5" y2="755.251"/>
|
126
|
+
|
127
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="324.5" y1="690.251" x2="324.5" y2="663.251"/>
|
128
|
+
</g>
|
129
|
+
<g>
|
130
|
+
|
131
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="629.5" y1="122.251" x2="629.5" y2="201.251"/>
|
132
|
+
|
133
|
+
<line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="668.5" y1="162.251" x2="589.5" y2="162.251"/>
|
134
|
+
|
135
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="609.5" cy="181.751" r="7.039"/>
|
136
|
+
|
137
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="609.5" cy="141.751" r="7.039"/>
|
138
|
+
|
139
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="649.5" cy="181.751" r="7.039"/>
|
140
|
+
|
141
|
+
<circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="649.5" cy="141.751" r="7.039"/>
|
142
|
+
</g>
|
143
|
+
</g>
|
144
|
+
</g>
|
145
|
+
</svg>
|
data/config/locales/ca.yml
CHANGED
@@ -12,6 +12,16 @@ ca:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Maniquins
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Aquest usuari ha creat %{score} proves.
|
19
|
+
description_own: Heu creat %{score} proves.
|
20
|
+
explanation: Els usuaris obtenen aquesta insígnia creant proves.
|
21
|
+
name: Proves
|
22
|
+
next_level_in: Crea %{score} més proves per arribar al següent nivell!
|
23
|
+
unearned_another: Aquest usuari encara no ha creat cap prova.
|
24
|
+
unearned_own: Encara no has creat cap prova.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/en.yml
CHANGED
@@ -13,6 +13,16 @@ en:
|
|
13
13
|
admin:
|
14
14
|
exports:
|
15
15
|
dummies: Dummies
|
16
|
+
gamification:
|
17
|
+
badges:
|
18
|
+
test:
|
19
|
+
description_another: This user has created %{score} tests.
|
20
|
+
description_own: You have created %{score} tests.
|
21
|
+
explanation: Users get this badge by creating tests.
|
22
|
+
name: Tests
|
23
|
+
next_level_in: Create %{score} more tests to reach the next level!
|
24
|
+
unearned_another: This user hasn't created any tests yet.
|
25
|
+
unearned_own: You have created no tests yet.
|
16
26
|
pages:
|
17
27
|
home:
|
18
28
|
statistics:
|
data/config/locales/es-PY.yml
CHANGED
@@ -12,6 +12,16 @@ es-PY:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Maniquíes
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Este usuario ha creado %{score} pruebas.
|
19
|
+
description_own: Has creado %{score} pruebas.
|
20
|
+
explanation: Los usuarios obtienen esta insignia al crear pruebas.
|
21
|
+
name: Pruebas
|
22
|
+
next_level_in: '¡Crea %{score} pruebas más para alcanzar el siguiente nivel!'
|
23
|
+
unearned_another: Este usuario aún no ha creado ninguna prueba.
|
24
|
+
unearned_own: No has creado ninguna prueba todavía.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/es.yml
CHANGED
@@ -12,6 +12,16 @@ es:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Maniquíes
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Este usuario ha creado %{score} pruebas.
|
19
|
+
description_own: Has creado %{score} pruebas.
|
20
|
+
explanation: Los usuarios obtienen esta insignia al crear pruebas.
|
21
|
+
name: Pruebas
|
22
|
+
next_level_in: '¡Crea %{score} pruebas más para alcanzar el siguiente nivel!'
|
23
|
+
unearned_another: Este usuario aún no ha creado ninguna prueba.
|
24
|
+
unearned_own: No has creado ninguna prueba todavía.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/eu.yml
CHANGED
@@ -12,6 +12,16 @@ eu:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Manikiak
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Erabiltzaile honek %{score} proba egin ditu.
|
19
|
+
description_own: '%{score} proba sortu dituzu.'
|
20
|
+
explanation: Erabiltzaileek plaka hau lortzen dute probak sortzeko.
|
21
|
+
name: probak
|
22
|
+
next_level_in: Sortu %{score} proba gehiago hurrengo mailara iristeko!
|
23
|
+
unearned_another: Erabiltzaile honek ez du proba oraindik sortu.
|
24
|
+
unearned_own: Oraindik ez duzu probak sortu.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/fi.yml
CHANGED
@@ -2,27 +2,37 @@ fi:
|
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
4
|
dummy_resource:
|
5
|
-
created_at:
|
5
|
+
created_at: Luontiaika
|
6
6
|
field: Oma kenttä
|
7
7
|
start_date: Aloituspäivämäärä
|
8
|
-
title:
|
9
|
-
updated_at:
|
8
|
+
title: Otsikko
|
9
|
+
updated_at: Päivitysaika
|
10
10
|
decidim:
|
11
11
|
dummy:
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Esimerkkitiedot
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Tämä käyttäjä on luonut %{score} testiä.
|
19
|
+
description_own: Olet luonut %{score} testiä.
|
20
|
+
explanation: Käyttäjät saavat tämän kunniamerkin luomalla testejä.
|
21
|
+
name: Testit
|
22
|
+
next_level_in: Luo vielä %{score} testiä seuraavan tason saavuttamiseksi!
|
23
|
+
unearned_another: Tämä käyttäjä ei ole vielä luonut testejä.
|
24
|
+
unearned_own: Et ole vielä luonut testejä.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
18
28
|
bar: Palkki
|
19
|
-
dummies_count_high:
|
20
|
-
dummies_count_medium:
|
29
|
+
dummies_count_high: Esimerkkiluku, korkea
|
30
|
+
dummies_count_medium: Esimerkkiluku, keskitaso
|
21
31
|
foo: Foo
|
22
32
|
participatory_processes:
|
23
33
|
statistics:
|
24
|
-
dummies_count_high:
|
25
|
-
dummies_count_medium:
|
34
|
+
dummies_count_high: Esimerkkiluku, korkea
|
35
|
+
dummies_count_medium: Esimerkkiluku, keskitaso
|
26
36
|
resource_links:
|
27
37
|
test_link:
|
28
38
|
dummy_resource_dummy: Liittyvät esimerkkitiedot
|
data/config/locales/fr.yml
CHANGED
@@ -2,7 +2,7 @@ fr:
|
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
4
|
dummy_resource:
|
5
|
-
created_at:
|
5
|
+
created_at: Créé le
|
6
6
|
field: Champ
|
7
7
|
start_date: Date de début
|
8
8
|
title: Titre
|
@@ -12,6 +12,16 @@ fr:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Référence de test
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Cet utilisateur a créé %{score} tests.
|
19
|
+
description_own: Vous avez créé %{score} tests.
|
20
|
+
explanation: Les utilisateurs obtiennent ce badge en créant des tests.
|
21
|
+
name: Tests
|
22
|
+
next_level_in: Créez %{score} autres tests pour atteindre le niveau suivant !
|
23
|
+
unearned_another: Cet utilisateur n'a pas encore créé de test.
|
24
|
+
unearned_own: Vous n'avez créé aucun test pour le moment.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/gl.yml
CHANGED
@@ -12,6 +12,16 @@ gl:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Dummies
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Este usuario creou %{score} probas.
|
19
|
+
description_own: Creaches %{score} probas.
|
20
|
+
explanation: Os usuarios obtén esta insignia creando probas.
|
21
|
+
name: Probas
|
22
|
+
next_level_in: Crea %{score} probas máis para chegar ao seguinte nivel!
|
23
|
+
unearned_another: Este usuario aínda non creou ningunha proba.
|
24
|
+
unearned_own: Non creaches probas aínda.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
@@ -0,0 +1,38 @@
|
|
1
|
+
hu:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
dummy_resource:
|
5
|
+
created_at: 'Létrehozva:'
|
6
|
+
field: A mezőm
|
7
|
+
start_date: Kezdő dátum
|
8
|
+
title: Cím
|
9
|
+
updated_at: 'Frissítve:'
|
10
|
+
decidim:
|
11
|
+
dummy:
|
12
|
+
admin:
|
13
|
+
exports:
|
14
|
+
dummies: Dummik
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: '%{score} teszt létrehozva.'
|
19
|
+
description_own: Létrehoztad a(z) %{score} teszteket.
|
20
|
+
explanation: A jelvényt tesztek létrehozásával kapod meg.
|
21
|
+
name: Tesztek
|
22
|
+
next_level_in: Hozz létre még %{score} tesztet a következő szint eléréséhez!
|
23
|
+
unearned_another: Ez a felhasználó még nem hozott létre teszteket.
|
24
|
+
unearned_own: Még nem hoztál létre teszteket.
|
25
|
+
pages:
|
26
|
+
home:
|
27
|
+
statistics:
|
28
|
+
bar: Oszlop
|
29
|
+
dummies_count_high: Dummies high
|
30
|
+
dummies_count_medium: Dummies medium
|
31
|
+
foo: Foo
|
32
|
+
participatory_processes:
|
33
|
+
statistics:
|
34
|
+
dummies_count_high: Dummies high
|
35
|
+
dummies_count_medium: Dummies medium
|
36
|
+
resource_links:
|
37
|
+
test_link:
|
38
|
+
dummy_resource_dummy: Kapcsolódó dummy
|
data/config/locales/it.yml
CHANGED
@@ -12,6 +12,16 @@ it:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Risorse Fittizie
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Questo utente ha creato %{score} test.
|
19
|
+
description_own: Hai creato %{score} test.
|
20
|
+
explanation: Gli utenti ottengono questo badge creando test.
|
21
|
+
name: test
|
22
|
+
next_level_in: Crea altri %{score} test per raggiungere il livello successivo!
|
23
|
+
unearned_another: Questo utente non ha ancora creato alcun test.
|
24
|
+
unearned_own: Non hai ancora creato alcun test.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/nl.yml
CHANGED
@@ -12,6 +12,16 @@ nl:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Dummies
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Deze gebruiker heeft %{score} tests gemaakt.
|
19
|
+
description_own: U hebt %{score} tests gemaakt.
|
20
|
+
explanation: Gebruikers krijgen deze badge door tests te maken.
|
21
|
+
name: Tests
|
22
|
+
next_level_in: Maak %{score} extra tests om het volgende niveau te bereiken!
|
23
|
+
unearned_another: Deze gebruiker heeft nog geen tests gemaakt.
|
24
|
+
unearned_own: U hebt nog geen tests gemaakt.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/pl.yml
CHANGED
@@ -12,6 +12,16 @@ pl:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Manekiny
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Ten użytkownik utworzył %{score} testów.
|
19
|
+
description_own: Stworzyłeś %{score} testów.
|
20
|
+
explanation: Użytkownicy otrzymują tę odznakę, tworząc testy.
|
21
|
+
name: Testy
|
22
|
+
next_level_in: Stwórz %{score} dodatkowych testów, aby przejść do następnego poziomu!
|
23
|
+
unearned_another: Ten użytkownik nie utworzył jeszcze żadnych testów.
|
24
|
+
unearned_own: Nie stworzyłeś jeszcze żadnych testów.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/pt-BR.yml
CHANGED
@@ -12,6 +12,16 @@ pt-BR:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Manequim
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Este usuário criou %{score} testes.
|
19
|
+
description_own: Você criou %{score} testes.
|
20
|
+
explanation: Os usuários obtêm esse selo criando testes.
|
21
|
+
name: Testes
|
22
|
+
next_level_in: Crie mais %{score} testes para alcançar o próximo nível!
|
23
|
+
unearned_another: Este usuário ainda não criou nenhum teste.
|
24
|
+
unearned_own: Você não criou testes ainda.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/pt.yml
CHANGED
@@ -12,6 +12,16 @@ pt:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Manequim
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Este usuário criou %{score} testes.
|
19
|
+
description_own: Você criou %{score} testes.
|
20
|
+
explanation: Os usuários obtêm esse selo criando testes.
|
21
|
+
name: Testes
|
22
|
+
next_level_in: Crie mais %{score} testes para alcançar o próximo nível!
|
23
|
+
unearned_another: Este usuário ainda não criou nenhum teste.
|
24
|
+
unearned_own: Você não criou testes ainda.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
data/config/locales/sv.yml
CHANGED
@@ -12,6 +12,16 @@ sv:
|
|
12
12
|
admin:
|
13
13
|
exports:
|
14
14
|
dummies: Dummies
|
15
|
+
gamification:
|
16
|
+
badges:
|
17
|
+
test:
|
18
|
+
description_another: Den här användaren har skapat %{score} tester.
|
19
|
+
description_own: Du har skapat %{score} tester.
|
20
|
+
explanation: Användare får detta märke genom att skapa test.
|
21
|
+
name: tester
|
22
|
+
next_level_in: Skapa %{score} fler tester för att nå nästa nivå!
|
23
|
+
unearned_another: Den här användaren har inte skapat några tester än.
|
24
|
+
unearned_own: Du har inte skapat några tester än.
|
15
25
|
pages:
|
16
26
|
home:
|
17
27
|
statistics:
|
@@ -9,6 +9,8 @@ module Decidim
|
|
9
9
|
class Engine < ::Rails::Engine
|
10
10
|
isolate_namespace Decidim::Verifications::DummyVerification
|
11
11
|
|
12
|
+
paths["lib/tasks"] = nil
|
13
|
+
|
12
14
|
routes do
|
13
15
|
root to: proc { [200, {}, ["DUMMY VERIFICATION ENGINE"]] }
|
14
16
|
get :edit_authorization, to: proc { [200, {}, ["CONTINUE YOUR VERIFICATION"]] }
|
@@ -64,6 +64,10 @@ module Decidim
|
|
64
64
|
ResourceLocatorPresenter.new(self).url
|
65
65
|
end
|
66
66
|
|
67
|
+
def allow_resource_permissions?
|
68
|
+
component.settings.resources_permissions_enabled
|
69
|
+
end
|
70
|
+
|
67
71
|
def self.user_collection(user)
|
68
72
|
where(decidim_author_id: user.id)
|
69
73
|
end
|
@@ -96,6 +100,7 @@ Decidim.register_component(:dummy) do |component|
|
|
96
100
|
|
97
101
|
component.settings(:global) do |settings|
|
98
102
|
settings.attribute :comments_enabled, type: :boolean, default: true
|
103
|
+
settings.attribute :resources_permissions_enabled, type: :boolean, default: true
|
99
104
|
settings.attribute :dummy_global_attribute_1, type: :boolean
|
100
105
|
settings.attribute :dummy_global_attribute_2, type: :boolean
|
101
106
|
end
|
@@ -110,6 +115,7 @@ Decidim.register_component(:dummy) do |component|
|
|
110
115
|
resource.name = :dummy
|
111
116
|
resource.model_class_name = "Decidim::DummyResources::DummyResource"
|
112
117
|
resource.template = "decidim/dummy_resource/linked_dummys"
|
118
|
+
resource.actions = %w(foo)
|
113
119
|
end
|
114
120
|
|
115
121
|
component.register_stat :dummies_count_high, primary: true, priority: Decidim::StatsRegistry::HIGH_PRIORITY do |components, _start_at, _end_at|
|
@@ -1,6 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module GeocoderHelpers
|
4
|
+
def stub_geocoding(address, coordinates)
|
5
|
+
result = coordinates.blank? ? [] : [{ "coordinates" => [latitude, longitude] }]
|
6
|
+
|
7
|
+
Geocoder::Lookup::Test.add_stub(
|
8
|
+
address,
|
9
|
+
result
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
3
14
|
RSpec.configure do |config|
|
15
|
+
config.include GeocoderHelpers
|
16
|
+
|
4
17
|
config.before(:suite) do
|
5
18
|
# Set geocoder configuration in test mode
|
6
19
|
Decidim.geocoder = {
|
@@ -20,20 +20,18 @@ module TranslationHelpers
|
|
20
20
|
# HTML tags from the field (in case there are any).
|
21
21
|
#
|
22
22
|
# field - the field that holds the translations
|
23
|
-
# locale - the ID of the locale to check
|
24
23
|
# upcase - a boolean to indicate whether the string must be checked upcased or not.
|
25
|
-
def have_i18n_content(field,
|
26
|
-
have_content(i18n_content(field,
|
24
|
+
def have_i18n_content(field, upcase: false)
|
25
|
+
have_content(i18n_content(field, upcase: upcase))
|
27
26
|
end
|
28
27
|
|
29
28
|
# Checks that the current page doesn't have some translated content. It strips
|
30
29
|
# the HTML tags from the field (in case there are any).
|
31
30
|
#
|
32
31
|
# field - the field that holds the translations
|
33
|
-
# locale - the ID of the locale to check
|
34
32
|
# upcase - a boolean to indicate whether the string must be checked upcased or not.
|
35
|
-
def have_no_i18n_content(field,
|
36
|
-
have_no_content(i18n_content(field,
|
33
|
+
def have_no_i18n_content(field, upcase: false)
|
34
|
+
have_no_content(i18n_content(field, upcase: upcase))
|
37
35
|
end
|
38
36
|
|
39
37
|
# Handles how to fill in i18n form fields.
|
@@ -93,10 +91,9 @@ module TranslationHelpers
|
|
93
91
|
# Gives a specific language version of a field and (optionally) upcases it
|
94
92
|
#
|
95
93
|
# field - the field that holds the translations
|
96
|
-
# locale - the ID of the locale to check
|
97
94
|
# upcase - a boolean to indicate whether the string must be checked upcased or not.
|
98
|
-
def i18n_content(field,
|
99
|
-
content = stripped(translated(field, locale: locale))
|
95
|
+
def i18n_content(field, upcase: false)
|
96
|
+
content = stripped(translated(field, locale: I18n.locale))
|
100
97
|
upcase ? content.upcase : content
|
101
98
|
end
|
102
99
|
end
|
@@ -14,7 +14,6 @@ require "action_view/helpers/sanitize_helper"
|
|
14
14
|
Dir["#{__dir__}/rspec_support/**/*.rb"].each { |f| require f }
|
15
15
|
|
16
16
|
require_relative "factories"
|
17
|
-
require_relative "screenshot_helper_ext"
|
18
17
|
|
19
18
|
RSpec.configure do |config|
|
20
19
|
config.color = true
|
@@ -36,5 +35,4 @@ RSpec.configure do |config|
|
|
36
35
|
config.include ActionView::Helpers::SanitizeHelper
|
37
36
|
config.include ERB::Util
|
38
37
|
config.include Capybara::ReactSelect, type: :system
|
39
|
-
config.include Decidim::ScreenshotHelperExt, type: :system
|
40
38
|
end
|
data/lib/decidim/dev/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-dev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-09-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capybara
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.
|
35
|
+
version: 0.14.1
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.14.1
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: factory_bot_rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,26 +144,6 @@ dependencies:
|
|
144
144
|
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: 1.8.2
|
147
|
-
- !ruby/object:Gem::Dependency
|
148
|
-
name: parser
|
149
|
-
requirement: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - ">="
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '2.5'
|
154
|
-
- - "!="
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
version: 2.5.1.1
|
157
|
-
type: :runtime
|
158
|
-
prerelease: false
|
159
|
-
version_requirements: !ruby/object:Gem::Requirement
|
160
|
-
requirements:
|
161
|
-
- - ">="
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: '2.5'
|
164
|
-
- - "!="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 2.5.1.1
|
167
147
|
- !ruby/object:Gem::Dependency
|
168
148
|
name: puma
|
169
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,14 +234,14 @@ dependencies:
|
|
254
234
|
requirements:
|
255
235
|
- - "~>"
|
256
236
|
- !ruby/object:Gem::Version
|
257
|
-
version: 0.
|
237
|
+
version: 0.58.0
|
258
238
|
type: :runtime
|
259
239
|
prerelease: false
|
260
240
|
version_requirements: !ruby/object:Gem::Requirement
|
261
241
|
requirements:
|
262
242
|
- - "~>"
|
263
243
|
- !ruby/object:Gem::Version
|
264
|
-
version: 0.
|
244
|
+
version: 0.58.0
|
265
245
|
- !ruby/object:Gem::Dependency
|
266
246
|
name: rubocop-rspec
|
267
247
|
requirement: !ruby/object:Gem::Requirement
|
@@ -304,6 +284,20 @@ dependencies:
|
|
304
284
|
- - "~>"
|
305
285
|
- !ruby/object:Gem::Version
|
306
286
|
version: '0.13'
|
287
|
+
- !ruby/object:Gem::Dependency
|
288
|
+
name: system_test_html_screenshots
|
289
|
+
requirement: !ruby/object:Gem::Requirement
|
290
|
+
requirements:
|
291
|
+
- - "~>"
|
292
|
+
- !ruby/object:Gem::Version
|
293
|
+
version: 0.1.1
|
294
|
+
type: :runtime
|
295
|
+
prerelease: false
|
296
|
+
version_requirements: !ruby/object:Gem::Requirement
|
297
|
+
requirements:
|
298
|
+
- - "~>"
|
299
|
+
- !ruby/object:Gem::Version
|
300
|
+
version: 0.1.1
|
307
301
|
- !ruby/object:Gem::Dependency
|
308
302
|
name: webmock
|
309
303
|
requirement: !ruby/object:Gem::Requirement
|
@@ -344,6 +338,7 @@ files:
|
|
344
338
|
- README.md
|
345
339
|
- Rakefile
|
346
340
|
- app/assets/images/decidim/dummy.svg
|
341
|
+
- app/assets/images/decidim/gamification/badges/test.svg
|
347
342
|
- app/controllers/decidim/dummy_resources/dummy_resources_controller.rb
|
348
343
|
- app/views/decidim/dummy_resource/_linked_dummys.html.erb
|
349
344
|
- app/views/decidim/dummy_resources/dummy_resources/foo.html.erb
|
@@ -356,6 +351,7 @@ files:
|
|
356
351
|
- config/locales/fi.yml
|
357
352
|
- config/locales/fr.yml
|
358
353
|
- config/locales/gl.yml
|
354
|
+
- config/locales/hu.yml
|
359
355
|
- config/locales/it.yml
|
360
356
|
- config/locales/nl.yml
|
361
357
|
- config/locales/pl.yml
|
@@ -378,7 +374,6 @@ files:
|
|
378
374
|
- lib/decidim/dev/railtie.rb
|
379
375
|
- lib/decidim/dev/test/authorization_shared_examples.rb
|
380
376
|
- lib/decidim/dev/test/base_spec_helper.rb
|
381
|
-
- lib/decidim/dev/test/ext/screenshot_helper.rb
|
382
377
|
- lib/decidim/dev/test/factories.rb
|
383
378
|
- lib/decidim/dev/test/promoted_participatory_processes_shared_examples.rb
|
384
379
|
- lib/decidim/dev/test/rspec_support/action_mailer.rb
|
@@ -395,6 +390,7 @@ files:
|
|
395
390
|
- lib/decidim/dev/test/rspec_support/component_context.rb
|
396
391
|
- lib/decidim/dev/test/rspec_support/content_processing.rb
|
397
392
|
- lib/decidim/dev/test/rspec_support/factory_bot.rb
|
393
|
+
- lib/decidim/dev/test/rspec_support/gamification.rb
|
398
394
|
- lib/decidim/dev/test/rspec_support/geocoder.rb
|
399
395
|
- lib/decidim/dev/test/rspec_support/helpers.rb
|
400
396
|
- lib/decidim/dev/test/rspec_support/html_matchers.rb
|
@@ -406,7 +402,6 @@ files:
|
|
406
402
|
- lib/decidim/dev/test/rspec_support/warden.rb
|
407
403
|
- lib/decidim/dev/test/rspec_support/webmock.rb
|
408
404
|
- lib/decidim/dev/test/rspec_support/wisper.rb
|
409
|
-
- lib/decidim/dev/test/screenshot_helper_ext.rb
|
410
405
|
- lib/decidim/dev/test/spec_helper.rb
|
411
406
|
- lib/decidim/dev/version.rb
|
412
407
|
- lib/tasks/generators.rake
|
@@ -431,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
431
426
|
version: '0'
|
432
427
|
requirements: []
|
433
428
|
rubyforge_project:
|
434
|
-
rubygems_version: 2.7.
|
429
|
+
rubygems_version: 2.7.7
|
435
430
|
signing_key:
|
436
431
|
specification_version: 4
|
437
432
|
summary: Decidim dev tools
|
@@ -1,111 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ActionDispatch
|
4
|
-
module SystemTesting
|
5
|
-
module TestHelpers
|
6
|
-
# Screenshot helper for system testing.
|
7
|
-
module ScreenshotHelper
|
8
|
-
# Takes a screenshot of the current page in the browser.
|
9
|
-
#
|
10
|
-
# +take_screenshot+ can be used at any point in your system tests to take
|
11
|
-
# a screenshot of the current state. This can be useful for debugging or
|
12
|
-
# automating visual testing.
|
13
|
-
#
|
14
|
-
# The screenshot will be displayed in your console, if supported.
|
15
|
-
#
|
16
|
-
# You can set the +RAILS_SYSTEM_TESTING_SCREENSHOT+ environment variable to
|
17
|
-
# control the output. Possible values are:
|
18
|
-
# * [+simple+ (default)] Only displays the screenshot path.
|
19
|
-
# This is the default value.
|
20
|
-
# * [+inline+] Display the screenshot in the terminal using the
|
21
|
-
# iTerm image protocol (https://iterm2.com/documentation-images.html).
|
22
|
-
# * [+artifact+] Display the screenshot in the terminal, using the terminal
|
23
|
-
# artifact format (https://buildkite.github.io/terminal/inline-images/).
|
24
|
-
def take_screenshot
|
25
|
-
save_image
|
26
|
-
save_page
|
27
|
-
STDOUT.puts display_screenshot
|
28
|
-
end
|
29
|
-
|
30
|
-
# Takes a screenshot of the current page in the browser if the test
|
31
|
-
# failed.
|
32
|
-
#
|
33
|
-
# +take_failed_screenshot+ is included in <tt>application_system_test_case.rb</tt>
|
34
|
-
# that is generated with the application. To take screenshots when a test
|
35
|
-
# fails add +take_failed_screenshot+ to the teardown block before clearing
|
36
|
-
# sessions.
|
37
|
-
def take_failed_screenshot
|
38
|
-
take_screenshot if failed? && supports_screenshot?
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def screenshot_name
|
44
|
-
failed? ? "failures_#{method_name}" : method_name
|
45
|
-
end
|
46
|
-
|
47
|
-
def image_path
|
48
|
-
@image_path ||= absolute_image_path.to_s
|
49
|
-
end
|
50
|
-
|
51
|
-
def page_path
|
52
|
-
@page_path ||= absolute_page_path.to_s
|
53
|
-
end
|
54
|
-
|
55
|
-
def absolute_image_path
|
56
|
-
Rails.root.join("tmp/screenshots/#{screenshot_name}.png")
|
57
|
-
end
|
58
|
-
|
59
|
-
def absolute_page_path
|
60
|
-
Rails.root.join("tmp/screenshots/#{screenshot_name}.html")
|
61
|
-
end
|
62
|
-
|
63
|
-
def save_image
|
64
|
-
page.save_screenshot(absolute_image_path)
|
65
|
-
end
|
66
|
-
|
67
|
-
def save_page
|
68
|
-
page.save_page(absolute_page_path)
|
69
|
-
end
|
70
|
-
|
71
|
-
def output_type
|
72
|
-
# Environment variables have priority
|
73
|
-
output_type = ENV["RAILS_SYSTEM_TESTING_SCREENSHOT"] || ENV["CAPYBARA_INLINE_SCREENSHOT"]
|
74
|
-
|
75
|
-
# Default to outputting a path to the screenshot
|
76
|
-
output_type ||= "simple"
|
77
|
-
|
78
|
-
output_type
|
79
|
-
end
|
80
|
-
|
81
|
-
def display_screenshot
|
82
|
-
message = "[Image screenshot]: file://#{image_path}\n"
|
83
|
-
message += " [Page HTML]: file://#{page_path}\n"
|
84
|
-
|
85
|
-
case output_type
|
86
|
-
when "artifact"
|
87
|
-
message << "\e]1338;url=artifact://#{absolute_image_path}\a\n"
|
88
|
-
when "inline"
|
89
|
-
name = inline_base64(File.basename(absolute_image_path))
|
90
|
-
image = inline_base64(File.read(absolute_image_path))
|
91
|
-
message << "\e]1337;File=name=#{name};height=400px;inline=1:#{image}\a\n"
|
92
|
-
end
|
93
|
-
|
94
|
-
message
|
95
|
-
end
|
96
|
-
|
97
|
-
def inline_base64(path)
|
98
|
-
Base64.strict_encode64(path)
|
99
|
-
end
|
100
|
-
|
101
|
-
def failed?
|
102
|
-
!passed? && !skipped?
|
103
|
-
end
|
104
|
-
|
105
|
-
def supports_screenshot?
|
106
|
-
Capybara.current_driver != :rack_test
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|