@suffolklitlab/alkiln 5.0.2-feat-github-server-6 → 5.0.2-feat-github-server-8

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 (47) hide show
  1. package/.github/workflows/github_server.yml +5 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/action.yml +25 -24
  4. package/github_server/action.yml +46 -6
  5. package/lib/docassemble/startserver.js +6 -6
  6. package/lib/scope.js +1 -2
  7. package/package.json +1 -1
  8. package/setup.py +2 -2
  9. package/docassemble/ALKiln/__init__.py +0 -1
  10. package/docassemble/ALKiln/data/questions/AL_tests.yml +0 -40
  11. package/docassemble/ALKiln/data/questions/all_tests.yml +0 -312
  12. package/docassemble/ALKiln/data/questions/test.yml +0 -14
  13. package/docassemble/ALKiln/data/questions/test_date_and_time.yml +0 -34
  14. package/docassemble/ALKiln/data/questions/test_decoding.yml +0 -101
  15. package/docassemble/ALKiln/data/questions/test_kickout.yml +0 -37
  16. package/docassemble/ALKiln/data/questions/test_languages.yml +0 -26
  17. package/docassemble/ALKiln/data/questions/test_longest_filepath.yml +0 -19
  18. package/docassemble/ALKiln/data/questions/test_loops.yml +0 -66
  19. package/docassemble/ALKiln/data/questions/test_missing_var_error_screen.yml +0 -9
  20. package/docassemble/ALKiln/data/questions/test_random_input.yml +0 -83
  21. package/docassemble/ALKiln/data/questions/test_secret_vars.yml +0 -32
  22. package/docassemble/ALKiln/data/questions/test_signature.yml +0 -25
  23. package/docassemble/ALKiln/data/questions/test_taps.yml +0 -43
  24. package/docassemble/ALKiln/data/questions/test_trigger.yml +0 -25
  25. package/docassemble/ALKiln/data/questions/url_args.yml +0 -33
  26. package/docassemble/ALKiln/data/sources/README.md +0 -4
  27. package/docassemble/ALKiln/data/sources/ar.xlsx +0 -0
  28. package/docassemble/ALKiln/data/sources/assembly_line.feature +0 -43
  29. package/docassemble/ALKiln/data/sources/es.xlsx +0 -0
  30. package/docassemble/ALKiln/data/sources/establishing_steps.feature +0 -62
  31. package/docassemble/ALKiln/data/sources/example_test.feature +0 -11
  32. package/docassemble/ALKiln/data/sources/filepaths.feature +0 -9
  33. package/docassemble/ALKiln/data/sources/interactive_steps.feature +0 -172
  34. package/docassemble/ALKiln/data/sources/languages.feature +0 -36
  35. package/docassemble/ALKiln/data/sources/observation_steps.feature +0 -174
  36. package/docassemble/ALKiln/data/sources/random_input.feature +0 -36
  37. package/docassemble/ALKiln/data/sources/reload.feature +0 -155
  38. package/docassemble/ALKiln/data/sources/reports.feature +0 -574
  39. package/docassemble/ALKiln/data/sources/some_png_1.png +0 -0
  40. package/docassemble/ALKiln/data/sources/some_png_2.png +0 -0
  41. package/docassemble/ALKiln/data/sources/story_table_formats.feature +0 -125
  42. package/docassemble/ALKiln/data/sources/story_tables.feature +0 -139
  43. package/docassemble/ALKiln/data/static/README.md +0 -4
  44. package/docassemble/ALKiln/data/static/styles.css +0 -46
  45. package/docassemble/ALKiln/data/templates/README.md +0 -3
  46. package/docassemble/ALKiln/data/templates/simple.pdf +0 -0
  47. package/tmp.bash +0 -7
@@ -1,101 +0,0 @@
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
- ---
@@ -1,37 +0,0 @@
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!
@@ -1,26 +0,0 @@
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
- ---
@@ -1,19 +0,0 @@
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
- ---
@@ -1,66 +0,0 @@
1
- metadata:
2
- title: Loop tests
3
- description: Test loops with .there_is_another and .target_number
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
- objects:
12
- - there_are_any_people: DAList.using(object_type=Individual)
13
- - there_is_another_people: DAList.using(object_type=Individual, there_are_any=True)
14
- - target_people: DAList.using(object_type=Individual, ask_number=True)
15
- ---
16
- mandatory: True
17
- code: |
18
- there_are_any_people.gather()
19
- there_is_another_people.gather()
20
- target_people.gather()
21
- end
22
- ---
23
- id: there are any people
24
- generic object: DAList
25
- question: Are there any "${ x.object_name() }" people?
26
- yesno: x.there_are_any
27
- ---
28
- id: is there another person
29
- generic object: DAList
30
- question: Are there more "${ x.object_name() }" people?
31
- yesno: x.there_is_another
32
- ---
33
- id: target number
34
- question: How many "target_number" people are there?
35
- fields:
36
- - Number of other people: target_people.target_number
37
- input type: number
38
- ---
39
- id: person name
40
- generic object: DAList
41
- question: Name of the "${ x[ i ].object_name() }" person
42
- fields:
43
- - Name: x[i].name.first
44
- ---
45
- id: end
46
- event: end
47
- question: The end!
48
- subquestion: |
49
- `there_are_any_people` people: ${ len(there_are_any_people.complete_elements()) }
50
-
51
- % for person in there_are_any_people:
52
- * ${ person }
53
- % endfor
54
-
55
- `there_is_another_people` people: ${ len(there_is_another_people.complete_elements()) }
56
-
57
- % for person in there_is_another_people:
58
- * ${ person }
59
- % endfor
60
-
61
- `target_people` people: ${ len(target_people.complete_elements()) }
62
-
63
- % for person in target_people:
64
- * ${ person }
65
- % endfor
66
- ---
@@ -1,9 +0,0 @@
1
- ---
2
- mandatory: True
3
- code: |
4
- signature
5
- missing_var
6
- ---
7
- question: Signature
8
- signature: signature
9
- ---
@@ -1,83 +0,0 @@
1
- ---
2
- metadata:
3
- title: Test random input
4
- comment: Test trying to get through an interview by giving randomly generated answers
5
- ---
6
- modules:
7
- - docassemble.ALToolbox.ThreePartsDate
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
- ############# Interview order #############
16
- mandatory: True
17
- code: |
18
- text
19
- choices
20
- signature
21
- custom_data_types
22
- end
23
- ---
24
- id: text
25
- question: Text test
26
- fields:
27
- - Random paragraph: textarea
28
- input type: area
29
- - Random text: text
30
- - Random number: number
31
- datatype: number
32
- - Random date: date
33
- datatype: date
34
- - Random currency: currency
35
- datatype: currency
36
- - Random email: email
37
- datatype: email
38
- - Random password: password
39
- datatype: password
40
- ---
41
- id: Choices
42
- question: Choices test
43
- fields:
44
- - Dropdown choices: select
45
- choices:
46
- - Dropdown 1
47
- - Dropdown 2
48
- - Dropdown 3
49
- - Checkbox choices: checkbox
50
- datatype: checkboxes
51
- choices:
52
- - Checkbox 1
53
- - Checkbox 2
54
- - Checkbox 3
55
- - Radio button: radio
56
- datatype: radio
57
- choices:
58
- - Radio 1
59
- - Radio 2
60
- - Radio 3
61
- continue button field: choices
62
- ---
63
- # Cannot handle this right now. It has a type of "hidden",
64
- # like other special da fields that ALKiln shouldn't interact
65
- # with.
66
- id: custom_data_types
67
- question: |
68
- `CustomDataType`s
69
- fields:
70
- - ThreePartsDate: three_parts_date
71
- datatype: ThreePartsDate
72
- - Birth date: birth_date
73
- datatype: BirthDate
74
- continue button field: custom_data_types
75
- ---
76
- id: signature
77
- question: Signature
78
- signature: signature
79
- ---
80
- id: end
81
- event: end
82
- question: The end
83
- ---
@@ -1,32 +0,0 @@
1
- ---
2
- mandatory: True
3
- question: |
4
- Enter the first secret
5
- fields:
6
- - 1st: first_text_entry
7
- ---
8
- mandatory: True
9
- question: |
10
- The first secret you entered was ${ first_text_entry }
11
- continue button field: continue_after_first
12
- ---
13
- mandatory: True
14
- question: |
15
- Enter the second secret
16
- fields:
17
- - 2nd: second_text_entry
18
- ---
19
- mandatory: True
20
- question: |
21
- The second secret you entered was ${ second_text_entry }
22
- continue button field: continue_after_second
23
- ---
24
- mandatory: True
25
- question: |
26
- Enter the thrid secret
27
- fields:
28
- - 3rd: third_text_entry
29
- ---
30
- mandatory: True
31
- question: |
32
- The third secret you entered was ${ third_text_entry }
@@ -1,25 +0,0 @@
1
- metadata:
2
- title: Signature screen test
3
- short title: Siganture
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
- signature
15
- end
16
- ---
17
- id: signature
18
- question: |
19
- Signature
20
- signature: signature
21
- ---
22
- id: the end
23
- event: end
24
- question: |
25
- Congratulations! Tests have passed!
@@ -1,43 +0,0 @@
1
- modules:
2
- - docassemble.ALToolbox.misc
3
- ---
4
- mandatory: True
5
- event: main_screen
6
- id: main screen
7
- question: |
8
- Tabbed Template Sceen
9
- subquestion: |
10
- ${ tabbed_templates_html("Tests",
11
- template_a,
12
- template_b,
13
- template_c
14
- )}
15
- ---
16
- template: template_a
17
- subject: |
18
- first template
19
- content: |
20
- This first, primary template has the unique word Mechanics that should be found.
21
- ---
22
- template: template_b
23
- subject: |
24
- second template
25
- content: |
26
- This second, surplus template has the unique word villify that should be found.
27
- ---
28
- template: template_c
29
- subject: |
30
- third template
31
- content: |
32
- This third, additional template has the unique word museum that should be found.
33
-
34
- It also has a button that brings us to an event.
35
-
36
- ${ action_button_html(url_ask([{'recompute': ['special_event']}]),
37
- label="Special event", id_tag="special_event")}
38
- ---
39
- event: special_event
40
- question: |
41
- Special event
42
- subquestion: |
43
- The unique word on this screen is Portishead!
@@ -1,25 +0,0 @@
1
- ---
2
- objects:
3
- - person1: Individual
4
- - person2: Individual
5
- ---
6
- mandatory: True
7
- code: |
8
- person1.name.first
9
- person2.name.first
10
- end
11
- ---
12
- id: name
13
- generic object: Individual
14
- question: Name of person ${ x.special_id }
15
- fields:
16
- - Name: x.name.first
17
- ---
18
- id: end
19
- event: end
20
- question: The end of trigger tests!
21
- ---
22
- code: |
23
- person1.special_id = 1
24
- person2.special_id = 2
25
- ---
@@ -1,33 +0,0 @@
1
- metadata:
2
- title: Test testing url args
3
- short title: Test url args
4
- comment: Test the automated integrated testing library for AssemblyLine with url functionality
5
- ---
6
- # Necessary to tell us what the trigger var is on each page.
7
- # In future, this should not be needed here.
8
- default screen parts:
9
- post: |
10
- <div data-variable="${ encode_name(str( user_info().variable )) }" id="trigger" aria-hidden="true" style="display: none;"></div>
11
- ---
12
- mandatory: True
13
- id: interview order
14
- code: |
15
- url_args_test
16
- end
17
- ---
18
- id: url_args_test
19
- question: Show url args
20
- subquestion: |
21
- Trying:
22
-
23
- &from=theinternets&random=zoo
24
-
25
- origin2: ${ url_args.get( 'from', 'unknown' ) }
26
-
27
- random2: ${ url_args.get( 'random', 'unknown' ) }
28
- continue button field: url_args_test
29
- ---
30
- id: end
31
- event: end
32
- question: The end!
33
- ---
@@ -1,4 +0,0 @@
1
- # Sources directory
2
-
3
- This directory is used to store word translation files,
4
- machine learning training files, and other source files.
@@ -1,43 +0,0 @@
1
- @assembly_line
2
- Feature: Assembly Line package-specific Steps
3
-
4
- # In tag names, 'al' is for 'assembly line'
5
-
6
- # Note: the first test for this suite is the first test in this file and we're having timeout issues, so we're trying to give the server longer to load.
7
-
8
- @fast @al1
9
- Scenario: I have two name parts
10
- Given the max secs for each step is 120
11
-   Given I start the interview at "AL_tests"
12
- And I set the name of "users[0]" to "Uli User"
13
- And I tap to continue
14
- And I set the address of "users[0]" to "120 Tremont Street, Unit 2, Boston, MA 02108"
15
- And I tap to continue
16
- And I set the name of "users[1]" to "Uli2 User2"
17
- And I set the var "users[i].proxy_var" to "Mixed proxy var step test"
18
- And I tap to continue
19
- Then the question id should be "end"
20
-
21
- @fast @al2
22
- Scenario: I have three name parts
23
-   Given I start the interview at "AL_tests"
24
- And I set the name of "users[0]" to "Uli Udo User"
25
- And I tap to continue
26
- And I set the address of "users[0]" to "120 Tremont Street, Unit 2, Boston, MA 02108"
27
- And I tap to continue
28
- And I set the name of "users[1]" to "Uli2 User2"
29
- And I set the var "users[i].proxy_var" to "Mixed proxy var step test"
30
- And I tap to continue
31
- Then the question id should be "end"
32
-
33
- @fast @al3
34
- Scenario: I have four name parts
35
-   Given I start the interview at "AL_tests"
36
- And I set the name of "users[0]" to "Uli Udo User Sr"
37
- And I tap to continue
38
- And I set the address of "users[0]" to "120 Tremont Street, Unit 2, Boston, MA 02108"
39
- And I tap to continue
40
- And I set the name of "users[1]" to "Uli2 User2"
41
- And I set the var "users[i].proxy_var" to "Mixed proxy var step test"
42
- And I tap to continue
43
- Then the question id should be "end"
@@ -1,62 +0,0 @@
1
- @establishing
2
- Feature: Establishing steps
3
-
4
- Steps that establish things about the state of the test
5
- # In tag names, 'e' is for 'establishing'
6
-
7
- @slow @e1 @wait
8
- Scenario: I am able to set a custom wait time that allows steps to run longer than the half minute default
9
- Given I start the interview at "all_tests"
10
- And the max seconds for each step in this scenario is 40
11
- And I wait 35 seconds
12
-
13
- @slow @e2 @wait
14
- Scenario: I am able to set a custom wait time before an interview has been loaded
15
- Given the max seconds for each step in this scenario is 40
16
- And I start the interview at "all_tests"
17
- And I wait 35 seconds
18
-
19
- @fast @e3 @urlargs
20
- Scenario: Interview name includes url args
21
-   Given I start the interview at "url_args.yml&from=theinternets&random=zoo"
22
-   Then I should see the phrase "zoo"
23
-
24
- @slow @e4 @wait_first
25
- Scenario: I can wait as a first step in a test
26
- Given I wait 1 second
27
-
28
- @slow @e5 @wait_first
29
- Scenario: Interview name includes url args with a wait
30
- Given I wait 1 second
31
- Then I start the interview at "url_args.yml&from=theinternets&random=zoo"
32
- Then I should see the phrase "zoo"
33
-
34
- @fast @e6 @signin
35
- Scenario: I sign in
36
-   Given I sign in with the email "USER1_EMAIL" and the password "USER1_PASSWORD"
37
- And I start the interview at "all_tests"
38
-
39
- @fast @e7 @arbitraryurl
40
- Scenario: I want to go to a full arbitrary url
41
- Given the max seconds for each step in this scenario is 5
42
- And the Scenario report should include:
43
- """
44
- Trying to load the interview
45
- """
46
-   Given I start the interview at "https://apps-test.suffolklitlab.org/start/demo/questions"
47
-   Then I should see the phrase "What language do you speak?"
48
-
49
- # WARNING: This Scenario may fail if the file moves or changes too much
50
- @fast @failing @e8 @rfe8 @arbitraryurl
51
- Scenario: Fail with no interview at arbitrary url
52
- Given the final Scenario status should be "failed"
53
- And the Scenario report should include:
54
- """
55
- Trying to load the interview
56
- """
57
- And the Scenario report should include:
58
- """
59
- ALKiln could not find any interview question page
60
- """
61
- And the max seconds for each step in this scenario is 5
62
- Then I start the interview at "https://apps-test.suffolklitlab.org/list"
@@ -1,11 +0,0 @@
1
- @example_feature_tag
2
- Feature: An example test
3
-
4
- The tests in this file should cover
5
- - [x] Provide a template people can use to make their own tests.
6
- - [ ] Direct people to more documentation.
7
- - [ ] Find the ultimate question to life, the universe, and everything.
8
-
9
- @example_scenario_tag
10
- Scenario: Server finishes reloading
11
- Given I start the interview at "test"
@@ -1,9 +0,0 @@
1
- @filepaths
2
- Feature: Filepaths lengths
3
-
4
- # In tag names, 'fp' is for 'filepaths'
5
-
6
- @fp1
7
- Scenario: Longest filepath should be under 184 characters with scenario description cut off at 70 and question id cut off at 20
8
- Given I start the interview at "test_longest_filepath.yml"
9
- And I answer randomly for at most 3 pages