@suffolklitlab/alkiln 4.10.0 → 4.10.1-pre-cli

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 (131) hide show
  1. package/.github/workflows/test_tests.yml +6 -4
  2. package/CHANGELOG.md +15 -1
  3. package/MANIFEST.in +1 -0
  4. package/_alkiln-misc_artifacts/unit_tests_logs-2022-12-29 at 02h22m01s457ms UTC.txt +20 -0
  5. package/action.yml +7 -34
  6. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Base64 encoded corner cases are decoded correctly-2022-12-29 at 02h12m20s302ms UTC/report.txt +23 -0
  7. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail to find var while keeping value secret-2022-12-29 at 02h14m21s556ms UTC/report.txt +13 -0
  8. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with 2 wrong signin secret names-2022-12-29 at 02h14m19s733ms UTC/report.txt +12 -0
  9. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with a missing phrase-2022-12-29 at 02h13m42s632ms UTC/report.txt +10 -0
  10. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with cannot find missing document-2022-12-29 at 02h14m13s528ms UTC/report.txt +10 -0
  11. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with could not find files-2022-12-29 at 02h14m20s192ms UTC/report.txt +13 -0
  12. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with error page from random input-2022-12-29 at 02h13m27s716ms UTC/random_answers_screenshots-2022-12-29 at 02h13m28s915ms UTC/random-1672280009244.jpg +0 -0
  13. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with error page from random input-2022-12-29 at 02h13m27s716ms UTC/report.txt +12 -0
  14. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with incorrectly present phrase-2022-12-29 at 02h13m43s918ms UTC/report.txt +10 -0
  15. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with link text not visible-2022-12-29 at 02h13m52s649ms UTC/report.txt +10 -0
  16. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with link unexpectedly opens in a new window-2022-12-29 at 02h14m06s008ms UTC/report.txt +56 -0
  17. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with link unexpectedly opens in same window-2022-12-29 at 02h14m01s128ms UTC/report.txt +56 -0
  18. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with link with given text does not lead to correct url-2022-12-29 at 02h13m55s993ms UTC/report.txt +56 -0
  19. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with missing element id-2022-12-29 at 02h13m45s207ms UTC/report.txt +10 -0
  20. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with missing error message-2022-12-29 at 02h13m48s710ms UTC/report.txt +10 -0
  21. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with missing link with url-2022-12-29 at 02h13m54s329ms UTC/report.txt +10 -0
  22. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with missing term with the given text-2022-12-29 at 02h14m12s071ms UTC/report.txt +10 -0
  23. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with no interview at arbitrary url-2022-12-29 at 02h11m01s999ms UTC/report.txt +10 -0
  24. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with system error after Step using wrong file name as trigger-2022-12-29 at 02h14m15s021ms UTC/report.txt +10 -0
  25. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with unexpectedly able to continue-2022-12-29 at 02h13m46s819ms UTC/report.txt +11 -0
  26. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with var not on page-2022-12-29 at 02h14m10s627ms UTC/report.txt +12 -0
  27. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with was unexpectedly not able to continue for invalid field input message-2022-12-29 at 02h13m50s143ms UTC/report.txt +13 -0
  28. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with wrong email secret name-2022-12-29 at 02h14m18s763ms UTC/report.txt +10 -0
  29. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fail with wrong password secret name-2022-12-29 at 02h14m19s291ms UTC/report.txt +10 -0
  30. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fails as it doesn't try to 'continue' with a restart button-2022-12-29 at 02h12m22s559ms UTC/report.txt +19 -0
  31. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fails when table has no header row and rows have only one column-2022-12-29 at 02h14m50s261ms UTC/report.txt +10 -0
  32. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Fields are listed out of order-2022-12-29 at 02h14m55s580ms UTC/report.txt +103 -0
  33. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I am able to set a custom wait time before an interview has been loaded-2022-12-29 at 02h10m12s300ms UTC/report.txt +6 -0
  34. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I am able to set a custom wait time that allows steps to run longer than the half minute default-2022-12-29 at 02h09m35s267ms UTC/report.txt +6 -0
  35. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m20s448ms UTC/random-1672280001009.jpg +0 -0
  36. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m20s448ms UTC/random-1672280001551.jpg +0 -0
  37. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m20s448ms UTC/random-1672280002244.jpg +0 -0
  38. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m20s448ms UTC/random-1672280003073.jpg +0 -0
  39. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m20s448ms UTC/random-1672280003428.jpg +0 -0
  40. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m24s217ms UTC/random-1672280004868.jpg +0 -0
  41. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m24s217ms UTC/random-1672280005425.jpg +0 -0
  42. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m24s217ms UTC/random-1672280006159.jpg +0 -0
  43. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m24s217ms UTC/random-1672280007028.jpg +0 -0
  44. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/random_answers_screenshots-2022-12-29 at 02h13m24s217ms UTC/random-1672280007371.jpg +0 -0
  45. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I answer randomly till the end twice-2022-12-29 at 02h13m19s494ms UTC/report.txt +21 -0
  46. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I can include .yml in the filename-2022-12-29 at 02h12m39s613ms UTC/report.txt +6 -0
  47. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I can match JSON page var to str-2022-12-29 at 02h12m57s106ms UTC/json_for-showifs-2022-12-29 at 02h12m59s731ms UTC.json +154 -0
  48. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I can match JSON page var to str-2022-12-29 at 02h12m57s106ms UTC/report.txt +33 -0
  49. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I can wait as a first step in a test-2022-12-29 at 02h10m50s651ms UTC/report.txt +5 -0
  50. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I can't match JSON page var to str-2022-12-29 at 02h14m16s014ms UTC/json_for-showifs-2022-12-29 at 02h14m18s373ms UTC.json +154 -0
  51. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I can't match JSON page var to str-2022-12-29 at 02h14m16s014ms UTC/report.txt +37 -0
  52. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I check navigation-2022-12-29 at 02h12m41s028ms UTC/report.txt +54 -0
  53. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I check the pages for accessibility-2022-12-29 at 02h13m02s923ms UTC/report.txt +58 -0
  54. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input for 1 page-2022-12-29 at 02h13m17s219ms UTC/random_answers_screenshots-2022-12-29 at 02h13m18s174ms UTC/random-1672279998764.jpg +0 -0
  55. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input for 1 page-2022-12-29 at 02h13m17s219ms UTC/report.txt +7 -0
  56. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input till the end-2022-12-29 at 02h13m12s258ms UTC/random_answers_screenshots-2022-12-29 at 02h13m13s676ms UTC/random-1672279994312.jpg +0 -0
  57. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input till the end-2022-12-29 at 02h13m12s258ms UTC/random_answers_screenshots-2022-12-29 at 02h13m13s676ms UTC/random-1672279994892.jpg +0 -0
  58. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input till the end-2022-12-29 at 02h13m12s258ms UTC/random_answers_screenshots-2022-12-29 at 02h13m13s676ms UTC/random-1672279995594.jpg +0 -0
  59. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input till the end-2022-12-29 at 02h13m12s258ms UTC/random_answers_screenshots-2022-12-29 at 02h13m13s676ms UTC/random-1672279996542.jpg +0 -0
  60. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input till the end-2022-12-29 at 02h13m12s258ms UTC/random_answers_screenshots-2022-12-29 at 02h13m13s676ms UTC/random-1672279996887.jpg +0 -0
  61. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I fill in random input till the end-2022-12-29 at 02h13m12s258ms UTC/report.txt +13 -0
  62. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I get the page's JSON-2022-12-29 at 02h13m00s023ms UTC/report.txt +71 -0
  63. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I have four name parts-2022-12-29 at 02h09m31s566ms UTC/report.txt +10 -0
  64. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I have three name parts-2022-12-29 at 02h09m27s653ms UTC/report.txt +10 -0
  65. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I have two name parts-2022-12-29 at 02h09m21s065ms UTC/report.txt +10 -0
  66. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I observe things on a single page when I arrive-2022-12-29 at 02h12m35s237ms UTC/report.txt +7 -0
  67. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I see user errors_-2022-12-29 at 02h12m37s167ms UTC/report.txt +9 -0
  68. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I set various values-2022-12-29 at 02h11m10s659ms UTC/report.txt +58 -0
  69. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I set various values-2022-12-29 at 02h11m10s659ms UTC/simple-doc.pdf +0 -0
  70. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I sign in-2022-12-29 at 02h10m54s349ms UTC/report.txt +7 -0
  71. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I take a screenshot-2022-12-29 at 02h13m01s434ms UTC/report.txt +6 -0
  72. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I take a screenshot-2022-12-29 at 02h13m01s434ms UTC/screenshot-some-screenshot-on-upload-files-2022-12-29 at 02h13m02s597ms UTC.jpg +0 -0
  73. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I upload files with a table-2022-12-29 at 02h15m13s490ms UTC/report.txt +19 -0
  74. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/I want to go to a full arbitrary url-2022-12-29 at 02h10m58s362ms UTC/report.txt +6 -0
  75. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Interview name includes url args with a wait-2022-12-29 at 02h10m52s195ms UTC/report.txt +6 -0
  76. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Interview name includes url args-2022-12-29 at 02h10m48s849ms UTC/report.txt +6 -0
  77. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Latin-Fail with missing language link-2022-12-29 at 02h13m40s278ms UTC/report.txt +10 -0
  78. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Latin-Fail with wrong page id-2022-12-29 at 02h13m41s379ms UTC/report.txt +10 -0
  79. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Proxy and regular vars are mixed-2022-12-29 at 02h14m51s648ms UTC/report.txt +35 -0
  80. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Report doesn't complain about `there_is_another _ False` in a table_-2022-12-29 at 02h14m36s652ms UTC/report.txt +16 -0
  81. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Report lists unused table rows-2022-12-29 at 02h14m29s563ms UTC/report.txt +65 -0
  82. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Report still shows page id when I tap to continue without setting any fields-2022-12-29 at 02h14m25s620ms UTC/report.txt +22 -0
  83. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Server finishes reloading-2022-12-29 at 02h11m08s477ms UTC/report.txt +6 -0
  84. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Sign in to server successfully-2022-12-29 at 02h14m34s127ms UTC/report.txt +6 -0
  85. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Story table accidentally uses the opposite double or single quotes-2022-12-29 at 02h15m11s462ms UTC/report.txt +18 -0
  86. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Table MISSING trigger column-2022-12-29 at 02h14m41s898ms UTC/report.txt +33 -0
  87. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Table has no header row, MISSING trigger column-2022-12-29 at 02h14m47s483ms UTC/report.txt +33 -0
  88. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Table has no header row, has trigger column-2022-12-29 at 02h14m44s776ms UTC/report.txt +37 -0
  89. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Table has trigger column-2022-12-29 at 02h14m39s081ms UTC/report.txt +37 -0
  90. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Test _Then I cannot continue_-2022-12-29 at 02h12m48s119ms UTC/report.txt +9 -0
  91. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Test _Then I can/342/200/231t continue_ with an apostrophe-2022-12-29 at 02h12m52s553ms UTC/report.txt" +9 -0
  92. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Test _Then I do not continue_-2022-12-29 at 02h12m50s316ms UTC/report.txt +9 -0
  93. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Test _Then I don't continue_ with a single quote-2022-12-29 at 02h12m45s907ms UTC/report.txt +9 -0
  94. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Test _Then I don/342/200/231t continue_ with an apostrophe-2022-12-29 at 02h12m54s800ms UTC/report.txt" +9 -0
  95. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/Warn when there are too many names-2022-12-29 at 02h14m22s722ms UTC/report.txt +8 -0
  96. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/debug_log.txt +2373 -0
  97. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/handles settings from Github secrets-2022-12-29 at 02h12m13s413ms UTC/report.txt +19 -0
  98. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/report.txt +1439 -0
  99. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/tap element with an error-2022-12-29 at 02h12m18s853ms UTC/report.txt +10 -0
  100. package/alkiln-2022-12-29 at 02h09m19s552ms UTC/tap elements-2022-12-29 at 02h12m16s677ms UTC/report.txt +6 -0
  101. package/alkiln-2023-01-11 at 19h24m55s354ms UTC/I set various values-2023-01-11 at 19h24m56s530ms UTC/report.txt +27 -0
  102. package/alkiln-2023-01-11 at 19h24m55s354ms UTC/I set various values-2023-01-11 at 19h25m07s611ms UTC/report.txt +27 -0
  103. package/alkiln-2023-01-11 at 19h24m55s354ms UTC/debug_log.txt +262 -0
  104. package/alkiln-2023-01-11 at 19h24m55s354ms UTC/report.txt +60 -0
  105. package/alkiln-2023-01-11 at 19h50m26s510ms UTC/debug_log.txt +224 -0
  106. package/alkiln-2023-01-11 at 19h50m26s510ms UTC/report.txt +22 -0
  107. package/alkiln-2023-01-11 at 19h53m45s106ms UTC/I set various values-2023-01-11 at 19h53m46s085ms UTC/report.txt +27 -0
  108. package/alkiln-2023-01-11 at 19h53m45s106ms UTC/I set various values-2023-01-11 at 19h53m57s482ms UTC/report.txt +27 -0
  109. package/alkiln-2023-01-11 at 19h53m45s106ms UTC/debug_log.txt +261 -0
  110. package/alkiln-2023-01-11 at 19h53m45s106ms UTC/report.txt +60 -0
  111. package/cucumber.js +1 -1
  112. package/docassemble/__init__.py +5 -0
  113. package/lib/run_cucumber.js +96 -0
  114. package/lib/scope.js +45 -28
  115. package/lib/steps.js +1 -1
  116. package/lib/utils/files.js +1 -1
  117. package/lib/utils/session_vars.js +5 -3
  118. package/package.json +8 -9
  119. package/setup.py +60 -0
  120. package/tests/features/assembly_line.feature +0 -43
  121. package/tests/features/establishing_steps.feature +0 -62
  122. package/tests/features/example_test.feature +0 -11
  123. package/tests/features/interactive_steps.feature +0 -166
  124. package/tests/features/observation_steps.feature +0 -153
  125. package/tests/features/random_input.feature +0 -31
  126. package/tests/features/reload.feature +0 -155
  127. package/tests/features/reports.feature +0 -557
  128. package/tests/features/some_png_1.png +0 -0
  129. package/tests/features/some_png_2.png +0 -0
  130. package/tests/features/story_table_formats.feature +0 -125
  131. package/tests/features/story_tables.feature +0 -91
package/package.json CHANGED
@@ -1,15 +1,13 @@
1
1
  {
2
2
  "name": "@suffolklitlab/alkiln",
3
- "version": "4.10.0",
3
+ "version": "4.10.1-pre-cli",
4
4
  "description": "Integrated automated end-to-end testing with docassemble, puppeteer, and cucumber.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
7
  "test": "npm run unit && npm run langs_setup && npm run cucumber -- $@",
8
- "cucumber_base": "run_cucumber(){ ./node_modules/.bin/cucumber-js \"$@\"; status=$?; ./lib/utils/clean_reports.js; return $status; }; run_cucumber",
9
- "cucumber": "run_base(){ npm run cucumber_base -- \"$@\" tests/features/*.feature --retry 1; }; run_base",
10
- "cucumber_external": "run_cucumber(){ tmp_path=`pwd`; ( new_path=\"$1\"; shift; cd \"$new_path\"; npm run --prefix \"${tmp_path}\" cucumber_base -- \"$@\" \"$new_path\"/docassemble/*/data/sources/*.feature;) }; run_cucumber",
11
- "langs": "npm run langs_setup && ./node_modules/.bin/cucumber-js --require ./lib/index.js tests/features/*_lang*.feature",
12
- "langs_setup": "./lib/utils/langs.js 'tests/features/*.feature'",
8
+ "cucumber": "./lib/run_cucumber.js",
9
+ "langs": "npm run langs_setup && ./node_modules/.bin/cucumber-js --require ./lib/index.js docassemble/*/data/sources/*_lang*.feature",
10
+ "langs_setup": "./lib/utils/langs.js 'docassemble/*/data/sources/*.feature'",
13
11
  "langs_local": "npm run langs_setup && npm run local",
14
12
  "local": "npm run setup && npm run cucumber; npm run takedown",
15
13
  "setup": "./lib/docassemble/setup.js",
@@ -36,13 +34,13 @@
36
34
  "homepage": "https://suffolklitlab.org/docassemble-AssemblyLine-documentation/docs/automated_integrated_testing/",
37
35
  "dependencies": {
38
36
  "@axe-core/puppeteer": "4.4.2",
39
- "@cucumber/cucumber": "7.3.2",
37
+ "@cucumber/cucumber": "8.6.0",
40
38
  "@faker-js/faker": "^7.3.0",
41
39
  "axios": "0.24.0",
42
40
  "chai": "4.2.0",
43
41
  "cheerio": "1.0.0-rc.10",
44
- "dotenv": "8.2.0",
45
42
  "deep-equal-in-any-order": "^2.0.0",
43
+ "dotenv": "8.2.0",
46
44
  "mocha": "9.2.0",
47
45
  "puppeteer": "13.1.3",
48
46
  "qs": "6.10.2",
@@ -52,6 +50,7 @@
52
50
  "bin": {
53
51
  "alkiln-setup": "./lib/docassemble/setup.js",
54
52
  "alkiln-takedown": "./lib/docassemble/takedown.js",
55
- "alkiln-langs": "./lib/utils/langs.js"
53
+ "alkiln-langs": "./lib/utils/langs.js",
54
+ "alkiln-run": "./lib/run_cucumber.js"
56
55
  }
57
56
  }
package/setup.py ADDED
@@ -0,0 +1,60 @@
1
+ import os
2
+ import sys
3
+ from setuptools import setup, find_packages
4
+ from fnmatch import fnmatchcase
5
+ from distutils.util import convert_path
6
+
7
+ standard_exclude = ('*.pyc', '*~', '.*', '*.bak', '*.swp*')
8
+ standard_exclude_directories = ('.*', 'CVS', '_darcs', './build', './dist', 'EGG-INFO', '*.egg-info')
9
+ def find_package_data(where='.', package='', exclude=standard_exclude, exclude_directories=standard_exclude_directories):
10
+ out = {}
11
+ stack = [(convert_path(where), '', package)]
12
+ while stack:
13
+ where, prefix, package = stack.pop(0)
14
+ for name in os.listdir(where):
15
+ fn = os.path.join(where, name)
16
+ if os.path.isdir(fn):
17
+ bad_name = False
18
+ for pattern in exclude_directories:
19
+ if (fnmatchcase(name, pattern)
20
+ or fn.lower() == pattern.lower()):
21
+ bad_name = True
22
+ break
23
+ if bad_name:
24
+ continue
25
+ if os.path.isfile(os.path.join(fn, '__init__.py')):
26
+ if not package:
27
+ new_package = name
28
+ else:
29
+ new_package = package + '.' + name
30
+ stack.append((fn, '', new_package))
31
+ else:
32
+ stack.append((fn, prefix + name + '/', package))
33
+ else:
34
+ bad_name = False
35
+ for pattern in exclude:
36
+ if (fnmatchcase(name, pattern)
37
+ or fn.lower() == pattern.lower()):
38
+ bad_name = True
39
+ break
40
+ if bad_name:
41
+ continue
42
+ out.setdefault(package, []).append(prefix+name)
43
+ return out
44
+
45
+ setup(name='docassemble.ALKilnTests',
46
+ version='1.0.0',
47
+ description=('A docassemble extension for testing the ALKiln integrated testing framework.'),
48
+ long_description='# ALKiln support package\r\n\r\nAssembly Line Kiln (ALKiln) is a framework for automatically testing **any** [docassemble](https://docassemble.org/) package using GitHub. ALKiln is being developed as part of the SuffolkLITLab Document Assembly Line project. See [documentation for kiln](https://suffolklitlab.github.io/docassemble-AssemblyLine-documentation/docs/automated_integrated_testing).\r\n\r\nThis package supports ALKiln in different ways.\r\n\r\n## Tool to set up testing\r\n\r\n[Tap here to set up automated integrated testing for your docassemble interview](https://apps-dev.suffolklitlab.org/start/test-setup/).\r\n\r\nThis repo contains a step-by-step form that a developer can use to set up automated integrated testing for **any** docassemble package. It requires, among other things, a docassemble account and a temporary GitHub personal access token with correct permissions. It will add necessary GitHub secrets, make a new branch, push necessary files to that branch, and make a PR with that branch.\r\n\r\n',
49
+ long_description_content_type='text/markdown',
50
+ author='plocket',
51
+ author_email='example@example.com',
52
+ license='The MIT License (MIT)',
53
+ url='https://suffolklitlab.org/docassemble-AssemblyLine-documentation/docs/automated_integrated_testing',
54
+ packages=find_packages(),
55
+ namespace_packages=['docassemble'],
56
+ install_requires=['docassemble.ALToolbox>=0.5.1'],
57
+ zip_safe=False,
58
+ package_data=find_package_data(where='docassemble/ALKilnTests/', package='docassemble.ALKilnTests'),
59
+ )
60
+
@@ -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,166 +0,0 @@
1
- @interactive
2
- Feature: Interactive steps
3
-
4
- # In tag names, 'i' is for 'interactive'
5
-
6
- @slow @i1
7
- Scenario: I set various values
8
-   Given I start the interview at "all_tests"
9
- Then the question id should be "upload files"
10
- When I set the var "upload_files_visible" to "some_png_1.png, some_png_2.png"
11
- And I set the var "show_upload" to "True"
12
- And I upload "some_png_2.png,some_png_1.png" to "upload_files_hidden"
13
- And I tap to continue
14
- # Next page
15
- Then the question id should be "group of complex fields"
16
- And I set the var "double_quote_dict['double_quote_key']['dq_two']" to "true"
17
- And I set the var "single_quote_dict['single_quote_key']['sq_two']" to "true"
18
- And I tap to continue
19
- Then the question id should be "direct standard fields"
20
- # Next page
21
- When I set the var "checkboxes_yesno" to "True"
22
- And I set the var "checkboxes_other['checkbox_other_opt_1']" to "true"
23
- And I set the var "dropdown_test" to "dropdown_opt_2"
24
- And I set the var "radio_yesno" to "False"
25
- And I set the var "radio_other" to "radio_other_opt_3"
26
- And I set the var "text_input" to "Regular text input field value"
27
- And I set the var "textarea" to "Multiline text\narea value"
28
- And I set the var "date_input" to "today - 1"
29
- When I set the var "direct_standard_fields" to "True"
30
- # Next page
31
- Then the question id should be "showifs"
32
- When I set the var "show_2" to "True"
33
- And I set the var "show_3" to "True"
34
- And I set the var "showif_checkbox_yesno" to "true"
35
- And I set the var "showif_checkboxes_other['showif_checkboxes_nota_2']" to "true"
36
- And I set the var "showif_checkboxes_other['showif_checkboxes_nota_3']" to "true"
37
- And I set the var "showif_yesnoradio" to "True"
38
- And I set the var "showif_radio_other" to "showif_radio_multi_2"
39
- And I set the var "showif_text_input" to "Show if text input value"
40
- And I set the var "showif_textarea" to "Show if\nmultiline text\narea value"
41
- And I set the var "showif_dropdown" to "showif_dropdown_1"
42
- When I tap to continue
43
- # Next page
44
- Then the question id should be "object checkboxes"
45
- And I set the var "object_checkboxes_test['obj_chkbx_opt_1']" to "true"
46
- And I set the var "object_dropdown" to "obj_opt_2"
47
- When I tap to continue
48
- # Next page
49
- Then the question id should be "buttons yesnomaybe"
50
- When I set the var "buttons_yesnomaybe" to "None"
51
- # Next page
52
- Then the question id should be "buttons other"
53
- When I set the var "buttons_other" to "button_3"
54
- # Next page
55
- Then the question id should be "button continue"
56
- When I set the var "button_continue" to "True"
57
- # Next page
58
- Then the question id should be "screen features"
59
- When I tap to continue
60
- # Next page
61
- Then the question id should be "proxy vars"
62
- When I set the var "x[i].name.first" to "Proxyname1"
63
- And I tap to continue
64
- # Next page
65
- Then the question id should be "is there another generic"
66
- When I set the var "x.there_is_another" to "True"
67
- # Next page
68
- Then the question id should be "proxy vars"
69
- When I set the var "x[i].name.first" to "Proxyname2"
70
- And I tap to continue
71
- # Next page
72
- Then the question id should be "is there another generic"
73
- When I set the var "x.there_is_another" to "False"
74
- # Next page
75
- Then the question id should be "first signature"
76
- When I sign
77
- And I tap to continue
78
- # Next page
79
- Then the question id should be "second signature"
80
- When I sign
81
- And I tap to continue
82
- # Next page
83
- Then the question id should be "simple doc"
84
- When I download "simple-doc.pdf"
85
- And I tap to continue
86
- # Next page
87
- Then the question id should be "button event action"
88
- And I tap to continue
89
- # Next page
90
- Then the question id should be "single-dropdown-field"
91
- And I set the var "single_dropdown_field" to "email"
92
- And I tap to continue
93
- # Next page
94
- Then the question id should be "the end"
95
-
96
- @fast @i2 @secret
97
- Scenario: handles settings from Github secrets
98
- Given the final Scenario status should be "failed"
99
- And the Scenario report should include:
100
- """
101
- The GitHub SECRET "SECRET_NOT_THERE" doesn't exist
102
- """
103
- Given I start the interview at "test_secret_vars"
104
- When I set the var "first_text_entry" to the secret "SECRET_VAR1"
105
- And I tap to continue
106
- Then I see the phrase "secret-var1-value"
107
- When I tap to continue
108
- And I set the var "second_text_entry" to the github secret "SECRET_VAR2"
109
- And I tap to continue
110
- Then I see the phrase "secret-var2-value"
111
- When I tap to continue
112
- And I set the variable "third_text_entry" to secret "SECRET_NOT_THERE"
113
-
114
- @i3 @tap-elements @tabs
115
- Scenario: tap elements
116
- Given I start the interview at "test_taps"
117
- And I tap the "Tests-first_template-tab" tab
118
- Then I see the phrase "Mechanics"
119
- And I tap the "Tests-second_template-tab" tab
120
- Then I see the phrase "villify"
121
- And I tap the "Tests-third_template-tab" tab
122
- Then I see the phrase "museum"
123
- And I tap the "#special_event" element and wait 1 second
124
- Then I see the phrase "Portishead"
125
-
126
- @i4 @tap-elements @tabs @error
127
- Scenario: tap element with an error
128
- Given the final Scenario status should be "failed"
129
- And the Scenario report should include:
130
- """
131
- is there a typo?
132
- """
133
- Given I start the interview at "test_taps"
134
- And I tap the "Tests-not_there-tab" tab
135
-
136
- @i5 @decoding-test @object-multiselect
137
- Scenario: Base64 encoded corner cases are decoded correctly
138
- Given I start the interview at "test_decoding"
139
- And I get to "end screen" with this data:
140
- | var | value | trigger |
141
- | object_multiselect_test['obj_opt_1'] | True | |
142
- | object_multiselect_test['obj_opt_3'] | True | |
143
- | multiselect_test['hi'] | True | |
144
- | multiselect_test['dear'] | True | |
145
- | object_radio_field | object_radio_choice_one | |
146
- | object_checkboxes_test['obj_chkbx_opt_1'] | True | |
147
- | object_dropdown | obj_opt_2 | |
148
- | checkbox_dict['single_quote_key']['🁳🧴🯍🥫🅍🗎🹇🗷🌲🯵'] | True | |
149
-
150
- # This test should fail because it's target id is never found, but that also means
151
- # it has succeeded because it didn't try to keep looking for the id by pressing 'restart'
152
- # to continue.
153
- @fast @i6
154
- Scenario: Fails as it doesn't try to 'continue' with a restart button
155
- Given the final Scenario status should be "failed"
156
- And the Scenario report should include:
157
- """
158
- The test got stuck on "kickout-screen"
159
- """
160
- Given the max seconds for each step in this scenario is 10
161
- Given I start the interview at "test_kickout"
162
- And I get to "doesnt exist" with this data:
163
- | var | value | trigger |
164
- | user_choice | wrong | |
165
-
166
-
@@ -1,153 +0,0 @@
1
- @observation
2
- Feature: Observational steps
3
-
4
- # In tag names, 'o' is for 'observational'
5
-
6
- @fast @o1
7
- Scenario: I observe things on a single page when I arrive
8
-   Given I start the interview at "all_tests"
9
- And I tap to continue
10
- Then the question id should be "group of complex fields"
11
- And I should see the phrase "Some complex fields"
12
- And I SHOULD see the phrase "Some complex fields"
13
- And I should not see the phrase "zzzzzzz"
14
- And I should NOT see the phrase "zzzzzzz"
15
- And an element should have the id "daform"
16
-
17
- @fast @o2
18
- Scenario: I see user errors.
19
- # They're everywhere. Some don't even know they are errors.
20
-   Given I start the interview at "all_tests"
21
- And I tap to continue
22
- And I tap to continue
23
- And I tap to continue
24
- Then I can't continue
25
- And I will be told an answer is invalid
26
-
27
- @fast @o3
28
- Scenario: I can include .yml in the filename
29
-   Given I start the interview at "all_tests.yml"
30
-
31
- @slow @o4
32
- Scenario: I check navigation
33
-   Given I start the interview at "all_tests"
34
- And I tap to continue
35
-   And I get to "showifs" with this data:
36
- | var | value | trigger |
37
- | double_quote_dict["double_quote_key"]['dq_two'] | true | |
38
- | checkboxes_other['checkbox_other_opt_1'] | true | |
39
- | dropdown_test | dropdown_opt_2 | |
40
- | radio_yesno | False | false |
41
- | radio_other | radio_other_opt_3 | |
42
- | single_quote_dict['single_quote_key']['sq_two'] | true | |
43
- | text_input | Regular text input field value | |
44
- | textarea | Multiline text\narea value | |
45
- | date_input | today | |
46
- Then I arrive at the next page
47
-   Then I get to "screen features" with this data:
48
- | var | value | trigger |
49
- | object_checkboxes_test["obj_chkbx_opt_1"] | True | |
50
- | object_dropdown | obj_opt_2 | |
51
- | button_continue | True | |
52
- | buttons_other | button_2 | |
53
- | buttons_yesnomaybe | True | |
54
- And I should see the link to "http://ecosia.org/"
55
-
56
- @fast @o4
57
- Scenario: Test "Then I don't continue" with a single quote
58
-   Given I start the interview at "all_tests"
59
- And I tap to continue
60
- And I tap to continue
61
- And I tap to continue
62
- Then I don't continue
63
- And I will be told an answer is invalid
64
-
65
- @fast @o5
66
- Scenario: Test "Then I cannot continue"
67
-   Given I start the interview at "all_tests"
68
- And I tap to continue
69
- And I tap to continue
70
- And I tap to continue
71
- Then I cannot continue
72
- And I will be told an answer is invalid
73
-
74
- @fast @o6
75
- Scenario: Test "Then I do not continue"
76
-   Given I start the interview at "all_tests"
77
- And I tap to continue
78
- And I tap to continue
79
- And I tap to continue
80
- Then I do not continue
81
- And I will be told an answer is invalid
82
-
83
- @fast @o7
84
- Scenario: Test "Then I can’t continue" with an apostrophe
85
-   Given I start the interview at "all_tests"
86
- And I tap to continue
87
- And I tap to continue
88
- And I tap to continue
89
- Then I can’t continue
90
- And I will be told an answer is invalid
91
-
92
- @fast @o8
93
- Scenario: Test "Then I don’t continue" with an apostrophe
94
-   Given I start the interview at "all_tests"
95
- And I tap to continue
96
- And I tap to continue
97
- And I tap to continue
98
- Then I don’t continue
99
- And I will be told an answer is invalid
100
-
101
- @fast @o9 @table @json
102
- Scenario: I can match JSON page var to str
103
- Given I start the interview at "all_tests.yml"
104
-   And I get to "showifs" with this data:
105
- | var | value | trigger |
106
- | double_quote_dict["double_quote_key"]['dq_two'] | true | |
107
- | checkboxes_other['checkbox_other_opt_1'] | true | |
108
- | dropdown_test | dropdown_opt_2 | |
109
- | radio_yesno | False | false |
110
- | radio_other | radio_other_opt_3 | |
111
- | single_quote_dict['single_quote_key']['sq_two'] | true | |
112
- | text_input | Regular text input field value | |
113
- | textarea | Multiline text\narea value | |
114
- | date_input | today | |
115
- Then the text in the JSON variable "dropdown_test" should be
116
- """
117
- dropdown_opt_2
118
- """
119
-
120
- # Maybe this one should be in the report tests (as well?)
121
- @fast @o10 @json
122
- Scenario: I get the page's JSON
123
- Given I start the interview at "all_tests"
124
- Then I get the page's JSON variables and values
125
-
126
- @fast @o11 @screenshot
127
- Scenario: I take a screenshot
128
-   Given I start the interview at "all_tests"
129
- Then I take a screenshot
130
- Then I take a screenshot named "some-screenshot"
131
-
132
- @slow @o12 @accessibility @a11y
133
- Scenario: I check the pages for accessibility
134
- Given I start the interview at "all_tests"
135
- And I check all pages for accessibility issues
136
- And I tap to continue
137
-   Then I get to "screen features" with this data:
138
- | var | value | trigger |
139
- | double_quote_dict["double_quote_key"]['dq_two'] | true | |
140
- | checkboxes_other['checkbox_other_opt_1'] | true | |
141
- | dropdown_test | dropdown_opt_2 | |
142
- | radio_yesno | False | false |
143
- | radio_other | radio_other_opt_3 | |
144
- | object_checkboxes_test["obj_chkbx_opt_1"] | True | |
145
- | object_dropdown | obj_opt_2 | |
146
- | object_select_test | obj_chkbx_opt_2 | |
147
- | single_quote_dict['single_quote_key']['sq_two'] | true | |
148
- | text_input | Regular text input field value | |
149
- | textarea | Multiline text\narea value | |
150
- | date_input | today | |
151
- | button_continue | True | |
152
- | buttons_other | button_2 | |
153
- | buttons_yesnomaybe | True | |
@@ -1,31 +0,0 @@
1
- @random_input
2
- Feature: Assembly Line package-specific Steps
3
-
4
- # In tag names, 'ri' is for 'random input'
5
-
6
- @fast @ri1 @random
7
- Scenario: I fill in random input till the end
8
-   Given I start the interview at "test_random_input"
9
- And I answer randomly for at most 20 pages
10
- Then the question id should be "end"
11
-
12
- @fast @ri2 @random
13
- Scenario: I fill in random input for 1 page
14
-   Given I start the interview at "test_random_input"
15
- And I answer randomly for at most 1 page
16
-
17
- # Should create two unique folders for random step screenshots which
18
- # must be checked manually
19
- @fast @ri3 @random
20
- Scenario: I answer randomly till the end twice
21
- Given I start the interview at "test_random_input"
22
- And I answer randomly for at most 50 pages
23
- Given I start the interview at "test_random_input"
24
- And I answer randomly for at most 50 pages
25
-
26
- @fast @ri4 @random @error
27
- Scenario: Fail with error page from random input
28
- Given the final Scenario status should be "failed"
29
- Given I start the interview at "test_missing_var_error_screen"
30
- And the max seconds for each step in this scenario is 10
31
- And I answer randomly for at most 3 pages