kokopu-react 3.0.2 → 3.2.0

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 (253) hide show
  1. package/.eslintrc.yml +1 -1
  2. package/CHANGELOG.md +13 -1
  3. package/dist/lib/chessboard/BoardProperties.d.ts +91 -0
  4. package/dist/lib/chessboard/BoardProperties.js +43 -0
  5. package/dist/lib/chessboard/BoardProperties.js.map +1 -0
  6. package/dist/lib/chessboard/Chessboard.css +13 -13
  7. package/dist/lib/chessboard/Chessboard.d.ts +14 -58
  8. package/dist/lib/chessboard/Chessboard.js +26 -92
  9. package/dist/lib/chessboard/Chessboard.js.map +1 -1
  10. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
  11. package/dist/lib/chessboard/Draggable.js.map +1 -1
  12. package/dist/lib/chessboard/Motion.js.map +1 -1
  13. package/dist/lib/chessboard/colorsets.js.map +1 -1
  14. package/dist/lib/chessboard/piecesets.js.map +1 -1
  15. package/dist/lib/errorbox/ErrorBox.css +18 -18
  16. package/dist/lib/errorbox/ErrorBox.js.map +1 -1
  17. package/dist/lib/errorbox/parsing.d.ts +57 -0
  18. package/dist/lib/errorbox/parsing.js +140 -0
  19. package/dist/lib/errorbox/parsing.js.map +1 -0
  20. package/dist/lib/exception.js.map +1 -1
  21. package/dist/lib/i18n.d.ts +6 -0
  22. package/dist/lib/i18n.js +7 -0
  23. package/dist/lib/i18n.js.map +1 -1
  24. package/dist/lib/icons/AnnotationSymbolShape.css +6 -6
  25. package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -1
  26. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
  27. package/dist/lib/icons/ArrowTip.js.map +1 -1
  28. package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
  29. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
  30. package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
  31. package/dist/lib/icons/arrow.css +1 -1
  32. package/dist/lib/index.d.ts +5 -1
  33. package/dist/lib/index.js +3 -0
  34. package/dist/lib/index.js.map +1 -1
  35. package/dist/lib/movetext/Movetext.css +27 -40
  36. package/dist/lib/movetext/Movetext.d.ts +9 -43
  37. package/dist/lib/movetext/Movetext.js +15 -67
  38. package/dist/lib/movetext/Movetext.js.map +1 -1
  39. package/dist/lib/movetext/MovetextImpl.d.ts +7 -28
  40. package/dist/lib/movetext/MovetextImpl.js +15 -94
  41. package/dist/lib/movetext/MovetextImpl.js.map +1 -1
  42. package/dist/lib/movetext/fonts.css +7 -7
  43. package/dist/lib/movetext/htmlFilter.js.map +1 -1
  44. package/dist/lib/movetext/moveFormatter.js.map +1 -1
  45. package/dist/lib/navigationboard/NavigationBoard.d.ts +156 -0
  46. package/dist/lib/navigationboard/NavigationBoard.js +195 -0
  47. package/dist/lib/navigationboard/NavigationBoard.js.map +1 -0
  48. package/dist/lib/navigationboard/NavigationButton.d.ts +54 -0
  49. package/dist/lib/navigationboard/NavigationButton.js +35 -0
  50. package/dist/lib/navigationboard/NavigationButton.js.map +1 -0
  51. package/dist/lib/navigationboard/NavigationField.css +36 -0
  52. package/dist/lib/navigationboard/NavigationField.d.ts +81 -0
  53. package/dist/lib/navigationboard/NavigationField.js +154 -0
  54. package/dist/lib/navigationboard/NavigationField.js.map +1 -0
  55. package/dist/lib/navigationboard/NavigationToolbar.css +54 -0
  56. package/dist/lib/navigationboard/NavigationToolbar.d.ts +34 -0
  57. package/dist/lib/navigationboard/NavigationToolbar.js +73 -0
  58. package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -0
  59. package/dist/lib/navigationboard/iconPaths.d.ts +29 -0
  60. package/dist/lib/navigationboard/iconPaths.js +91 -0
  61. package/dist/lib/navigationboard/iconPaths.js.map +1 -0
  62. package/dist/lib/sanitization.js.map +1 -1
  63. package/dist/lib/types.js.map +1 -1
  64. package/dist/lib/util.js.map +1 -1
  65. package/doc_src/demo/PageChessboardBase.tsx +115 -115
  66. package/doc_src/demo/PageChessboardInteraction.tsx +303 -303
  67. package/doc_src/demo/PageChessboardMove.tsx +173 -156
  68. package/doc_src/demo/PageChessboardSmallScreens.tsx +94 -94
  69. package/doc_src/demo/PageMovetextBase.tsx +180 -180
  70. package/doc_src/demo/PageMovetextInteraction.tsx +123 -123
  71. package/doc_src/demo/PageNavigationBoardBase.tsx +201 -0
  72. package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +114 -0
  73. package/doc_src/demo/decs.d.ts +4 -4
  74. package/doc_src/demo/demo.css +12 -12
  75. package/doc_src/demo/game-3.pgn +10 -0
  76. package/doc_src/demo/util.ts +1 -1
  77. package/doc_src/examples/Movetext.md +1 -1
  78. package/doc_src/examples/NavigationBoard.md +15 -0
  79. package/doc_src/theming/LogoRenderer.js +13 -13
  80. package/doc_src/theming/theming.css +5 -5
  81. package/package.json +95 -95
  82. package/scripts/doc.styleguide.config.js +133 -123
  83. package/scripts/doc.tsconfig.json +5 -5
  84. package/scripts/docker-compose.yml +1 -1
  85. package/scripts/test-graphic.tsconfig.json +5 -5
  86. package/scripts/test-graphic.webpack.config.js +57 -57
  87. package/scripts/test-headless.webpack.config.js +29 -29
  88. package/src/chessboard/BoardProperties.ts +131 -0
  89. package/src/chessboard/Chessboard.css +13 -13
  90. package/src/chessboard/Chessboard.tsx +389 -518
  91. package/src/chessboard/ChessboardImpl.tsx +557 -557
  92. package/src/chessboard/Draggable.tsx +185 -185
  93. package/src/chessboard/Motion.tsx +67 -67
  94. package/src/chessboard/colorsets.ts +66 -66
  95. package/src/chessboard/piecesets.ts +84 -84
  96. package/src/decs.d.ts +2 -2
  97. package/src/errorbox/ErrorBox.css +18 -18
  98. package/src/errorbox/ErrorBox.tsx +75 -75
  99. package/src/errorbox/parsing.tsx +158 -0
  100. package/src/exception.ts +17 -17
  101. package/src/i18n.ts +8 -0
  102. package/src/icons/AnnotationSymbolShape.css +6 -6
  103. package/src/icons/AnnotationSymbolShape.tsx +31 -31
  104. package/src/icons/ArrowMarkerIcon.tsx +34 -34
  105. package/src/icons/ArrowTip.tsx +14 -14
  106. package/src/icons/ChessPieceIcon.tsx +45 -45
  107. package/src/icons/SquareMarkerIcon.tsx +20 -20
  108. package/src/icons/TextMarkerIcon.tsx +29 -29
  109. package/src/icons/arrow.css +1 -1
  110. package/src/index.ts +8 -3
  111. package/src/movetext/Movetext.css +27 -40
  112. package/src/movetext/Movetext.tsx +163 -228
  113. package/src/movetext/MovetextImpl.tsx +351 -438
  114. package/src/movetext/fonts.css +7 -7
  115. package/src/movetext/htmlFilter.tsx +129 -129
  116. package/src/movetext/moveFormatter.tsx +37 -37
  117. package/src/navigationboard/NavigationBoard.tsx +350 -0
  118. package/src/navigationboard/NavigationButton.ts +72 -0
  119. package/src/navigationboard/NavigationField.css +36 -0
  120. package/src/navigationboard/NavigationField.tsx +185 -0
  121. package/src/navigationboard/NavigationToolbar.css +54 -0
  122. package/src/navigationboard/NavigationToolbar.tsx +117 -0
  123. package/src/navigationboard/iconPaths.ts +98 -0
  124. package/src/sanitization.ts +17 -17
  125. package/src/types.ts +116 -116
  126. package/src/util.ts +11 -11
  127. package/test/01_types.js +167 -167
  128. package/test/02_chessboard_util.js +114 -114
  129. package/test/03_error_box_graphic.js +16 -16
  130. package/test/04_icons_graphic.js +32 -32
  131. package/test/05_chessboard_graphic.js +60 -58
  132. package/test/06_chessboard_animation.js +36 -36
  133. package/test/07_chessboard_interaction.js +101 -101
  134. package/test/08_chessboard_play_moves.js +62 -62
  135. package/test/09_chessboard_small_screens.js +42 -21
  136. package/test/10_movetext_graphic.js +36 -31
  137. package/test/11_movetext_interaction.js +100 -96
  138. package/test/12_navigation_board_base.js +151 -0
  139. package/test/13_navigation_board_graphic.js +68 -0
  140. package/test/14_navigation_board_autoplay.js +100 -0
  141. package/test/common/graphic.js +106 -97
  142. package/test/graphic_references/05_chessboard_graphic/move/illegal_null-move.png +0 -0
  143. package/test/graphic_references/05_chessboard_graphic/move/null-move.png +0 -0
  144. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_bottom_component.png +0 -0
  145. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_top_component.png +0 -0
  146. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_bottom_component.png +0 -0
  147. package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_top_component.png +0 -0
  148. package/test/graphic_references/10_movetext_graphic/format_move/format_text.png +0 -0
  149. package/test/graphic_references/10_movetext_graphic/options/wrong_piece_symbol_value.png +0 -0
  150. package/test/graphic_references/11_movetext_interaction/select_moves/click_on_unselected_without_callback.png +0 -0
  151. package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
  152. package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_0.png +0 -0
  153. package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_1.png +0 -0
  154. package/test/graphic_references/12_navigation_board_base/controlled/invalid_node_id.png +0 -0
  155. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
  156. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_1.png +0 -0
  157. package/test/graphic_references/12_navigation_board_base/controlled/overriding_initial_node_id.png +0 -0
  158. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_0.png +0 -0
  159. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_1.png +0 -0
  160. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_2.png +0 -0
  161. package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_3.png +0 -0
  162. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png +0 -0
  163. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png +0 -0
  164. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png +0 -0
  165. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png +0 -0
  166. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
  167. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
  168. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_end.png +0 -0
  169. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
  170. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default.png +0 -0
  171. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default_with_game_index.png +0 -0
  172. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_on_null-move.png +0 -0
  173. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_0.png +0 -0
  174. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
  175. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_2.png +0 -0
  176. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_3.png +0 -0
  177. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_4.png +0 -0
  178. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_0.png +0 -0
  179. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_1.png +0 -0
  180. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_0.png +0 -0
  181. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_1.png +0 -0
  182. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_2.png +0 -0
  183. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
  184. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_4.png +0 -0
  185. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_5.png +0 -0
  186. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
  187. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
  188. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
  189. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/single_button.png +0 -0
  190. package/test/graphic_references/13_navigation_board_graphic/error/pgn_parsing_error.png +0 -0
  191. package/test/graphic_references/13_navigation_board_graphic/error/wrong_game_type.png +0 -0
  192. package/test/graphic_references/13_navigation_board_graphic/theme/custom_1.png +0 -0
  193. package/test/graphic_references/13_navigation_board_graphic/theme/custom_2.png +0 -0
  194. package/test/graphic_references/13_navigation_board_graphic/theme/large.png +0 -0
  195. package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
  196. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
  197. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
  198. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
  199. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
  200. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_reaching_the_end.png +0 -0
  201. package/test/graphic_references/14_navigation_board_autoplay/controlled/already_at_the_end.png +0 -0
  202. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
  203. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
  204. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_at_the_end.png +0 -0
  205. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
  206. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
  207. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
  208. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
  209. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
  210. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
  211. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
  212. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
  213. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_default.png +0 -0
  214. package/test/graphic_test_app/03_error_box_graphic/base.tsx +14 -14
  215. package/test/graphic_test_app/03_error_box_graphic/localization.tsx +1 -1
  216. package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +7 -7
  217. package/test/graphic_test_app/04_icons_graphic/marker.tsx +15 -15
  218. package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -7
  219. package/test/graphic_test_app/05_chessboard_graphic/base.tsx +6 -6
  220. package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +7 -7
  221. package/test/graphic_test_app/05_chessboard_graphic/flipped.tsx +5 -5
  222. package/test/graphic_test_app/05_chessboard_graphic/move.tsx +12 -10
  223. package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +12 -12
  224. package/test/graphic_test_app/06_chessboard_animation/base_1.tsx +6 -6
  225. package/test/graphic_test_app/06_chessboard_animation/base_2.tsx +6 -6
  226. package/test/graphic_test_app/06_chessboard_animation/base_3.tsx +6 -6
  227. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +16 -16
  228. package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +5 -5
  229. package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -4
  230. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +2 -2
  231. package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +5 -5
  232. package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +8 -8
  233. package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +4 -4
  234. package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +9 -9
  235. package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +48 -0
  236. package/test/graphic_test_app/10_movetext_graphic/base.tsx +4 -4
  237. package/test/graphic_test_app/10_movetext_graphic/error.tsx +6 -6
  238. package/test/graphic_test_app/10_movetext_graphic/format_move.tsx +31 -0
  239. package/test/graphic_test_app/10_movetext_graphic/html.tsx +5 -5
  240. package/test/graphic_test_app/10_movetext_graphic/options.tsx +10 -9
  241. package/test/graphic_test_app/11_movetext_interaction/error.tsx +1 -1
  242. package/test/graphic_test_app/11_movetext_interaction/select_moves.tsx +11 -10
  243. package/test/graphic_test_app/12_navigation_board_base/controlled.tsx +43 -0
  244. package/test/graphic_test_app/12_navigation_board_base/uncontrolled.tsx +56 -0
  245. package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +49 -0
  246. package/test/graphic_test_app/13_navigation_board_graphic/error.tsx +34 -0
  247. package/test/graphic_test_app/13_navigation_board_graphic/theme.tsx +38 -0
  248. package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +73 -0
  249. package/test/graphic_test_app/14_navigation_board_autoplay/uncontrolled.tsx +34 -0
  250. package/test/graphic_test_app/common/decs.d.ts +2 -2
  251. package/test/graphic_test_app/common/test_app.css +15 -15
  252. package/test/graphic_test_app/common/test_app.tsx +48 -48
  253. package/tsconfig.json +13 -13
@@ -27,106 +27,106 @@ const { describeWithBrowser, itCustom, setSandbox, compareSandbox, takeScreensho
27
27
 
28
28
  describeWithBrowser('Chessboard interaction', browserContext => {
29
29
 
30
- function itCheckClickSquare(itemIndex, label, targets) {
31
- itCustom(browserContext, '07_chessboard_interaction/click_squares', itemIndex, label, async element => {
32
- const actions = browserContext.driver.actions({ async: true });
33
- const area = await element.getRect();
34
- for (let i = 0; i < targets.length; ++i) {
35
- const target = targets[i];
36
- await actions.move({ x: area.x + target.x, y: area.y + target.y }).click().perform();
37
- await compareSandbox(browserContext, target.expectedText);
38
- }
39
- });
40
- }
41
-
42
- itCheckClickSquare(0, 'default', [
43
- { x: 225, y: 75, expectedText: 'square clicked: e7' },
44
- { x: 25, y: 375, expectedText: 'square clicked: a1' },
45
- { x: 325, y: 175, expectedText: 'square clicked: g5' },
46
- ]);
47
- itCheckClickSquare(1, 'with flip', [
48
- { x: 325, y: 175, expectedText: 'square clicked: b4' },
49
- ]);
50
- itCheckClickSquare(2, 'over annotations', [
51
- { x: 25, y: 25, expectedText: 'square clicked: a8' },
52
- { x: 75, y: 125, expectedText: 'square clicked: b6' },
53
- { x: 175, y: 125, expectedText: 'square clicked: d6' },
54
- { x: 75, y: 225, expectedText: 'square clicked: b4' },
55
- ]);
56
-
57
- function itCheckMovePiece(itemIndex, label, xFrom, yFrom, xTo, yTo, expectedText) {
58
- itCustom(browserContext, '07_chessboard_interaction/move_pieces', itemIndex, label, async element => {
59
- const actions = browserContext.driver.actions({ async: true });
60
- const area = await element.getRect();
61
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
62
- await takeScreenshot(browserContext, label, element);
63
- await actions.release().perform();
64
- await compareScreenshot(browserContext, label);
65
- await compareSandbox(browserContext, expectedText);
66
- });
67
- }
68
-
69
- itCheckMovePiece(0, 'over empty', 275, 385, 225, 175, 'piece moved: f1 -> e5');
70
- itCheckMovePiece(0, 'over non-empty 1', 280, 365, 75, 75, 'piece moved: f1 -> b7');
71
- itCheckMovePiece(0, 'over non-empty 2', 130, 75, 225, 375, 'piece moved: c7 -> e1');
72
- itCheckMovePiece(1, 'over square marker', 10, 325, 275, 175, 'piece moved: h7 -> c4');
73
- itCheckMovePiece(1, 'over text marker', 225, 25, 10, 135, 'piece moved: d1 -> h3');
74
- itCheckMovePiece(1, 'over arrow marker', 325, 25, 315, 260, 'piece moved: b1 -> b6');
75
- itCheckMovePiece(2, 'after move', 225, 225, 75, 260, 'piece moved: e4 -> b3');
76
-
77
- function itCheckNonMovePiece(itemIndex, label, xFrom, yFrom, xTo, yTo) {
78
- itCustom(browserContext, '07_chessboard_interaction/move_pieces', itemIndex, label, async element => {
79
- await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
80
- const actions = browserContext.driver.actions({ async: true });
81
- const area = await element.getRect();
82
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
83
- await takeScreenshot(browserContext, label, element);
84
- await actions.release().perform();
85
- await compareScreenshot(browserContext, label);
86
- await compareSandbox(browserContext, label);
87
- });
88
- }
89
-
90
- itCheckNonMovePiece(0, 'move empty square', 175, 225, 275, 75);
91
- itCheckNonMovePiece(0, 'from == to', 75, 375, 80, 360);
92
- itCheckNonMovePiece(0, 'out of board', 175, 25, 500, 210);
93
-
94
- function itCheckEditArrow(itemIndex, label, xFrom, yFrom, xTo, yTo, expectedText) {
95
- itCustom(browserContext, '07_chessboard_interaction/edit_arrows', itemIndex, label, async element => {
96
- const actions = browserContext.driver.actions({ async: true });
97
- const area = await element.getRect();
98
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
99
- await takeScreenshot(browserContext, label, element);
100
- await actions.release().perform();
101
- await compareScreenshot(browserContext, label);
102
- await compareSandbox(browserContext, expectedText);
103
- });
104
- }
105
-
106
- itCheckEditArrow(0, 'base 1', 325, 275, 110, 140, 'arrow edited: g3 -> c6');
107
- itCheckEditArrow(0, 'base 2', 260, 10, 175, 375, 'arrow edited: f8 -> d1');
108
- itCheckEditArrow(1, 'over square marker', 275, 125, 275, 230, 'arrow edited: c3 -> c5');
109
- itCheckEditArrow(1, 'over arrow marker', 40, 110, 125, 290, 'arrow edited: h3 -> f6');
110
-
111
- function itCheckNonEditArrow(itemIndex, label, xFrom, yFrom, xTo, yTo) {
112
- itCustom(browserContext, '07_chessboard_interaction/edit_arrows', itemIndex, label, async element => {
113
- await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
114
- const actions = browserContext.driver.actions({ async: true });
115
- const area = await element.getRect();
116
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
117
- await takeScreenshot(browserContext, label, element);
118
- await actions.release().perform();
119
- await compareScreenshot(browserContext, label);
120
- await compareSandbox(browserContext, label);
121
- });
122
- }
123
-
124
- itCheckNonEditArrow(0, 'from == to', 275, 225, 290, 210);
125
- itCheckNonEditArrow(0, 'out of board', 175, 225, 500, 280);
126
-
127
- itChecksScreenshots(browserContext, '07_chessboard_interaction/error', [
128
- 'wrong interaction mode',
129
- 'edit color not set',
130
- ]);
30
+ function itCheckClickSquare(itemIndex, label, targets) {
31
+ itCustom(browserContext, '07_chessboard_interaction/click_squares', itemIndex, label, async element => {
32
+ const actions = browserContext.driver.actions({ async: true });
33
+ const area = await element.getRect();
34
+ for (let i = 0; i < targets.length; ++i) {
35
+ const target = targets[i];
36
+ await actions.move({ x: area.x + target.x, y: area.y + target.y }).click().perform();
37
+ await compareSandbox(browserContext, target.expectedText);
38
+ }
39
+ });
40
+ }
41
+
42
+ itCheckClickSquare(0, 'default', [
43
+ { x: 225, y: 75, expectedText: 'square clicked: e7' },
44
+ { x: 25, y: 375, expectedText: 'square clicked: a1' },
45
+ { x: 325, y: 175, expectedText: 'square clicked: g5' },
46
+ ]);
47
+ itCheckClickSquare(1, 'with flip', [
48
+ { x: 325, y: 175, expectedText: 'square clicked: b4' },
49
+ ]);
50
+ itCheckClickSquare(2, 'over annotations', [
51
+ { x: 25, y: 25, expectedText: 'square clicked: a8' },
52
+ { x: 75, y: 125, expectedText: 'square clicked: b6' },
53
+ { x: 175, y: 125, expectedText: 'square clicked: d6' },
54
+ { x: 75, y: 225, expectedText: 'square clicked: b4' },
55
+ ]);
56
+
57
+ function itCheckMovePiece(itemIndex, label, xFrom, yFrom, xTo, yTo, expectedText) {
58
+ itCustom(browserContext, '07_chessboard_interaction/move_pieces', itemIndex, label, async element => {
59
+ const actions = browserContext.driver.actions({ async: true });
60
+ const area = await element.getRect();
61
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
62
+ await takeScreenshot(browserContext, label, element);
63
+ await actions.release().perform();
64
+ await compareScreenshot(browserContext, label);
65
+ await compareSandbox(browserContext, expectedText);
66
+ });
67
+ }
68
+
69
+ itCheckMovePiece(0, 'over empty', 275, 385, 225, 175, 'piece moved: f1 -> e5');
70
+ itCheckMovePiece(0, 'over non-empty 1', 280, 365, 75, 75, 'piece moved: f1 -> b7');
71
+ itCheckMovePiece(0, 'over non-empty 2', 130, 75, 225, 375, 'piece moved: c7 -> e1');
72
+ itCheckMovePiece(1, 'over square marker', 10, 325, 275, 175, 'piece moved: h7 -> c4');
73
+ itCheckMovePiece(1, 'over text marker', 225, 25, 10, 135, 'piece moved: d1 -> h3');
74
+ itCheckMovePiece(1, 'over arrow marker', 325, 25, 315, 260, 'piece moved: b1 -> b6');
75
+ itCheckMovePiece(2, 'after move', 225, 225, 75, 260, 'piece moved: e4 -> b3');
76
+
77
+ function itCheckNonMovePiece(itemIndex, label, xFrom, yFrom, xTo, yTo) {
78
+ itCustom(browserContext, '07_chessboard_interaction/move_pieces', itemIndex, label, async element => {
79
+ await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
80
+ const actions = browserContext.driver.actions({ async: true });
81
+ const area = await element.getRect();
82
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
83
+ await takeScreenshot(browserContext, label, element);
84
+ await actions.release().perform();
85
+ await compareScreenshot(browserContext, label);
86
+ await compareSandbox(browserContext, label);
87
+ });
88
+ }
89
+
90
+ itCheckNonMovePiece(0, 'move empty square', 175, 225, 275, 75);
91
+ itCheckNonMovePiece(0, 'from == to', 75, 375, 80, 360);
92
+ itCheckNonMovePiece(0, 'out of board', 175, 25, 500, 210);
93
+
94
+ function itCheckEditArrow(itemIndex, label, xFrom, yFrom, xTo, yTo, expectedText) {
95
+ itCustom(browserContext, '07_chessboard_interaction/edit_arrows', itemIndex, label, async element => {
96
+ const actions = browserContext.driver.actions({ async: true });
97
+ const area = await element.getRect();
98
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
99
+ await takeScreenshot(browserContext, label, element);
100
+ await actions.release().perform();
101
+ await compareScreenshot(browserContext, label);
102
+ await compareSandbox(browserContext, expectedText);
103
+ });
104
+ }
105
+
106
+ itCheckEditArrow(0, 'base 1', 325, 275, 110, 140, 'arrow edited: g3 -> c6');
107
+ itCheckEditArrow(0, 'base 2', 260, 10, 175, 375, 'arrow edited: f8 -> d1');
108
+ itCheckEditArrow(1, 'over square marker', 275, 125, 275, 230, 'arrow edited: c3 -> c5');
109
+ itCheckEditArrow(1, 'over arrow marker', 40, 110, 125, 290, 'arrow edited: h3 -> f6');
110
+
111
+ function itCheckNonEditArrow(itemIndex, label, xFrom, yFrom, xTo, yTo) {
112
+ itCustom(browserContext, '07_chessboard_interaction/edit_arrows', itemIndex, label, async element => {
113
+ await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
114
+ const actions = browserContext.driver.actions({ async: true });
115
+ const area = await element.getRect();
116
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
117
+ await takeScreenshot(browserContext, label, element);
118
+ await actions.release().perform();
119
+ await compareScreenshot(browserContext, label);
120
+ await compareSandbox(browserContext, label);
121
+ });
122
+ }
123
+
124
+ itCheckNonEditArrow(0, 'from == to', 275, 225, 290, 210);
125
+ itCheckNonEditArrow(0, 'out of board', 175, 225, 500, 280);
126
+
127
+ itChecksScreenshots(browserContext, '07_chessboard_interaction/error', [
128
+ 'wrong interaction mode',
129
+ 'edit color not set',
130
+ ]);
131
131
 
132
132
  });
@@ -27,74 +27,74 @@ const { describeWithBrowser, itCustom, setSandbox, compareSandbox, takeScreensho
27
27
 
28
28
  describeWithBrowser('Chessboard play moves', browserContext => {
29
29
 
30
- function itCheckPlayMove(itemIndex, label, xFrom, yFrom, xTo, yTo, expectedText) {
31
- itCustom(browserContext, '08_chessboard_play_moves/base', itemIndex, label, async element => {
32
- const actions = browserContext.driver.actions({ async: true });
33
- const area = await element.getRect();
34
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
35
- await takeScreenshot(browserContext, label, element);
36
- await actions.release().perform();
37
- await compareScreenshot(browserContext, label);
38
- await compareSandbox(browserContext, expectedText);
39
- });
40
- }
30
+ function itCheckPlayMove(itemIndex, label, xFrom, yFrom, xTo, yTo, expectedText) {
31
+ itCustom(browserContext, '08_chessboard_play_moves/base', itemIndex, label, async element => {
32
+ const actions = browserContext.driver.actions({ async: true });
33
+ const area = await element.getRect();
34
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
35
+ await takeScreenshot(browserContext, label, element);
36
+ await actions.release().perform();
37
+ await compareScreenshot(browserContext, label);
38
+ await compareSandbox(browserContext, expectedText);
39
+ });
40
+ }
41
41
 
42
- itCheckPlayMove(0, 'regular move 1', 225, 335, 220, 225, 'move played: e4');
43
- itCheckPlayMove(1, 'regular move 2', 275, 225, 135, 85, 'move played: Bxf2+');
44
- itCheckPlayMove(1, 'castling move', 175, 375, 75, 375, 'move played: O-O');
45
- itCheckPlayMove(3, 'chess960 castling move 1', 275, 375, 75, 375, 'move played: O-O-O');
46
- itCheckPlayMove(3, 'chess960 castling move 2', 275, 375, 375, 375, 'move played: O-O');
47
- itCheckPlayMove(3, 'chess960 ambiguous king move', 275, 375, 320, 375, 'move played: Kg1');
42
+ itCheckPlayMove(0, 'regular move 1', 225, 335, 220, 225, 'move played: e4');
43
+ itCheckPlayMove(1, 'regular move 2', 275, 225, 135, 85, 'move played: Bxf2+');
44
+ itCheckPlayMove(1, 'castling move', 175, 375, 75, 375, 'move played: O-O');
45
+ itCheckPlayMove(3, 'chess960 castling move 1', 275, 375, 75, 375, 'move played: O-O-O');
46
+ itCheckPlayMove(3, 'chess960 castling move 2', 275, 375, 375, 375, 'move played: O-O');
47
+ itCheckPlayMove(3, 'chess960 ambiguous king move', 275, 375, 320, 375, 'move played: Kg1');
48
48
 
49
- function itCheckNonPlayMove(itemIndex, label, xFrom, yFrom, xTo, yTo) {
50
- itCustom(browserContext, '08_chessboard_play_moves/base', itemIndex, label, async element => {
51
- await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
52
- const actions = browserContext.driver.actions({ async: true });
53
- const area = await element.getRect();
54
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
55
- await takeScreenshot(browserContext, label, element);
56
- await actions.release().perform();
57
- await compareScreenshot(browserContext, label);
58
- await compareSandbox(browserContext, label);
59
- });
60
- }
49
+ function itCheckNonPlayMove(itemIndex, label, xFrom, yFrom, xTo, yTo) {
50
+ itCustom(browserContext, '08_chessboard_play_moves/base', itemIndex, label, async element => {
51
+ await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
52
+ const actions = browserContext.driver.actions({ async: true });
53
+ const area = await element.getRect();
54
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).perform();
55
+ await takeScreenshot(browserContext, label, element);
56
+ await actions.release().perform();
57
+ await compareScreenshot(browserContext, label);
58
+ await compareSandbox(browserContext, label);
59
+ });
60
+ }
61
61
 
62
- itCheckNonPlayMove(2, 'illegal position', 225, 325, 225, 225);
63
- itCheckNonPlayMove(0, 'wrong color moved', 75, 25, 125, 125);
64
- itCheckNonPlayMove(0, 'illegal move', 75, 375, 125, 225);
65
- itCheckNonPlayMove(0, 'from == to', 75, 375, 85, 365);
66
- itCheckNonPlayMove(0, 'out of board', 325, 375, 450, 285);
67
- itCheckNonPlayMove(3, 'chess960 non-KxR castling', 275, 375, 130, 375);
62
+ itCheckNonPlayMove(2, 'illegal position', 225, 325, 225, 225);
63
+ itCheckNonPlayMove(0, 'wrong color moved', 75, 25, 125, 125);
64
+ itCheckNonPlayMove(0, 'illegal move', 75, 375, 125, 225);
65
+ itCheckNonPlayMove(0, 'from == to', 75, 375, 85, 365);
66
+ itCheckNonPlayMove(0, 'out of board', 325, 375, 450, 285);
67
+ itCheckNonPlayMove(3, 'chess960 non-KxR castling', 275, 375, 130, 375);
68
68
 
69
- function itCheckPlayPromotion(itemIndex, label, xFrom, yFrom, xTo, yTo, xPromo, yPromo, expectedText) {
70
- itCustom(browserContext, '08_chessboard_play_moves/promotions', itemIndex, label, async element => {
71
- const actions = browserContext.driver.actions({ async: true });
72
- const area = await element.getRect();
73
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).release().perform();
74
- await takeScreenshot(browserContext, label, element);
75
- await actions.move({ x: area.x + xPromo, y: area.y + yPromo }).click().perform();
76
- await compareScreenshot(browserContext, label);
77
- await compareSandbox(browserContext, expectedText);
78
- });
79
- }
69
+ function itCheckPlayPromotion(itemIndex, label, xFrom, yFrom, xTo, yTo, xPromo, yPromo, expectedText) {
70
+ itCustom(browserContext, '08_chessboard_play_moves/promotions', itemIndex, label, async element => {
71
+ const actions = browserContext.driver.actions({ async: true });
72
+ const area = await element.getRect();
73
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).release().perform();
74
+ await takeScreenshot(browserContext, label, element);
75
+ await actions.move({ x: area.x + xPromo, y: area.y + yPromo }).click().perform();
76
+ await compareScreenshot(browserContext, label);
77
+ await compareSandbox(browserContext, expectedText);
78
+ });
79
+ }
80
80
 
81
- itCheckPlayPromotion(0, 'regular promotion 1', 75, 75, 75, 25, 60, 10, 'promotion move played: b8=Q');
82
- itCheckPlayPromotion(1, 'regular promotion 2', 75, 325, 25, 375, 15, 280, 'promotion move played: bxa1=B');
83
- itCheckPlayPromotion(2, 'antichess promotion', 325, 325, 325, 375, 325, 175, 'promotion move played: b8=K');
81
+ itCheckPlayPromotion(0, 'regular promotion 1', 75, 75, 75, 25, 60, 10, 'promotion move played: b8=Q');
82
+ itCheckPlayPromotion(1, 'regular promotion 2', 75, 325, 25, 375, 15, 280, 'promotion move played: bxa1=B');
83
+ itCheckPlayPromotion(2, 'antichess promotion', 325, 325, 325, 375, 325, 175, 'promotion move played: b8=K');
84
84
 
85
- function itCheckNonPlayPromotion(itemIndex, label, xFrom, yFrom, xTo, yTo, xPromo, yPromo) {
86
- itCustom(browserContext, '08_chessboard_play_moves/promotions', itemIndex, label, async element => {
87
- await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
88
- const actions = browserContext.driver.actions({ async: true });
89
- const area = await element.getRect();
90
- await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).release().perform();
91
- await takeScreenshot(browserContext, label, element);
92
- await actions.move({ x: area.x + xPromo, y: area.y + yPromo }).click().perform();
93
- await compareScreenshot(browserContext, label);
94
- await compareSandbox(browserContext, label);
95
- });
96
- }
85
+ function itCheckNonPlayPromotion(itemIndex, label, xFrom, yFrom, xTo, yTo, xPromo, yPromo) {
86
+ itCustom(browserContext, '08_chessboard_play_moves/promotions', itemIndex, label, async element => {
87
+ await setSandbox(browserContext, label); // can be any value as long as it is unique among other test-cases
88
+ const actions = browserContext.driver.actions({ async: true });
89
+ const area = await element.getRect();
90
+ await actions.move({ x: area.x + xFrom, y: area.y + yFrom }).press().move({ x: area.x + xTo, y: area.y + yTo }).release().perform();
91
+ await takeScreenshot(browserContext, label, element);
92
+ await actions.move({ x: area.x + xPromo, y: area.y + yPromo }).click().perform();
93
+ await compareScreenshot(browserContext, label);
94
+ await compareSandbox(browserContext, label);
95
+ });
96
+ }
97
97
 
98
- itCheckNonPlayPromotion(1, 'cancel promotion', 75, 325, 75, 375, 190, 220);
98
+ itCheckNonPlayPromotion(1, 'cancel promotion', 75, 325, 75, 375, 190, 220);
99
99
 
100
100
  });
@@ -27,26 +27,47 @@ const { describeWithBrowser, itCustom, itChecksScreenshots, takeScreenshot, comp
27
27
 
28
28
  describeWithBrowser('Chessboard on small-screens', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '09_chessboard_small_screens/base', [
31
- 'default',
32
- 'invalid limits',
33
- ]);
34
-
35
- function itCheckScreenshotWithWidth(width) {
36
- const label = `width ${width}`;
37
- itCustom(browserContext, '09_chessboard_small_screens/base', 0, label, async element => {
38
- await setWindowWidth(browserContext, width);
39
- await takeScreenshot(browserContext, label, element);
40
- await compareScreenshot(browserContext, label);
41
- });
42
- }
43
-
44
- itCheckScreenshotWithWidth(750);
45
- itCheckScreenshotWithWidth(740);
46
- itCheckScreenshotWithWidth(730);
47
- itCheckScreenshotWithWidth(720);
48
- itCheckScreenshotWithWidth(710);
49
- itCheckScreenshotWithWidth(700);
50
- itCheckScreenshotWithWidth(690);
30
+ itChecksScreenshots(browserContext, '09_chessboard_small_screens/base', [
31
+ 'default',
32
+ 'invalid limits',
33
+ ]);
34
+
35
+ function itCheckScreenshotWithWidth(width) {
36
+ const label = `width ${width}`;
37
+ itCustom(browserContext, '09_chessboard_small_screens/base', 0, label, async element => {
38
+ await setWindowWidth(browserContext, width);
39
+ await takeScreenshot(browserContext, label, element);
40
+ await compareScreenshot(browserContext, label);
41
+ });
42
+ }
43
+
44
+ itCheckScreenshotWithWidth(750);
45
+ itCheckScreenshotWithWidth(740);
46
+ itCheckScreenshotWithWidth(730);
47
+ itCheckScreenshotWithWidth(720);
48
+ itCheckScreenshotWithWidth(710);
49
+ itCheckScreenshotWithWidth(700);
50
+ itCheckScreenshotWithWidth(690);
51
+
52
+ });
53
+
54
+
55
+ describeWithBrowser('Chessboard on small-screens with top/bottom components', browserContext => {
56
+
57
+ itChecksScreenshots(browserContext, '09_chessboard_small_screens/top_bottom_components', [
58
+ 'default top component',
59
+ 'default bottom component',
60
+ ]);
61
+
62
+ function itCheckScreenshotWithReducedWidth(itemIndex, label) {
63
+ itCustom(browserContext, '09_chessboard_small_screens/top_bottom_components', itemIndex, label, async element => {
64
+ await setWindowWidth(browserContext, 700);
65
+ await takeScreenshot(browserContext, label, element);
66
+ await compareScreenshot(browserContext, label);
67
+ });
68
+ }
69
+
70
+ itCheckScreenshotWithReducedWidth(0, 'reduced top component');
71
+ itCheckScreenshotWithReducedWidth(1, 'reduced bottom component');
51
72
 
52
73
  });
@@ -27,36 +27,41 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Movetext graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '10_movetext_graphic/base', [
31
- 'game 1',
32
- 'game 2',
33
- 'game 3',
34
- 'game 4',
35
- ]);
36
-
37
- itChecksScreenshots(browserContext, '10_movetext_graphic/error', [
38
- 'wrong game index 1',
39
- 'wrong game index 2',
40
- 'pgn parsing error 1',
41
- 'pgn parsing error 2',
42
- 'wrong game type',
43
- 'wrong game index type',
44
- ]);
45
-
46
- itChecksScreenshots(browserContext, '10_movetext_graphic/html', [
47
- 'html in headers',
48
- 'html in comments',
49
- 'filtered tags and attributes',
50
- ]);
51
-
52
- itChecksScreenshots(browserContext, '10_movetext_graphic/options', [
53
- 'localized piece symbols',
54
- 'custom piece symbols',
55
- 'figurine piece symbols and diagram options',
56
- 'other diagram options',
57
- 'hidden diagrams',
58
- 'wrong diagram options 1',
59
- 'wrong diagram options 2',
60
- ]);
30
+ itChecksScreenshots(browserContext, '10_movetext_graphic/base', [
31
+ 'game 1',
32
+ 'game 2',
33
+ 'game 3',
34
+ 'game 4',
35
+ ]);
36
+
37
+ itChecksScreenshots(browserContext, '10_movetext_graphic/error', [
38
+ 'wrong game index 1',
39
+ 'wrong game index 2',
40
+ 'pgn parsing error 1',
41
+ 'pgn parsing error 2',
42
+ 'wrong game type',
43
+ 'wrong game index type',
44
+ ]);
45
+
46
+ itChecksScreenshots(browserContext, '10_movetext_graphic/html', [
47
+ 'html in headers',
48
+ 'html in comments',
49
+ 'filtered tags and attributes',
50
+ ]);
51
+
52
+ itChecksScreenshots(browserContext, '10_movetext_graphic/options', [
53
+ 'localized piece symbols',
54
+ 'custom piece symbols',
55
+ 'figurine piece symbols and diagram options',
56
+ 'other diagram options',
57
+ 'hidden diagrams',
58
+ 'wrong diagram options 1',
59
+ 'wrong diagram options 2',
60
+ 'wrong piece symbol value',
61
+ ]);
62
+
63
+ itChecksScreenshots(browserContext, '10_movetext_graphic/format_move', [
64
+ 'format text',
65
+ ]);
61
66
 
62
67
  });