@suffolklitlab/alkiln 5.16.1 β†’ 5.17.0-fix-da-1-10-n

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.
@@ -31,9 +31,6 @@ jobs:
31
31
  && github.event.pull_request.head.repo.fork
32
32
  )
33
33
  runs-on: ubuntu-latest
34
- strategy:
35
- matrix:
36
- node-version: [24.x]
37
34
 
38
35
  steps:
39
36
  # Place the root directory in this branch to access relative paths to
@@ -19,6 +19,8 @@ on:
19
19
  description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
20
20
  required: false
21
21
  default: false
22
+ schedule:
23
+ - cron: "0 1 * * SUN"
22
24
 
23
25
  jobs:
24
26
 
@@ -36,9 +38,6 @@ jobs:
36
38
  && github.event.pull_request.head.repo.fork
37
39
  )
38
40
  runs-on: ubuntu-latest
39
- strategy:
40
- matrix:
41
- node-version: [24.x]
42
41
 
43
42
  #### Developer note: You can probably leave out these specific
44
43
  #### environment variables. You may not even need the `env`
@@ -160,7 +159,7 @@ jobs:
160
159
  #### Developer note: You can probably leave the rest out
161
160
  #### To learn more, see https://assemblyline.suffolklitlab.org/docs/alkiln/writing/#optional-inputs
162
161
  ALKILN_TAG_EXPRESSION: "${{ env.ALKILN_TAG_EXPRESSION }}"
163
- # ALKILN_VERSION:
162
+ ALKILN_VERSION: "da_version"
164
163
 
165
164
  #### Developer note: Example of making an issue when tests fail
166
165
  #### that includes the text of the failure output file
@@ -0,0 +1,188 @@
1
+ name: GitHub server installation
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+ inputs:
8
+ tags:
9
+ required: False
10
+ description: 'Optional. Use a "tag expression" specify which tagged tests to run (https://cucumber.io/docs/cucumber/api/#tag-expressions)'
11
+ show_docker_output:
12
+ required: false
13
+ default: false
14
+ type: boolean
15
+ description: 'Show the docker logs while building the GitHub server container. It will also save the docker log artifact. This might show sensitive config information.'
16
+ #### Developer note: You can probably leave this out
17
+ enable_tmate:
18
+ type: boolean
19
+ description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
20
+ required: false
21
+ default: false
22
+ schedule:
23
+ - cron: "0 1 * * SUN"
24
+
25
+ jobs:
26
+
27
+ github-server-tests:
28
+ #### Developer note: If you have both `push` and `pull_request` in the
29
+ #### `on` section (above), this avoids running double tests when someone
30
+ #### on the team makes a pull request
31
+ # 1: Trigger job on push or dispatch from this repository
32
+ # 2: Trigger job on pull request from a fork
33
+ if: (
34
+ github.event_name != 'pull_request'
35
+ && ! github.event.pull_request.head.repo.fork
36
+ ) || (
37
+ github.event_name == 'pull_request'
38
+ && github.event.pull_request.head.repo.fork
39
+ )
40
+ runs-on: ubuntu-latest
41
+
42
+ #### Developer note: You can probably leave out these specific
43
+ #### environment variables. You may not even need the `env`
44
+ #### keyword or values at all. See
45
+ #### https://assemblyline.suffolklitlab.org/docs/alkiln/writing#env-vars
46
+ env:
47
+ NORMAL_USER_EMAIL: alkiln@example.com
48
+ NORMAL_USER_PASSWORD: User123^
49
+ WRONG_EMAIL: wrong_email@example.com
50
+ WRONG_PASSWORD: wrong_password
51
+ INVALID_API_KEY: invalidAPIkey
52
+ EMPTY_STRING: ""
53
+ SECRET_VAR1: secret-var1-value
54
+ SECRET_VAR2: secret-var2-value
55
+ SECRET_FOR_MISSING_FIELD: secret for missing field
56
+
57
+ steps:
58
+ # Place the root directory in this branch to access
59
+ # relative paths to action files
60
+ - uses: actions/checkout@v4
61
+
62
+ - name: "ALKiln - Start the isolated temporary docassemble server on GitHub"
63
+ id: github_server
64
+ #### Developer note: you'll need to replace `uses: ./action_for_github_server`
65
+ #### with the path to ALKiln’s repository name and branch name. For example,
66
+ #### for version 5, use the branch name `v5`:
67
+ #### `uses: suffolkLITLab/ALKiln/action_for_github_server@v5`
68
+ uses: ./action_for_github_server
69
+ with:
70
+ #### Developer note: Set this to "true" to show docker logs and
71
+ #### allow ALKiln to create the docker logs output artifact.
72
+ SHOW_DOCKER_OUTPUT: "${{ github.event.inputs.show_docker_output }}"
73
+ #### Developer note: You can probably leave this out
74
+ CONFIG_CONTENTS: "${{ secrets.CONFIG_CONTENTS }}"
75
+ DOCASSEMBLE_IMAGE: "ghcr.io/suffolklitlab/docassemble:latest"
76
+ - run: echo "ALKiln finished starting the isolated GitHub docassemble server"
77
+ shell: bash
78
+
79
+ #### Developer note: You can probably leave this out
80
+ - name: "Add a low-level user and their API key (in an env var)"
81
+ env:
82
+ SERVER_URL: "${{ steps.github_server.outputs.SERVER_URL }}"
83
+ KEY: ${{ steps.github_server.outputs.DOCASSEMBLE_DEVELOPER_API_KEY }}
84
+ run: |
85
+ # Create user and their API key
86
+
87
+ # Install json processor
88
+ sudo apt-get install jq
89
+
90
+ # https://docassemble.org/docs/api.html#user_new
91
+ user_data=$(curl -X POST \
92
+ ${{ env.SERVER_URL }}/api/user/new \
93
+ -H 'Content-Type: application/json' \
94
+ -d '{
95
+ "key": "${{ env.KEY }}",
96
+ "username": "${{ env.NORMAL_USER_EMAIL }}",
97
+ "password": "${{ env.NORMAL_USER_PASSWORD }}"
98
+ }')
99
+ echo "User data:"
100
+ echo "$user_data"
101
+
102
+ user_id=$(echo "$user_data" | jq '.user_id' -r)
103
+
104
+ # https://docassemble.org/docs/api.html#api_user_user_id_api_post
105
+ new_key_with_quotes=$(curl -X POST \
106
+ ${{ env.SERVER_URL }}/api/user/"$user_id"/api \
107
+ -H 'Content-Type: application/json' \
108
+ -d '{
109
+ "key": "${{ env.KEY }}",
110
+ "name": "alkiln_key",
111
+ "method": "none"
112
+ }')
113
+ echo "new key (watch out, this contains actual quotation marks): $new_key_with_quotes"
114
+ no_end_quote="${new_key_with_quotes%\"}"
115
+ unquoted="${no_end_quote#\"}"
116
+ echo "unquoted: $unquoted"
117
+
118
+ echo "NORMAL_USER_API_KEY=$unquoted" >> "$GITHUB_ENV"
119
+
120
+ #### Developer note: You can probably leave this out
121
+ ## Optional debugging to explore things like docker issues
122
+ #- name: Docker debug tmate session
123
+ # #if: ${{ failure() && github.event.inputs.enable_tmate == 'true' }}
124
+ # uses: mxschmitt/action-tmate@v3
125
+
126
+ #### Developer note: You can probably leave this out
127
+ - name: "Create other env vars for our own tests from server output"
128
+ run: |
129
+ echo "USER1_EMAIL=${{ steps.github_server.outputs.DA_ADMIN_EMAIL }}" >> $GITHUB_ENV
130
+ echo "USER1_PASSWORD=${{ steps.github_server.outputs.DA_ADMIN_PASSWORD }}" >> $GITHUB_ENV
131
+
132
+ #### Developer note:
133
+ #### Example of working with the docker container after it's been
134
+ #### started. For example, you can make more users with different
135
+ #### permissions and passwords
136
+ #- name: Work with docker
137
+ # run: |
138
+ # container_name=$(docker ps --format '{{.Names}}' | head -n 1)
139
+ # echo "container_name is $container_name"
140
+
141
+ - name: "Run ALKiln tests"
142
+ if: ${{ success() }}
143
+ id: alkiln
144
+ #### Developer note: you'll need to replace `uses: ./`
145
+ #### with the path to ALKiln’s repository name and branch name. For example,
146
+ #### for version 5, use the branch name `v5`: `uses: suffolkLITLab/ALKiln@v5`
147
+ uses: ./
148
+ #### Developer note: You can probably leave out this `env` section
149
+ env:
150
+ # Internal: docassemble changes sometimes break @a11y tests. That is
151
+ # a da problem, not ours. We will trigger these tests manually when we
152
+ # want to check up on this.
153
+ ALKILN_TAG_EXPRESSION: "${{ (github.event.inputs.tags && format('{0}', github.event.inputs.tags)) || '(not @error) and (not @temp_error)' }}"
154
+ with:
155
+ #### Developer note: Required inputs. See
156
+ #### https://assemblyline.suffolklitlab.org/docs/alkiln/writing/#sandbox-inputs
157
+ SERVER_URL: "${{ steps.github_server.outputs.SERVER_URL }}"
158
+ DOCASSEMBLE_DEVELOPER_API_KEY: "${{ steps.github_server.outputs.DOCASSEMBLE_DEVELOPER_API_KEY }}"
159
+ INSTALL_METHOD: "server"
160
+ #### Developer note: You can probably leave the rest out
161
+ #### To learn more, see https://assemblyline.suffolklitlab.org/docs/alkiln/writing/#optional-inputs
162
+ ALKILN_TAG_EXPRESSION: "${{ env.ALKILN_TAG_EXPRESSION }}"
163
+ ALKILN_VERSION: "da_version"
164
+
165
+ #### Developer note: Example of making an issue when tests fail
166
+ #### that includes the text of the failure output file
167
+ #### See https://cli.github.com/manual/gh_issue_create for more details
168
+ - shell: bash
169
+ if: ${{ failure() }}
170
+ env:
171
+ GH_TOKEN: ${{ github.token }}
172
+ PATH_TO_REPORT_LOG_FILE: "${{ steps.alkiln.outputs.PATH_TO_REPORT_LOG_FILE }}"
173
+ PATH_TO_UNEXPECTED_RESULTS_FILE: "${{ steps.alkiln.outputs.PATH_TO_UNEXPECTED_RESULTS_FILE }}"
174
+ PATH_TO_DEBUG_LOG_FILE: "${{ steps.alkiln.outputs.PATH_TO_DEBUG_LOG_FILE }}"
175
+ run: |
176
+ # Make an issue with file contents or 'no file' message as part of the body
177
+
178
+ if [ -f "${{ env.PATH_TO_UNEXPECTED_RESULTS_FILE }}" ]; then
179
+ UNEXPECTED_2=$(cat "${{ env.PATH_TO_UNEXPECTED_RESULTS_FILE }}")
180
+ else
181
+ UNEXPECTED_2="unexpected_results.txt does not exist. Something other than the interview tests may have failed."
182
+ fi
183
+
184
+ gh issue create --body "An ALKiln test run failed. See the action at ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}.
185
+
186
+ ### Results:
187
+
188
+ $UNEXPECTED_2" --repo "$GITHUB_REPOSITORY" --label "testing" --title "ALKiln tests failed"
@@ -27,9 +27,6 @@ jobs:
27
27
  && github.event.pull_request.head.repo.fork
28
28
  )
29
29
  runs-on: ubuntu-latest
30
- strategy:
31
- matrix:
32
- node-version: [24.x]
33
30
 
34
31
  env:
35
32
  #### Developer note: We recommend turning these into environment
@@ -83,4 +80,4 @@ jobs:
83
80
  # want to check up on this.
84
81
  ALKILN_TAG_EXPRESSION: "${{ env.ALKILN_TAG_EXPRESSION }}"
85
82
  #### Developer note: You can probably leave this out
86
- # ALKILN_VERSION:
83
+ ALKILN_VERSION: "da_version"
package/CHANGELOG.md CHANGED
@@ -43,7 +43,42 @@ Format:
43
43
  -
44
44
  -->
45
45
 
46
- <!-- ## [Unreleased] -->
46
+ ## [Unreleased]
47
+
48
+ ### Changed
49
+
50
+ - Updated to work with docassemble v1.10.n while being backwards compatible. See [issue #1117](https://github.com/SuffolkLITLab/ALKiln/issues/1117)
51
+ - Unable to find some continue buttons
52
+ - Single-line fields like `yesno: likes_good_things`
53
+ - Buttons created with `buttons:`
54
+ - Continue buttons on signature pages
55
+ - Unable to sign with a name
56
+ - Unable to upload files
57
+ - Created infinite loop with 'Restart' button
58
+ - Changed the internal behavior of the experimental Step "I can't continue" from testing for errors after the previous Step (whatever it happened to be) to attempting to continue. Failure to continue causes success of the Step.
59
+
60
+ ### Internal
61
+
62
+ - Added a workflow to test using an Assembly Line docker image
63
+ - Test using a cron job to catch failures more regularly
64
+ - Remove unsupported Step "Then I arrive at the next page" and moved responsibility to Steps that imply they navigate
65
+ - Fixed typo in fixture
66
+
67
+ ## [5.17.0] - 2026-09-10
68
+
69
+ ### Changed
70
+
71
+ - GitHub action release: Restored our GitHub action's default for ALKiln version to the latest version 5 again. Released first on GitHub actions. NPM release will come in time, but npm has no impact on GitHub action releases.
72
+
73
+ ### Fixed
74
+
75
+ - Fixed GitHub+You action outdated docassemble cli version causing Scenario timeouts.
76
+ - Part 1 of detecting custom AL error screen: Story Table now catches `al_custom_error_screen` error. Previously, Story Tables that ran into this screen would get stuck on the AL error page infinitely. Next steps: Linear Steps may need additional development. Currently linear Steps succeed even when they run into AL's error page. That bears additional discussion. See [issue #656](https://github.com/SuffolkLITLab/ALKiln/issues/656) and [PR #1116](https://github.com/SuffolkLITLab/ALKiln/pull/1116).
77
+
78
+ ### Internal
79
+
80
+ - Simplify workflow files by removing `node` env setup (leaving it to the actions)
81
+ - Updated both of our actions' dependencies (the checkout, setup-node, setup-python, upload-artifacts, download-artifacts actions). Closes [#1095](https://github.com/suffolkLITLab/aLKiln/issues/1095). Once again, action related.
47
82
 
48
83
  ## [5.16.1] - 2026-06-01
49
84
 
package/action.yml CHANGED
@@ -14,7 +14,7 @@ inputs:
14
14
  ALKILN_VERSION:
15
15
  description: 'Version of ALKiln to get from npm.'
16
16
  required: false
17
- default: '5.15.4'
17
+ default: '^5.0.0'
18
18
  MAX_SECONDS_FOR_SETUP:
19
19
  description: "Amount of time to give the Project to upload your package's GitHub code."
20
20
  required: false
@@ -32,7 +32,7 @@ inputs:
32
32
  DOCASSEMBLECLI_VERSION:
33
33
  description: "The version of docassemblecli to install."
34
34
  required: false
35
- default: "0.0.17"
35
+ default: "0.0.25"
36
36
  ALKILN_MAX_RANDOM_TESTS_PER_SCENARIO:
37
37
  description: "The maximum number of tests ALKiln will generate for every Scenario that can generate tests."
38
38
  required: false
@@ -59,7 +59,7 @@ runs:
59
59
  using: "composite"
60
60
  steps:
61
61
  # Place the root directory in this branch
62
- - uses: actions/checkout@v4
62
+ - uses: actions/checkout@v7
63
63
 
64
64
  # Set environment variables
65
65
  - name: "πŸ’‘ ALK0023 INFO: Set environment variables"
@@ -111,7 +111,7 @@ runs:
111
111
 
112
112
  # Install ALKiln during GitHub workflow
113
113
  - name: "πŸ’‘ ALK0025 INFO: Set up node"
114
- uses: actions/setup-node@v5
114
+ uses: actions/setup-node@v6
115
115
  with:
116
116
  node-version: "24.x"
117
117
  package-manager-cache: false
@@ -155,7 +155,7 @@ runs:
155
155
 
156
156
  # Install package on playground
157
157
  # Don't rely on the environment's version of python
158
- - uses: actions/setup-python@v5
158
+ - uses: actions/setup-python@v6
159
159
  if: ${{ inputs.INSTALL_METHOD == 'playground' }}
160
160
  with:
161
161
  python-version: '3.10'
@@ -213,7 +213,7 @@ runs:
213
213
  # Upload artifacts that subscribers can download on the Actions summary page
214
214
  - name: "πŸ’‘ ALK0033 INFO: Upload artifacts folder"
215
215
  if: ${{ always() }}
216
- uses: actions/upload-artifact@v4
216
+ uses: actions/upload-artifact@v7
217
217
  with:
218
218
  name: ${{ env.ARTIFACT_FOLDER }}
219
219
  path: ./alkiln-*
@@ -221,7 +221,7 @@ runs:
221
221
  # Download artifacts folder internally to create action output
222
222
  - name: "πŸ’‘ ALK0183 INFO: Get uploaded artifacts folder"
223
223
  if: ${{ always() }}
224
- uses: actions/download-artifact@v4
224
+ uses: actions/download-artifact@v8
225
225
  with:
226
226
  name: ${{ env.ARTIFACT_FOLDER }}
227
227
 
@@ -49,7 +49,7 @@ runs:
49
49
  using: "composite"
50
50
  steps:
51
51
  # Place the root directory in this branch
52
- - uses: actions/checkout@v4
52
+ - uses: actions/checkout@v7
53
53
 
54
54
  - shell: bash
55
55
  run: |
@@ -253,7 +253,7 @@ runs:
253
253
  done
254
254
 
255
255
  # Don't rely on the environment's version of python
256
- - uses: actions/setup-python@v5
256
+ - uses: actions/setup-python@v6
257
257
  with:
258
258
  python-version: '3.10'
259
259
  # No output
@@ -285,7 +285,7 @@ runs:
285
285
  echo "$(docker output docassemble_container)" >> "${{ env.DEBUG_LOGS_PATH }}"
286
286
  - name: "πŸ’‘ ALK0020 INFO: Upload artifacts folder"
287
287
  if: ${{ always() && env.OUTPUT_DOCKER == 'true' }}
288
- uses: actions/upload-artifact@v4
288
+ uses: actions/upload-artifact@v7
289
289
  with:
290
290
  name: ${{ env.GITHUB_SERVER_ARTIFACT_NAME }}
291
291
  path: ${{ env.DEBUG_LOGS_PATH }}
@@ -377,6 +377,9 @@ da_i.get_interview = async function ({ interview = {}, api_keys = [], options =
377
377
  log.debug({ code: `ALK0193`, context, },
378
378
  `Status ${ response.status }. Got ${ response.data.items[0].session }.`
379
379
  );
380
+ // Discuss: Do we need to handle pagination? Think most recent
381
+ // sessions are listed first, so perhaps not a problem.
382
+ // https://docassemble.org/docs/api.html#user_interviews
380
383
  return response.data.items[0];
381
384
  } else {
382
385
  log.debug({ code: `ALK0194`, context, },