@suffolklitlab/alkiln 5.0.2-feat-github-server-5 โ†’ 5.0.2-feat-github-server-6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.github/workflows/github_server.yml +1 -1
  2. package/action.yml +26 -26
  3. package/docassemble/ALKiln/__init__.py +1 -0
  4. package/docassemble/ALKiln/data/questions/AL_tests.yml +40 -0
  5. package/docassemble/ALKiln/data/questions/all_tests.yml +312 -0
  6. package/docassemble/ALKiln/data/questions/test.yml +14 -0
  7. package/docassemble/ALKiln/data/questions/test_date_and_time.yml +34 -0
  8. package/docassemble/ALKiln/data/questions/test_decoding.yml +101 -0
  9. package/docassemble/ALKiln/data/questions/test_kickout.yml +37 -0
  10. package/docassemble/ALKiln/data/questions/test_languages.yml +26 -0
  11. package/docassemble/ALKiln/data/questions/test_longest_filepath.yml +19 -0
  12. package/docassemble/ALKiln/data/questions/test_loops.yml +66 -0
  13. package/docassemble/ALKiln/data/questions/test_missing_var_error_screen.yml +9 -0
  14. package/docassemble/ALKiln/data/questions/test_random_input.yml +83 -0
  15. package/docassemble/ALKiln/data/questions/test_secret_vars.yml +32 -0
  16. package/docassemble/ALKiln/data/questions/test_signature.yml +25 -0
  17. package/docassemble/ALKiln/data/questions/test_taps.yml +43 -0
  18. package/docassemble/ALKiln/data/questions/test_trigger.yml +25 -0
  19. package/docassemble/ALKiln/data/questions/url_args.yml +33 -0
  20. package/docassemble/ALKiln/data/sources/README.md +4 -0
  21. package/docassemble/ALKiln/data/sources/ar.xlsx +0 -0
  22. package/docassemble/ALKiln/data/sources/assembly_line.feature +43 -0
  23. package/docassemble/ALKiln/data/sources/es.xlsx +0 -0
  24. package/docassemble/ALKiln/data/sources/establishing_steps.feature +62 -0
  25. package/docassemble/ALKiln/data/sources/example_test.feature +11 -0
  26. package/docassemble/ALKiln/data/sources/filepaths.feature +9 -0
  27. package/docassemble/ALKiln/data/sources/interactive_steps.feature +172 -0
  28. package/docassemble/ALKiln/data/sources/languages.feature +36 -0
  29. package/docassemble/ALKiln/data/sources/observation_steps.feature +174 -0
  30. package/docassemble/ALKiln/data/sources/random_input.feature +36 -0
  31. package/docassemble/ALKiln/data/sources/reload.feature +155 -0
  32. package/docassemble/ALKiln/data/sources/reports.feature +574 -0
  33. package/docassemble/ALKiln/data/sources/some_png_1.png +0 -0
  34. package/docassemble/ALKiln/data/sources/some_png_2.png +0 -0
  35. package/docassemble/ALKiln/data/sources/story_table_formats.feature +125 -0
  36. package/docassemble/ALKiln/data/sources/story_tables.feature +139 -0
  37. package/docassemble/ALKiln/data/static/README.md +4 -0
  38. package/docassemble/ALKiln/data/static/styles.css +46 -0
  39. package/docassemble/ALKiln/data/templates/README.md +3 -0
  40. package/docassemble/ALKiln/data/templates/simple.pdf +0 -0
  41. package/lib/scope.js +1 -1
  42. package/package.json +1 -1
@@ -56,6 +56,6 @@ jobs:
56
56
  SERVER_URL: "${{ steps.github_server.outputs.SERVER_URL }}"
57
57
  DOCASSEMBLE_DEVELOPER_API_KEY: "${{ steps.github_server.outputs.DOCASSEMBLE_DEVELOPER_API_KEY }}"
58
58
  INSTALL_METHOD: "server"
59
- ALKILN_VERSION: "5.0.2-feat-github-server-5"
59
+ ALKILN_VERSION: "5.0.2-feat-github-server-6"
60
60
  - run: echo "Finished running ALKiln tests"
61
61
 
package/action.yml CHANGED
@@ -81,33 +81,33 @@ runs:
81
81
  if: ${{ inputs.INSTALL_METHOD == 'server' && failure() }}
82
82
  shell: bash
83
83
 
84
- ## debugging
85
- #- name: Setup tmate session
86
- # uses: mxschmitt/action-tmate@v3
84
+ # debugging
85
+ - name: Setup tmate session
86
+ uses: mxschmitt/action-tmate@v3
87
87
 
88
- ###########
89
- #### !!! WARNING: RESTORE CODE FOR TAGS
90
- ###########
91
- # run tests
92
- - name: "ALKiln: Run tests"
93
- if: ${{ success() }}
94
- run: alkiln-run @e6 or @al1
95
- #run: alkiln-run ${{ github.event.inputs.tags && format('{0}', github.event.inputs.tags) }}
96
- shell: bash
97
-
98
- # on playground, delete project
99
- - name: "ALKiln: Try to delete the project from the playground of the docassemble test account."
100
- if: ${{ inputs.INSTALL_METHOD == 'playground' }}
101
- run: alkiln-takedown
102
- shell: bash
103
-
104
- # Upload artifacts that subscribers can download on the Actions summary page
105
- - name: "ALKiln: Upload artifacts folder"
106
- if: ${{ always() }}
107
- uses: actions/upload-artifact@v3
108
- with:
109
- name: ${{ env.ARTIFACT_NAME }}
110
- path: ./alkiln-*
88
+ ############
89
+ ##### !!! WARNING: RESTORE CODE FOR TAGS
90
+ ############
91
+ ## run tests
92
+ #- name: "ALKiln: Run tests"
93
+ # if: ${{ success() }}
94
+ # run: alkiln-run @e6 or @al1
95
+ # #run: alkiln-run ${{ github.event.inputs.tags && format('{0}', github.event.inputs.tags) }}
96
+ # shell: bash
97
+ #
98
+ ## on playground, delete project
99
+ #- name: "ALKiln: Try to delete the project from the playground of the docassemble test account."
100
+ # if: ${{ inputs.INSTALL_METHOD == 'playground' }}
101
+ # run: alkiln-takedown
102
+ # shell: bash
103
+ #
104
+ ## Upload artifacts that subscribers can download on the Actions summary page
105
+ #- name: "ALKiln: Upload artifacts folder"
106
+ # if: ${{ always() }}
107
+ # uses: actions/upload-artifact@v3
108
+ # with:
109
+ # name: ${{ env.ARTIFACT_NAME }}
110
+ # path: ./alkiln-*
111
111
 
112
112
  # ##################################
113
113
  # # A developer's workflow should look similar to the below
@@ -0,0 +1 @@
1
+ __version__ = '1.0.0'
@@ -0,0 +1,40 @@
1
+ metadata:
2
+ title: Test testing AssemblyLine-specific Steps
3
+ short title: Test ALKiln for AL
4
+ comment: Test the AssemblyLine automated integrated testing library for packages that use AssemblyLine itself
5
+ ---
6
+ include:
7
+ - docassemble.AssemblyLine:al_package.yml
8
+ ---
9
+ # Necessary to tell us what the sought var is on each page
10
+ # Every interview that wants testing will need to have an element like this
11
+ default screen parts:
12
+ post: |
13
+ <div data-variable="${ encode_name(str( user_info().variable )) }" id="trigger" aria-hidden="true" style="display: none;"></div>
14
+ ---
15
+ id: interview order
16
+ mandatory: True
17
+ code: |
18
+ users[0].name.first
19
+ users[0].address.address
20
+ users[1].name.first
21
+ end
22
+ ---
23
+ id: field code mix
24
+ sets:
25
+ - users[i].name.first
26
+ question: |
27
+ Mix of code and proxy var
28
+ subquestion: |
29
+ The name fields variables will be using `users[0]` while the last field
30
+ will be using `users[i]`. The sought variable will be using
31
+ `users[0]`. The testing framework needs to be able to handle that.
32
+ fields:
33
+ - code: |
34
+ users[i].name_fields()
35
+ - A proxy var: users[i].proxy_var
36
+ ---
37
+ id: end
38
+ event: end
39
+ question: Great test!
40
+ ---
@@ -0,0 +1,312 @@
1
+ metadata:
2
+ title: Test testing library
3
+ short title: Test ALKiln
4
+ comment: Test the automated integrated testing library created with the AssemblyLine project
5
+ ---
6
+ features:
7
+ css:
8
+ - styles.css
9
+ ---
10
+ # Necessary to tell us what the sought var is on each page
11
+ # Every interview that wants testing will need to have an element like this
12
+ default screen parts:
13
+ post: |
14
+ <div data-variable="${ encode_name(str( user_info().variable )) }" id="trigger" aria-hidden="true" style="display: none;"></div>
15
+ ---
16
+ mandatory: True
17
+ id: interview order
18
+ code: |
19
+ upload_files_visible
20
+ double_quote_dict["double_quote_key"]
21
+ direct_standard_fields
22
+ direct_showifs
23
+ object_checkboxes_test
24
+ buttons_yesnomaybe
25
+ buttons_other
26
+ button_continue
27
+ screen_features
28
+ proxy_list.gather()
29
+ signature_1
30
+ signature_2
31
+ see_simple_doc
32
+
33
+ button_event_action
34
+ single_dropdown_field
35
+ end
36
+ ---
37
+ id: upload files
38
+ question: |
39
+ Upload a file
40
+ subquestion: |
41
+ [https://github.com/plocket/docassemble-ALAutomatedTestingTests/issues/151](https://github.com/plocket/docassemble-ALAutomatedTestingTests/issues/151)
42
+ fields:
43
+ - Upload file field: upload_files_visible
44
+ datatype: files
45
+ required: False
46
+ maximum image size: 1024
47
+ image upload type: jpeg
48
+ accept: |
49
+ "image/png, image/jpg, .doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf,.pdf"
50
+ - Show other file upload: show_upload
51
+ datatype: yesno
52
+ - Hidden upload field: upload_files_hidden
53
+ show if: show_upload
54
+ datatype: files
55
+ required: False
56
+ maximum image size: 1024
57
+ image upload type: jpeg
58
+ accept: |
59
+ "image/png, image/jpg, .doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf,.pdf"
60
+ ---
61
+ id: group of complex fields
62
+ question: |
63
+ Some complex fields
64
+ fields:
65
+ - Singly quoted key: single_quote_dict['single_quote_key']
66
+ datatype: checkboxes
67
+ required: False
68
+ none of the above: False
69
+ choices:
70
+ - 1: sq_one
71
+ - 2: sq_two
72
+ - 3: sq_three
73
+ - Doubly quoted key: double_quote_dict["double_quote_key"]
74
+ datatype: checkboxes
75
+ required: False
76
+ none of the above: False
77
+ choices:
78
+ - 1: dq_one
79
+ - 2: dq_two
80
+ - 3: dq_three
81
+ ---
82
+ id: direct standard fields
83
+ continue button field: direct_standard_fields
84
+ question: |
85
+ Direct standard fields
86
+ subquestion: |
87
+ Excludes proxy vars (x, i, j, etc.) or choices created with objects.
88
+ fields:
89
+ - checkboxes (yesno): checkboxes_yesno
90
+ datatype: yesno
91
+ # TODO: Add checkbox yesno to leave blank
92
+ - checkboxes (other): checkboxes_other
93
+ datatype: checkboxes
94
+ choices:
95
+ - checkboxes opt 1: checkbox_other_opt_1
96
+ - checkboxes opt 2: checkbox_other_opt_2
97
+ - checkboxes opt 3: checkbox_other_opt_3
98
+ # TODO: Add checkbox (other) to test 'none of the above'
99
+ - radio (yesno): radio_yesno
100
+ datatype: yesnoradio
101
+ # TODO: Add radio yesno to choose 'no'
102
+ - radio (other): radio_other
103
+ datatype: radio
104
+ choices:
105
+ - radio opt 1: radio_other_opt_1
106
+ - radio opt 2: radio_other_opt_2
107
+ - radio opt 3: radio_other_opt_3
108
+ # Same DOM as `datatype: area`
109
+ - text input: text_input
110
+ - textarea: textarea
111
+ input type: area
112
+ - date field: date_input
113
+ datatype: date
114
+ required: False
115
+ - dropdown: dropdown_test
116
+ datatype: dropdown
117
+ choices:
118
+ - dropdown opt 1: dropdown_opt_1
119
+ - dropdown opt 2: dropdown_opt_2
120
+ - dropdown opt 3: dropdown_opt_3
121
+ ---
122
+ id: showifs
123
+ continue button field: direct_showifs
124
+ question: |
125
+ Reveal showifs
126
+ subquestion: |
127
+ We start only seeing layer 1, the first question. All other layers are hidden to test finding various hidden fields in the DOM.
128
+
129
+ TODO:
130
+
131
+ - object
132
+ - object_checkbox
133
+
134
+ No showifs: yesnomaybe: (buttons), buttons: (other), continue button field:
135
+ fields:
136
+ - Show layer 2: show_2
137
+ datatype: yesno
138
+ - Show layer 3: show_3
139
+ datatype: yesno
140
+ show if: show_2
141
+ # TODO: Add checkbox yesno to leave blank
142
+ - showif checkbox yesno: showif_checkbox_yesno
143
+ datatype: yesno
144
+ show if: show_3
145
+ # A checkbox's none of the above `for` value is unique
146
+ - showif checkboxes (multiple): showif_checkboxes_other
147
+ datatype: checkboxes
148
+ choices:
149
+ - showif checkbox nota 1: showif_checkboxes_nota_1
150
+ - showif checkbox nota 2: showif_checkboxes_nota_2
151
+ - showif checkbox nota 3: showif_checkboxes_nota_3
152
+ show if: show_3
153
+ # TODO: Add checkbox (other) to test 'none of the above'
154
+ - showif yesnoradio: showif_yesnoradio
155
+ datatype: yesnoradio
156
+ show if: show_3
157
+ # TODO: Add radio yesno to choose 'no'
158
+ - showif radio (multiple): showif_radio_other
159
+ datatype: radio
160
+ choices:
161
+ - showif radio multi 1: showif_radio_multi_1
162
+ - showif radio multi 2: showif_radio_multi_2
163
+ - showif radio multi 3: showif_radio_multi_3
164
+ show if: show_3
165
+ - showif text input: showif_text_input
166
+ show if: show_3
167
+ - showif text input: showif_textarea
168
+ datatype: area
169
+ show if: show_3
170
+ - showif dropdown: showif_dropdown
171
+ show if: show_3
172
+ choices:
173
+ - showif dropdown opt 1: showif_dropdown_1
174
+ - showif dropdown opt 2: showif_dropdown_2
175
+ - showif dropdown opt 3: showif_dropdown_3
176
+ - showif dropdown opt 4: showif_dropdown_4
177
+ ---
178
+ objects:
179
+ - obj_chkbx_opt_1: DAObject
180
+ - obj_chkbx_opt_2: DAObject
181
+ - obj_chkbx_opt_3: DAObject
182
+ - obj_opt_1: DAObject
183
+ - obj_opt_2: DAObject
184
+ - obj_opt_3: DAObject
185
+ ---
186
+ code: |
187
+ obj_chkbx_opt_1.name = 'obj_chkbx_opt_1'
188
+ obj_chkbx_opt_2.name = 'obj_chkbx_opt_2'
189
+ obj_chkbx_opt_3.name = 'obj_chkbx_opt_3'
190
+ obj_opt_1.name = 'obj_opt_1'
191
+ obj_opt_2.name = 'obj_opt_2'
192
+ obj_opt_3.name = 'obj_opt_3'
193
+ ---
194
+ id: object checkboxes
195
+ question: |
196
+ Objects
197
+ fields:
198
+ - Object checkboxes: object_checkboxes_test
199
+ datatype: object_checkboxes
200
+ choices:
201
+ - obj_chkbx_opt_1
202
+ - obj_chkbx_opt_2
203
+ - obj_chkbx_opt_3
204
+ - Object dropdown: object_dropdown
205
+ datatype: object
206
+ choices:
207
+ - obj_opt_1
208
+ - obj_opt_2
209
+ - obj_opt_3
210
+ ---
211
+ id: buttons yesnomaybe
212
+ question: |
213
+ Button (yes/no/maybe)
214
+ yesnomaybe: buttons_yesnomaybe
215
+ ---
216
+ id: buttons other
217
+ question: |
218
+ Button (other)
219
+ field: buttons_other
220
+ buttons:
221
+ - button 1: button_1
222
+ - button 2: button_2
223
+ - button 3: button_3
224
+ ---
225
+ id: button continue
226
+ continue button field: button_continue
227
+ question: |
228
+ Button (continue)
229
+ ---
230
+ id: screen features
231
+ continue button field: screen_features
232
+ question: |
233
+ Other screen features
234
+ subquestion: |
235
+ * [Link to external page](http://ecosia.org/). Its value is always the same.
236
+ * [Link: reload the page](${ interview_url() }). Its value changes.
237
+ * {Term} (working).
238
+ * {Broken term}.
239
+ terms:
240
+ term: |
241
+ A term is a word that you click on if you don't know what the definition is.
242
+ ---
243
+ objects:
244
+ - proxy_list: DAList.using(object_type=Individual, there_are_any=True)
245
+ ---
246
+ id: proxy vars
247
+ generic object: DAList
248
+ question: |
249
+ Proxy var ${ i + 1 }
250
+ fields:
251
+ - ${ ordinal(i) } proxy name: x[i].name.first
252
+ ---
253
+ id: is there another generic
254
+ generic object: DAList
255
+ question: |
256
+ Is there another proxy var?
257
+ yesno: x.there_is_another
258
+ ---
259
+ objects:
260
+ - single_quote_dict: DADict
261
+ - double_quote_dict: DADict
262
+ ---
263
+ id: first signature
264
+ question: |
265
+ Signature 1
266
+ signature: signature_1
267
+ ---
268
+ id: second signature
269
+ question: |
270
+ Signature 2
271
+ signature: signature_2
272
+ ---
273
+ id: button event action
274
+ question: |
275
+ Button (event action)
276
+ field: button_event_action
277
+ action buttons:
278
+ - label: Do not pass go
279
+ action: end
280
+ icon: laugh-wink
281
+ ---
282
+ id: Single dropdown field
283
+ question: Single dropdown field
284
+ field: single_dropdown_field
285
+ dropdown:
286
+ - Efile and serve: efile_and_serve
287
+ - Email: email
288
+ - Mail: mail
289
+ - Hand delivery: hand_delivery
290
+ ---
291
+ id: simple doc
292
+ question: |
293
+ Document
294
+ subquestion: |
295
+ [Tap to download](${ simple_doc.pdf.url_for( attachment=True ) })
296
+ continue button field: see_simple_doc
297
+ ---
298
+ id: simple attachment
299
+ attachment:
300
+ variable name: simple_doc
301
+ pdf template file: simple.pdf
302
+ filename: simple-doc
303
+ skip undefined: True
304
+ editable: False
305
+ fields:
306
+ - "proxy1_name_first": ${ proxy_list[0].name.first }
307
+ - "proxy1_signature": ${ proxy_list[0].signature }
308
+ ---
309
+ id: the end
310
+ event: end
311
+ question: |
312
+ Congratulations! Tests have passed!
@@ -0,0 +1,14 @@
1
+ metadata:
2
+ title: Test testing library
3
+ short title: Test ALKiln
4
+ comment: Test the automated integrated testing library for AssemblyLine
5
+ ---
6
+ mandatory: True
7
+ id: interview order
8
+ code: |
9
+ end
10
+ ---
11
+ id: the end
12
+ event: end
13
+ question: |
14
+ Congradulations! Tests have passed!
@@ -0,0 +1,34 @@
1
+ metadata:
2
+ title: Test testing library - date and time
3
+ short title: Test ALKiln
4
+ ---
5
+ features:
6
+ css:
7
+ - styles.css
8
+ ---
9
+ # Necessary to tell us what the sought var is on each page
10
+ # Every interview that wants testing will need to have an element like this
11
+ default screen parts:
12
+ post: |
13
+ <div data-variable="${ encode_name(str( user_info().variable )) }" id="trigger" aria-hidden="true" style="display: none;"></div>
14
+ ---
15
+ mandatory: True
16
+ id: interview order
17
+ code: |
18
+ date_and_time
19
+ end
20
+ ---
21
+ id: date and time
22
+ continue button field: date_and_time
23
+ question: |
24
+ Date and time
25
+ fields:
26
+ - date field: date_input
27
+ datatype: date
28
+ - time field: time_input
29
+ datatype: time
30
+ ---
31
+ id: the end
32
+ event: end
33
+ question: |
34
+ Congratulations! Tests have passed!
@@ -0,0 +1,101 @@
1
+ ---
2
+ mandatory: True
3
+ id: interview order
4
+ code: |
5
+ #object_multiselect_test
6
+ #multiselect_test
7
+ object_radio_field
8
+ #object_checkboxes_test
9
+ #checkbox_dict['single_quote_key']
10
+ end_screen
11
+ ---
12
+ id: object multiselect
13
+ question: |
14
+ Object Multiselect
15
+ fields:
16
+ - Object multiselect: object_multiselect_test
17
+ datatype: object_multiselect
18
+ choices:
19
+ - obj_opt_1
20
+ - obj_opt_2
21
+ - obj_opt_3
22
+ ---
23
+ id: multiselect
24
+ question: |
25
+ Multiselect
26
+ fields:
27
+ - Multiselect: multiselect_test
28
+ datatype: multiselect
29
+ choices:
30
+ - "hi"
31
+ - "there"
32
+ - "dear"
33
+ - "reader"
34
+ ---
35
+ id: object-radio-field
36
+ question: Object radio field
37
+ fields:
38
+ - object radio field: object_radio_field
39
+ datatype: object_radio
40
+ choices:
41
+ - object_radio_choice_one
42
+ - object_radio_choice_two
43
+ ---
44
+ id: object checkboxes
45
+ question: |
46
+ Objects
47
+ fields:
48
+ - Object checkboxes: object_checkboxes_test
49
+ datatype: object_checkboxes
50
+ choices:
51
+ - obj_chkbx_opt_1
52
+ - obj_chkbx_opt_2
53
+ - obj_chkbx_opt_3
54
+ - Object dropdown: object_dropdown
55
+ datatype: object
56
+ choices:
57
+ - obj_opt_1
58
+ - obj_opt_2
59
+ - obj_opt_3
60
+ ---
61
+ id: group of complex fields
62
+ question: |
63
+ Some complex fields
64
+ fields:
65
+ - Singly quoted key: checkbox_dict['single_quote_key']
66
+ datatype: checkboxes
67
+ none of the above: False
68
+ choices:
69
+ - 1: sq_one
70
+ - 2: sq_two
71
+ - 'weird unicode': "๐Ÿณ๐Ÿงด๐Ÿฏ๐Ÿฅซ๐Ÿ…๐Ÿ—Ž๐Ÿน‡๐Ÿ—ท๐ŸŒฒ๐Ÿฏต"
72
+ ---
73
+ id: end screen
74
+ event: end_screen
75
+ question: All done!
76
+ ---
77
+ objects:
78
+ - checkbox_dict: DADict
79
+ - object_radio_choice_one: Individual
80
+ - object_radio_choice_two: Individual
81
+ - obj_chkbx_opt_1: DAObject
82
+ - obj_chkbx_opt_2: DAObject
83
+ - obj_chkbx_opt_3: DAObject
84
+ - obj_opt_1: DAObject
85
+ - obj_opt_2: DAObject
86
+ - obj_opt_3: DAObject
87
+ ---
88
+ code: |
89
+ obj_chkbx_opt_1.name = 'obj_chkbx_opt_1'
90
+ obj_chkbx_opt_2.name = 'obj_chkbx_opt_2'
91
+ obj_chkbx_opt_3.name = 'obj_chkbx_opt_3'
92
+ obj_opt_1.name = 'obj_opt_1'
93
+ obj_opt_2.name = 'obj_opt_2'
94
+ obj_opt_3.name = 'obj_opt_3'
95
+ ---
96
+ code: |
97
+ object_radio_choice_one.name.first = 'Bob'
98
+ object_radio_choice_one.name.last = 'FirstChoice'
99
+ object_radio_choice_two.name.first = 'Joe'
100
+ object_radio_choice_two.name.last = 'SecondChoice'
101
+ ---
@@ -0,0 +1,37 @@
1
+ ---
2
+ mandatory: True
3
+ code: |
4
+ show_first_screen
5
+ user_choice
6
+ if user_choice == 'wrong':
7
+ kickout_screen
8
+ else:
9
+ success_screen
10
+ ---
11
+ id: show first screen
12
+ question: |
13
+ Welcome to this interview!
14
+ continue button field: show_first_screen
15
+ ---
16
+ id: make choice
17
+ question: |
18
+ What is your choice?
19
+ fields:
20
+ - My choice is...: user_choice
21
+ choices:
22
+ - The Correct choice: correct
23
+ - The Wrong choice: wrong
24
+ ---
25
+ id: kickout screen
26
+ event: kickout_screen
27
+ question: |
28
+ You answered incorrectly
29
+ buttons:
30
+ - Restart: restart
31
+ - Exit: exit
32
+ url: https://courtformsonline.org
33
+ ---
34
+ id: success screen
35
+ event: success_screen
36
+ question: |
37
+ You answered correctly!
@@ -0,0 +1,26 @@
1
+ metadata:
2
+ title: Language url
3
+ ---
4
+ translations:
5
+ - es.xlsx
6
+ - ar.xlsx
7
+ ---
8
+ initial: True
9
+ code: |
10
+ set_language(user_language)
11
+ ---
12
+ code: |
13
+ if 'lang' in url_args:
14
+ user_language = url_args['lang']
15
+ else:
16
+ user_language = 'en'
17
+ ---
18
+ mandatory: True
19
+ id: interview order
20
+ code: |
21
+ multi_language_page
22
+ ---
23
+ event: multi_language_page
24
+ # This title should get translated
25
+ question: English page
26
+ ---
@@ -0,0 +1,19 @@
1
+ metadata:
2
+ title: Longest filepath length under 184
3
+ short title: Filepaths
4
+ ---
5
+ # Necessary to tell us what the sought var is on each page
6
+ # Every interview that wants testing will need to have an element like this
7
+ default screen parts:
8
+ post: |
9
+ <div data-variable="${ encode_name(str( user_info().variable )) }" id="trigger" aria-hidden="true" style="display: none;"></div>
10
+ ---
11
+ mandatory: True
12
+ id: interview order
13
+ code: |
14
+ over_20_question_id
15
+ ---
16
+ event: over_20_question_id
17
+ id: 25 characters question id
18
+ question: Test longest filepath is under 184 characters
19
+ ---