kokopu-react 3.1.0 → 3.3.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 (236) hide show
  1. package/.eslintrc.yml +1 -1
  2. package/CHANGELOG.md +10 -0
  3. package/dist/lib/chessboard/BoardProperties.js.map +1 -1
  4. package/dist/lib/chessboard/Chessboard.css +13 -13
  5. package/dist/lib/chessboard/Chessboard.d.ts +27 -2
  6. package/dist/lib/chessboard/Chessboard.js +36 -17
  7. package/dist/lib/chessboard/Chessboard.js.map +1 -1
  8. package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
  9. package/dist/lib/chessboard/Draggable.js.map +1 -1
  10. package/dist/lib/chessboard/Motion.js.map +1 -1
  11. package/dist/lib/chessboard/colorsets.js.map +1 -1
  12. package/dist/lib/chessboard/piecesets.js.map +1 -1
  13. package/dist/lib/errorbox/ErrorBox.css +18 -18
  14. package/dist/lib/errorbox/ErrorBox.js.map +1 -1
  15. package/dist/lib/errorbox/parsing.js.map +1 -1
  16. package/dist/lib/exception.js.map +1 -1
  17. package/dist/lib/i18n.d.ts +1 -0
  18. package/dist/lib/i18n.js +1 -0
  19. package/dist/lib/i18n.js.map +1 -1
  20. package/dist/lib/icons/AnnotationSymbolShape.css +6 -6
  21. package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -1
  22. package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
  23. package/dist/lib/icons/ArrowTip.js.map +1 -1
  24. package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
  25. package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
  26. package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
  27. package/dist/lib/icons/arrow.css +1 -1
  28. package/dist/lib/index.d.ts +1 -0
  29. package/dist/lib/index.js +1 -0
  30. package/dist/lib/index.js.map +1 -1
  31. package/dist/lib/movetext/Movetext.css +27 -27
  32. package/dist/lib/movetext/Movetext.js.map +1 -1
  33. package/dist/lib/movetext/MovetextImpl.js.map +1 -1
  34. package/dist/lib/movetext/fonts.css +7 -7
  35. package/dist/lib/movetext/htmlFilter.js.map +1 -1
  36. package/dist/lib/movetext/moveFormatter.js.map +1 -1
  37. package/dist/lib/navigationboard/NavigationBoard.d.ts +68 -1
  38. package/dist/lib/navigationboard/NavigationBoard.js +141 -13
  39. package/dist/lib/navigationboard/NavigationBoard.js.map +1 -1
  40. package/dist/lib/navigationboard/NavigationButton.d.ts +66 -0
  41. package/dist/lib/navigationboard/NavigationButton.js +67 -0
  42. package/dist/lib/navigationboard/NavigationButton.js.map +1 -0
  43. package/dist/lib/navigationboard/NavigationField.css +7 -7
  44. package/dist/lib/navigationboard/NavigationField.js.map +1 -1
  45. package/dist/lib/navigationboard/NavigationToolbar.css +16 -13
  46. package/dist/lib/navigationboard/NavigationToolbar.d.ts +10 -10
  47. package/dist/lib/navigationboard/NavigationToolbar.js +61 -79
  48. package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -1
  49. package/dist/lib/navigationboard/iconPaths.d.ts +29 -0
  50. package/dist/lib/navigationboard/iconPaths.js +91 -0
  51. package/dist/lib/navigationboard/iconPaths.js.map +1 -0
  52. package/dist/lib/sanitization.js.map +1 -1
  53. package/dist/lib/types.js.map +1 -1
  54. package/dist/lib/util.js.map +1 -1
  55. package/doc_src/demo/PageChessboardBase.tsx +115 -115
  56. package/doc_src/demo/PageChessboardInteraction.tsx +303 -303
  57. package/doc_src/demo/PageChessboardMove.tsx +173 -173
  58. package/doc_src/demo/PageChessboardSmallScreens.tsx +94 -94
  59. package/doc_src/demo/PageMovetextBase.tsx +180 -180
  60. package/doc_src/demo/PageMovetextInteraction.tsx +123 -123
  61. package/doc_src/demo/PageNavigationBoardBase.tsx +144 -137
  62. package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +69 -69
  63. package/doc_src/demo/decs.d.ts +4 -4
  64. package/doc_src/demo/demo.css +12 -12
  65. package/doc_src/demo/util.ts +1 -1
  66. package/doc_src/examples/NavigationBoard.md +1 -1
  67. package/doc_src/theming/LogoRenderer.js +13 -13
  68. package/doc_src/theming/theming.css +5 -5
  69. package/package.json +95 -95
  70. package/scripts/doc.styleguide.config.js +131 -131
  71. package/scripts/doc.tsconfig.json +5 -5
  72. package/scripts/docker-compose.yml +1 -1
  73. package/scripts/test-graphic.tsconfig.json +5 -5
  74. package/scripts/test-graphic.webpack.config.js +57 -57
  75. package/scripts/test-headless.webpack.config.js +29 -29
  76. package/src/chessboard/BoardProperties.ts +68 -68
  77. package/src/chessboard/Chessboard.css +13 -13
  78. package/src/chessboard/Chessboard.tsx +436 -380
  79. package/src/chessboard/ChessboardImpl.tsx +557 -557
  80. package/src/chessboard/Draggable.tsx +185 -185
  81. package/src/chessboard/Motion.tsx +67 -67
  82. package/src/chessboard/colorsets.ts +66 -66
  83. package/src/chessboard/piecesets.ts +84 -84
  84. package/src/decs.d.ts +2 -2
  85. package/src/errorbox/ErrorBox.css +18 -18
  86. package/src/errorbox/ErrorBox.tsx +75 -75
  87. package/src/errorbox/parsing.tsx +95 -95
  88. package/src/exception.ts +17 -17
  89. package/src/i18n.ts +1 -0
  90. package/src/icons/AnnotationSymbolShape.css +6 -6
  91. package/src/icons/AnnotationSymbolShape.tsx +31 -31
  92. package/src/icons/ArrowMarkerIcon.tsx +34 -34
  93. package/src/icons/ArrowTip.tsx +14 -14
  94. package/src/icons/ChessPieceIcon.tsx +45 -45
  95. package/src/icons/SquareMarkerIcon.tsx +20 -20
  96. package/src/icons/TextMarkerIcon.tsx +29 -29
  97. package/src/icons/arrow.css +1 -1
  98. package/src/index.ts +3 -2
  99. package/src/movetext/Movetext.css +27 -27
  100. package/src/movetext/Movetext.tsx +158 -158
  101. package/src/movetext/MovetextImpl.tsx +345 -345
  102. package/src/movetext/fonts.css +7 -7
  103. package/src/movetext/htmlFilter.tsx +129 -129
  104. package/src/movetext/moveFormatter.tsx +37 -37
  105. package/src/navigationboard/NavigationBoard.tsx +386 -180
  106. package/src/navigationboard/NavigationButton.ts +114 -0
  107. package/src/navigationboard/NavigationField.css +7 -7
  108. package/src/navigationboard/NavigationField.tsx +90 -90
  109. package/src/navigationboard/NavigationToolbar.css +16 -13
  110. package/src/navigationboard/NavigationToolbar.tsx +98 -112
  111. package/src/navigationboard/iconPaths.ts +98 -0
  112. package/src/sanitization.ts +17 -17
  113. package/src/types.ts +116 -116
  114. package/src/util.ts +11 -11
  115. package/test/01_types.js +167 -167
  116. package/test/02_chessboard_util.js +191 -115
  117. package/test/03_error_box_graphic.js +16 -16
  118. package/test/04_icons_graphic.js +32 -32
  119. package/test/05_chessboard_graphic.js +60 -60
  120. package/test/06_chessboard_animation.js +36 -36
  121. package/test/07_chessboard_interaction.js +101 -101
  122. package/test/08_chessboard_play_moves.js +62 -62
  123. package/test/09_chessboard_small_screens.js +32 -32
  124. package/test/10_movetext_graphic.js +32 -32
  125. package/test/11_movetext_interaction.js +100 -100
  126. package/test/12_navigation_board_base.js +151 -0
  127. package/test/13_navigation_board_graphic.js +68 -0
  128. package/test/14_navigation_board_autoplay.js +100 -0
  129. package/test/common/graphic.js +106 -97
  130. package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
  131. package/test/graphic_references/{12_navigation_board/controlled/forbidden_navigation_1.png → 12_navigation_board_base/controlled/forbidden_navigation_0.png} +0 -0
  132. package/test/graphic_references/{12_navigation_board/controlled/invalid_node_id.png → 12_navigation_board_base/controlled/forbidden_navigation_1.png} +0 -0
  133. package/test/graphic_references/{12_navigation_board/controlled/forbidden_navigation_0.png → 12_navigation_board_base/controlled/invalid_node_id.png} +0 -0
  134. package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
  135. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/controlled/no_callback_defined_1.png +0 -0
  136. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/controlled/overriding_initial_node_id.png +0 -0
  137. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_1.png → 12_navigation_board_base/controlled/regular_navigation_0.png} +0 -0
  138. package/test/graphic_references/{12_navigation_board/uncontrolled/initial_state_at_specific_id.png → 12_navigation_board_base/controlled/regular_navigation_1.png} +0 -0
  139. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_3.png → 12_navigation_board_base/controlled/regular_navigation_2.png} +0 -0
  140. package/test/graphic_references/{12_navigation_board/controlled/regular_navigation_0.png → 12_navigation_board_base/controlled/regular_navigation_3.png} +0 -0
  141. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_2.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png} +0 -0
  142. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_0.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png} +0 -0
  143. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_beginning_1.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png} +0 -0
  144. package/test/graphic_references/{12_navigation_board/controlled/no_callback_defined_0.png → 12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png} +0 -0
  145. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
  146. package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
  147. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_at_end.png +0 -0
  148. package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
  149. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_default.png +0 -0
  150. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_default_with_game_index.png +0 -0
  151. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/initial_state_on_null-move.png +0 -0
  152. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_0.png +0 -0
  153. package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
  154. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_2.png +0 -0
  155. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_3.png +0 -0
  156. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/navigation_with_keys_4.png +0 -0
  157. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_flipping_0.png +0 -0
  158. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_flipping_1.png +0 -0
  159. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_0.png +0 -0
  160. package/test/graphic_references/{12_navigation_board/controlled/default.png → 12_navigation_board_base/uncontrolled/regular_navigation_1.png} +0 -0
  161. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_2.png +0 -0
  162. package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
  163. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_4.png +0 -0
  164. package/test/graphic_references/{12_navigation_board → 12_navigation_board_base}/uncontrolled/regular_navigation_5.png +0 -0
  165. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
  166. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
  167. package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
  168. package/test/graphic_references/{12_navigation_board/uncontrolled/regular_navigation_3.png → 13_navigation_board_graphic/additional_buttons/single_button.png} +0 -0
  169. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/custom_1.png +0 -0
  170. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/custom_2.png +0 -0
  171. package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/theme/large.png +0 -0
  172. package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
  173. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
  174. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
  175. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
  176. package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
  177. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_1.png → 14_navigation_board_autoplay/controlled/after_reaching_the_end.png} +0 -0
  178. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_2.png → 14_navigation_board_autoplay/controlled/already_at_the_end.png} +0 -0
  179. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
  180. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
  181. package/test/graphic_references/{12_navigation_board/uncontrolled/forbidden_navigation_at_end_0.png → 14_navigation_board_autoplay/controlled/initial_state_at_the_end.png} +0 -0
  182. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
  183. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
  184. package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
  185. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
  186. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
  187. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
  188. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
  189. package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
  190. package/test/graphic_references/{12_navigation_board/uncontrolled/navigation_with_keys_1.png → 14_navigation_board_autoplay/uncontrolled/initial_state_default.png} +0 -0
  191. package/test/graphic_test_app/03_error_box_graphic/base.tsx +14 -14
  192. package/test/graphic_test_app/03_error_box_graphic/localization.tsx +1 -1
  193. package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +7 -7
  194. package/test/graphic_test_app/04_icons_graphic/marker.tsx +15 -15
  195. package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -7
  196. package/test/graphic_test_app/05_chessboard_graphic/base.tsx +6 -6
  197. package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +7 -7
  198. package/test/graphic_test_app/05_chessboard_graphic/flipped.tsx +5 -5
  199. package/test/graphic_test_app/05_chessboard_graphic/move.tsx +12 -12
  200. package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +12 -12
  201. package/test/graphic_test_app/06_chessboard_animation/base_1.tsx +6 -6
  202. package/test/graphic_test_app/06_chessboard_animation/base_2.tsx +6 -6
  203. package/test/graphic_test_app/06_chessboard_animation/base_3.tsx +6 -6
  204. package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +16 -16
  205. package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +5 -5
  206. package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -4
  207. package/test/graphic_test_app/07_chessboard_interaction/error.tsx +2 -2
  208. package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +5 -5
  209. package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +8 -8
  210. package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +4 -4
  211. package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +9 -9
  212. package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +9 -9
  213. package/test/graphic_test_app/10_movetext_graphic/base.tsx +4 -4
  214. package/test/graphic_test_app/10_movetext_graphic/error.tsx +6 -6
  215. package/test/graphic_test_app/10_movetext_graphic/format_move.tsx +1 -1
  216. package/test/graphic_test_app/10_movetext_graphic/html.tsx +5 -5
  217. package/test/graphic_test_app/10_movetext_graphic/options.tsx +10 -10
  218. package/test/graphic_test_app/11_movetext_interaction/error.tsx +1 -1
  219. package/test/graphic_test_app/11_movetext_interaction/select_moves.tsx +11 -11
  220. package/test/graphic_test_app/{12_navigation_board → 12_navigation_board_base}/controlled.tsx +5 -5
  221. package/test/graphic_test_app/{12_navigation_board → 12_navigation_board_base}/uncontrolled.tsx +7 -7
  222. package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +49 -0
  223. package/test/graphic_test_app/{12_navigation_board → 13_navigation_board_graphic}/error.tsx +2 -2
  224. package/test/graphic_test_app/{12_navigation_board → 13_navigation_board_graphic}/theme.tsx +4 -4
  225. package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +73 -0
  226. package/test/graphic_test_app/14_navigation_board_autoplay/uncontrolled.tsx +34 -0
  227. package/test/graphic_test_app/common/decs.d.ts +2 -2
  228. package/test/graphic_test_app/common/test_app.css +15 -15
  229. package/test/graphic_test_app/common/test_app.tsx +48 -48
  230. package/tsconfig.json +13 -13
  231. package/test/12_navigation_board.js +0 -168
  232. package/test/graphic_references/12_navigation_board/controlled/regular_navigation_2.png +0 -0
  233. package/test/graphic_references/12_navigation_board/theme/small.png +0 -0
  234. package/test/graphic_references/12_navigation_board/uncontrolled/regular_navigation_1.png +0 -0
  235. /package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/error/pgn_parsing_error.png +0 -0
  236. /package/test/graphic_references/{12_navigation_board → 13_navigation_board_graphic}/error/wrong_game_type.png +0 -0
@@ -22,147 +22,223 @@
22
22
  * -------------------------------------------------------------------------- */
23
23
 
24
24
 
25
- const { exception, Chessboard } = require('../build/test_headless/index');
25
+ const { exception, Chessboard, NavigationBoard } = require('../build/test_headless/index');
26
26
  const test = require('unit.js');
27
27
 
28
28
 
29
29
  function itInvalidArgument(label, action) {
30
- it(label, () => { test.exception(action).isInstanceOf(exception.IllegalArgument); });
30
+ it(label, () => { test.exception(action).isInstanceOf(exception.IllegalArgument); });
31
31
  }
32
32
 
33
33
 
34
34
  describe('Chessboard.size()', () => {
35
35
 
36
- function itChessboardSize(label, expectedWidth, expectedHeight, attr) {
37
- it(label, () => {
38
- test.value(Chessboard.size(attr)).is({ width: expectedWidth, height: expectedHeight });
39
- });
40
- }
41
-
42
- itChessboardSize('Default', 374, 333);
43
- itChessboardSize('Square size 50', 467, 416, { squareSize: 50 });
44
- itChessboardSize('Default without coordinates', 364, 320, { coordinateVisible: false });
45
- itChessboardSize('Default without turn', 330, 333, { turnVisible: false });
46
- itChessboardSize('Default board only', 320, 320, { coordinateVisible: false, turnVisible: false });
47
-
48
- itInvalidArgument('Attribute not an object', () => Chessboard.size('not-an-object'));
49
- itInvalidArgument('Square size not an integer', () => Chessboard.size({ squareSize: 'not-an-integer' }));
50
- itInvalidArgument('Small-screen limits not an array', () => Chessboard.size({ smallScreenLimits: 'not-an-array' }));
51
- itInvalidArgument('Small-screen limit undefined', () => Chessboard.size({ smallScreenLimits: [ undefined ] }));
52
- itInvalidArgument('Small-screen limit null', () => Chessboard.size({ smallScreenLimits: [ null ] }));
53
- itInvalidArgument('Small-screen limit not-an-object', () => Chessboard.size({ smallScreenLimits: [ 'not-an-object' ] }));
36
+ function itChessboardSize(label, expectedWidth, expectedHeight, attr) {
37
+ it(label, () => {
38
+ test.value(Chessboard.size(attr)).is({ width: expectedWidth, height: expectedHeight });
39
+ });
40
+ }
41
+
42
+ itChessboardSize('Default', 374, 333);
43
+ itChessboardSize('Square size 50', 467, 416, { squareSize: 50 });
44
+ itChessboardSize('Default without coordinates', 364, 320, { coordinateVisible: false });
45
+ itChessboardSize('Default without turn', 330, 333, { turnVisible: false });
46
+ itChessboardSize('Default board only', 320, 320, { coordinateVisible: false, turnVisible: false });
47
+
48
+ function topComponent({ squareSize, coordinateVisible, turnVisible }) {
49
+ const width = squareSize * 20;
50
+ const height = (coordinateVisible ? 11 : 0) + (turnVisible ? 107 : 0);
51
+ return { width: width, height: height };
52
+ }
53
+
54
+ function bottomComponent({ squareSize, coordinateVisible, turnVisible }) {
55
+ const width = squareSize * 19;
56
+ const height = (coordinateVisible ? 3 : 0) + (turnVisible ? 157 : 0);
57
+ return { width: width, height: height };
58
+ }
59
+
60
+ itChessboardSize('With top component', 800, 451, { topComponent: topComponent });
61
+ itChessboardSize('With bottom component', 760, 493, { bottomComponent: bottomComponent });
62
+ itChessboardSize('With top & bottom components', 800, 611, { topComponent: topComponent, bottomComponent: bottomComponent });
63
+
64
+ itInvalidArgument('Attribute not an object', () => Chessboard.size('not-an-object'));
65
+ itInvalidArgument('Square size not an integer', () => Chessboard.size({ squareSize: 'not-an-integer' }));
66
+ itInvalidArgument('Small-screen limits not an array', () => Chessboard.size({ smallScreenLimits: 'not-an-array' }));
67
+ itInvalidArgument('Small-screen limit undefined', () => Chessboard.size({ smallScreenLimits: [ undefined ] }));
68
+ itInvalidArgument('Small-screen limit null', () => Chessboard.size({ smallScreenLimits: [ null ] }));
69
+ itInvalidArgument('Small-screen limit not-an-object', () => Chessboard.size({ smallScreenLimits: [ 'not-an-object' ] }));
70
+ });
71
+
72
+
73
+ describe('NavigationBoard.size()', () => {
74
+
75
+ function itNavigationBoardSize(label, expectedWidth, expectedHeight, attr) {
76
+ it(label, () => {
77
+ test.value(NavigationBoard.size(attr)).is({ width: expectedWidth, height: expectedHeight });
78
+ });
79
+ }
80
+
81
+ itNavigationBoardSize('Default', 374, 368);
82
+ itNavigationBoardSize('Minimal square size with all default buttons', 130, 121, {
83
+ squareSize: 12,
84
+ coordinateVisible: false,
85
+ turnVisible: false,
86
+ playButtonVisible: true,
87
+ flipButtonVisible: true,
88
+ });
89
+ itNavigationBoardSize('With additional buttons', 198, 188, {
90
+ squareSize: 20,
91
+ coordinateVisible: false,
92
+ turnVisible: false,
93
+ playButtonVisible: true,
94
+ flipButtonVisible: false,
95
+ additionalButtons: [ 'button', 'button', 'spacer', 'spacer', 'button' ],
96
+ });
97
+
98
+ itInvalidArgument('Attribute not an object', () => NavigationBoard.size('not-an-object'));
99
+ itInvalidArgument('Square size not an integer', () => NavigationBoard.size({ squareSize: 'not-an-integer' }));
100
+ itInvalidArgument('Additional buttons not an array', () => NavigationBoard.size({ additionalButtons: 'not-an-array' }));
101
+ itInvalidArgument('Additional buttons with invalid items', () => NavigationBoard.size({ additionalButtons: [ 'not-a-button-nor-a-spacer' ] }));
54
102
  });
55
103
 
56
104
 
57
105
  function testAdaptSquareSize(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits) {
58
106
 
59
- test.value(Chessboard.adaptSquareSize(width, height, {
60
- coordinateVisible: coordinateVisible,
61
- turnVisible: turnVisible,
62
- smallScreenLimits: smallScreenLimits,
63
- })).is(expectedSquareSize);
64
-
65
- const actualSize = Chessboard.size({
66
- squareSize: expectedSquareSize,
67
- coordinateVisible: coordinateVisible,
68
- turnVisible: turnVisible,
69
- smallScreenLimits: smallScreenLimits,
70
- });
71
- test.value(actualSize.width <= width && actualSize.height <= height).isTrue();
107
+ test.value(Chessboard.adaptSquareSize(width, height, {
108
+ coordinateVisible: coordinateVisible,
109
+ turnVisible: turnVisible,
110
+ smallScreenLimits: smallScreenLimits,
111
+ })).is(expectedSquareSize);
112
+
113
+ const actualSize = Chessboard.size({
114
+ squareSize: expectedSquareSize,
115
+ coordinateVisible: coordinateVisible,
116
+ turnVisible: turnVisible,
117
+ smallScreenLimits: smallScreenLimits,
118
+ });
119
+ test.value(actualSize.width <= width && actualSize.height <= height).isTrue();
72
120
  }
73
121
 
74
122
 
75
123
  function testAdaptSquareSizeWithIncrement(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits) {
76
- testAdaptSquareSize(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits);
77
-
78
- const actualSizeIncremented = Chessboard.size({
79
- squareSize: expectedSquareSize + 1,
80
- coordinateVisible: coordinateVisible,
81
- turnVisible: turnVisible,
82
- smallScreenLimits: smallScreenLimits,
83
- });
84
- test.value(actualSizeIncremented.width > width || actualSizeIncremented.height > height).isTrue();
124
+ testAdaptSquareSize(expectedSquareSize, width, height, coordinateVisible, turnVisible, smallScreenLimits);
125
+
126
+ const actualSizeIncremented = Chessboard.size({
127
+ squareSize: expectedSquareSize + 1,
128
+ coordinateVisible: coordinateVisible,
129
+ turnVisible: turnVisible,
130
+ smallScreenLimits: smallScreenLimits,
131
+ });
132
+ test.value(actualSizeIncremented.width > width || actualSizeIncremented.height > height).isTrue();
85
133
  }
86
134
 
87
135
 
88
136
  describe('Adapt square-size', () => {
89
137
 
90
- it('Very small', () => { test.value(Chessboard.adaptSquareSize(10, 10, { coordinateVisible: false, turnVisible: false })).is(Chessboard.minSquareSize()); });
91
- it('Very large', () => { test.value(Chessboard.adaptSquareSize(9999, 9999)).is(Chessboard.maxSquareSize()); });
92
-
93
- it('Size 185x300 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(19, 185, 300, true, true));
94
- it('Size 185x300 without coordinates', () => testAdaptSquareSizeWithIncrement(20, 185, 300, false, true));
95
- it('Size 185x300 without turn', () => testAdaptSquareSizeWithIncrement(22, 185, 300, true, false));
96
- it('Size 185x300 board only', () => testAdaptSquareSizeWithIncrement(23, 185, 300, false, false));
97
-
98
- it('Size 300x200 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, true));
99
- it('Size 300x200 without coordinates', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, true));
100
- it('Size 300x200 without turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, false));
101
- it('Size 300x200 board only', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, false));
102
-
103
- it('Size 375x500 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(40, 375, 500, true, true));
104
- it('Size 375x500 without coordinates', () => testAdaptSquareSizeWithIncrement(41, 375, 500, false, true));
105
- it('Size 375x500 without turn', () => testAdaptSquareSizeWithIncrement(45, 375, 500, true, false));
106
- it('Size 375x500 board only', () => testAdaptSquareSizeWithIncrement(46, 375, 500, false, false));
107
-
108
- it('Size 600x450 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, true));
109
- it('Size 600x450 without coordinates', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, true));
110
- it('Size 600x450 without turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, false));
111
- it('Size 600x450 board only', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, false));
112
-
113
- itInvalidArgument('Width <null>', () => Chessboard.adaptSquareSize(null, 400));
114
- itInvalidArgument('Width not-a-number', () => Chessboard.adaptSquareSize('500', 400));
115
- itInvalidArgument('Height <undefined>', () => Chessboard.adaptSquareSize(500, undefined));
116
- itInvalidArgument('Height object', () => Chessboard.adaptSquareSize(500, {}));
117
- itInvalidArgument('Attribute not-an-object', () => Chessboard.adaptSquareSize(500, 400, 'not-an-object'));
118
- itInvalidArgument('Small-screen limits not-an-array', () => Chessboard.adaptSquareSize(500, 400, { smallScreenLimits: 'not-an-array' }));
138
+ it('Very small', () => { test.value(Chessboard.adaptSquareSize(10, 10, { coordinateVisible: false, turnVisible: false })).is(Chessboard.minSquareSize()); });
139
+ it('Very large', () => { test.value(Chessboard.adaptSquareSize(9999, 9999)).is(Chessboard.maxSquareSize()); });
140
+
141
+ it('Size 185x300 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(19, 185, 300, true, true));
142
+ it('Size 185x300 without coordinates', () => testAdaptSquareSizeWithIncrement(20, 185, 300, false, true));
143
+ it('Size 185x300 without turn', () => testAdaptSquareSizeWithIncrement(22, 185, 300, true, false));
144
+ it('Size 185x300 board only', () => testAdaptSquareSizeWithIncrement(23, 185, 300, false, false));
145
+
146
+ it('Size 300x200 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, true));
147
+ it('Size 300x200 without coordinates', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, true));
148
+ it('Size 300x200 without turn', () => testAdaptSquareSizeWithIncrement(23, 300, 200, true, false));
149
+ it('Size 300x200 board only', () => testAdaptSquareSizeWithIncrement(25, 300, 200, false, false));
150
+
151
+ it('Size 375x500 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(40, 375, 500, true, true));
152
+ it('Size 375x500 without coordinates', () => testAdaptSquareSizeWithIncrement(41, 375, 500, false, true));
153
+ it('Size 375x500 without turn', () => testAdaptSquareSizeWithIncrement(45, 375, 500, true, false));
154
+ it('Size 375x500 board only', () => testAdaptSquareSizeWithIncrement(46, 375, 500, false, false));
155
+
156
+ it('Size 600x450 with coordinates & turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, true));
157
+ it('Size 600x450 without coordinates', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, true));
158
+ it('Size 600x450 without turn', () => testAdaptSquareSizeWithIncrement(54, 600, 450, true, false));
159
+ it('Size 600x450 board only', () => testAdaptSquareSizeWithIncrement(56, 600, 450, false, false));
160
+
161
+ itInvalidArgument('Width <null>', () => Chessboard.adaptSquareSize(null, 400));
162
+ itInvalidArgument('Width not-a-number', () => Chessboard.adaptSquareSize('500', 400));
163
+ itInvalidArgument('Height <undefined>', () => Chessboard.adaptSquareSize(500, undefined));
164
+ itInvalidArgument('Height object', () => Chessboard.adaptSquareSize(500, {}));
165
+ itInvalidArgument('Attribute not-an-object', () => Chessboard.adaptSquareSize(500, 400, 'not-an-object'));
166
+ itInvalidArgument('Small-screen limits not-an-array', () => Chessboard.adaptSquareSize(500, 400, { smallScreenLimits: 'not-an-array' }));
167
+ });
168
+
169
+
170
+ describe('Adapt square-size (NavigationBoard)', () => {
171
+
172
+ function itAdaptSquareSize(label, width, height, attributes, expectedSquareSize) {
173
+ it(label, () => {
174
+ test.value(NavigationBoard.adaptSquareSize(width, height, attributes)).is(expectedSquareSize);
175
+
176
+ const actualSizeIncremented = NavigationBoard.size({
177
+ ...attributes,
178
+ squareSize: expectedSquareSize + 1,
179
+ });
180
+ test.value(actualSizeIncremented.width > width || actualSizeIncremented.height > height).isTrue();
181
+ });
182
+ }
183
+
184
+ itAdaptSquareSize('Size 300x300 (default)', 300, 300, {}, 32);
185
+ itAdaptSquareSize('Size 136x200 (with play button)', 136, 200, { coordinateVisible: false, turnVisible: false, playButtonVisible: true }, 15);
186
+ itAdaptSquareSize('Size 136x200 (with minimal buttons)', 136, 200, { coordinateVisible: false, turnVisible: false, flipButtonVisible: false }, 17);
187
+
188
+ itInvalidArgument('Width <null>', () => NavigationBoard.adaptSquareSize(null, 400));
189
+ itInvalidArgument('Width not-a-number', () => NavigationBoard.adaptSquareSize('500', 400));
190
+ itInvalidArgument('Height <undefined>', () => NavigationBoard.adaptSquareSize(500, undefined));
191
+ itInvalidArgument('Height object', () => NavigationBoard.adaptSquareSize(500, {}));
192
+ itInvalidArgument('Attribute not-an-object', () => NavigationBoard.adaptSquareSize(500, 400, 'not-an-object'));
193
+ itInvalidArgument('Additional buttons not an array', () => NavigationBoard.adaptSquareSize(500, 400, { additionalButtons: 'not-an-array' }));
194
+ itInvalidArgument('Small-screen limits not-an-array', () => NavigationBoard.adaptSquareSize(500, 400, { smallScreenLimits: 'not-an-array' }));
119
195
  });
120
196
 
121
197
 
122
198
  describe('Adapt square-size with small-screen limits', () => {
123
199
 
124
- const limits = [
125
- { width: 540, squareSize: 24, turnVisible: false },
126
- { width: 620, squareSize: 28, coordinateVisible: false },
127
- { width: 730, squareSize: 32 },
128
- { width: 860, squareSize: 48 },
129
- ];
130
-
131
- before(() => {
132
- global.window = {};
133
- });
134
- after(() => {
135
- delete global.window;
136
- });
137
-
138
- it('Window-limited', () => {
139
- window.innerWidth = 640;
140
- testAdaptSquareSize(32, 9999, 9999, true, true, limits);
141
- });
142
-
143
- it('Available-space-limited with coordinates & turn', () => {
144
- window.innerWidth = 800;
145
- testAdaptSquareSize(40, 375, 500, true, true, limits);
146
- });
147
- it('Available-space-limited without coordinates', () => {
148
- window.innerWidth = 800;
149
- testAdaptSquareSize(41, 375, 500, false, true, limits);
150
- });
151
- it('Available-space-limited without turn', () => {
152
- window.innerWidth = 800;
153
- testAdaptSquareSize(45, 375, 500, true, false, limits);
154
- });
155
- it('Available-space-limited board only', () => {
156
- window.innerWidth = 800;
157
- testAdaptSquareSize(46, 375, 500, false, false, limits);
158
- });
159
-
160
- it('Force hidden coordinates', () => {
161
- window.innerWidth = 600;
162
- testAdaptSquareSize(20, 185, 300, true, true, limits);
163
- });
164
- it('Force hidden coordinates & turn', () => {
165
- window.innerWidth = 500;
166
- testAdaptSquareSize(23, 185, 300, true, true, limits);
167
- });
200
+ const limits = [
201
+ { width: 540, squareSize: 24, turnVisible: false },
202
+ { width: 620, squareSize: 28, coordinateVisible: false },
203
+ { width: 730, squareSize: 32 },
204
+ { width: 860, squareSize: 48 },
205
+ ];
206
+
207
+ before(() => {
208
+ global.window = {};
209
+ });
210
+ after(() => {
211
+ delete global.window;
212
+ });
213
+
214
+ it('Window-limited', () => {
215
+ window.innerWidth = 640;
216
+ testAdaptSquareSize(32, 9999, 9999, true, true, limits);
217
+ });
218
+
219
+ it('Available-space-limited with coordinates & turn', () => {
220
+ window.innerWidth = 800;
221
+ testAdaptSquareSize(40, 375, 500, true, true, limits);
222
+ });
223
+ it('Available-space-limited without coordinates', () => {
224
+ window.innerWidth = 800;
225
+ testAdaptSquareSize(41, 375, 500, false, true, limits);
226
+ });
227
+ it('Available-space-limited without turn', () => {
228
+ window.innerWidth = 800;
229
+ testAdaptSquareSize(45, 375, 500, true, false, limits);
230
+ });
231
+ it('Available-space-limited board only', () => {
232
+ window.innerWidth = 800;
233
+ testAdaptSquareSize(46, 375, 500, false, false, limits);
234
+ });
235
+
236
+ it('Force hidden coordinates', () => {
237
+ window.innerWidth = 600;
238
+ testAdaptSquareSize(20, 185, 300, true, true, limits);
239
+ });
240
+ it('Force hidden coordinates & turn', () => {
241
+ window.innerWidth = 500;
242
+ testAdaptSquareSize(23, 185, 300, true, true, limits);
243
+ });
168
244
  });
@@ -27,22 +27,22 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Error box graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '03_error_box_graphic/base', [
31
- 'minimal',
32
- 'full',
33
- 'missing error index',
34
- 'missing error text',
35
- 'negative error index',
36
- 'too large error index',
37
- 'error index not integer',
38
- 'cut end of text',
39
- 'cut beginning of text',
40
- 'cut on line breaks',
41
- 'single character text',
42
- ]);
30
+ itChecksScreenshots(browserContext, '03_error_box_graphic/base', [
31
+ 'minimal',
32
+ 'full',
33
+ 'missing error index',
34
+ 'missing error text',
35
+ 'negative error index',
36
+ 'too large error index',
37
+ 'error index not integer',
38
+ 'cut end of text',
39
+ 'cut beginning of text',
40
+ 'cut on line breaks',
41
+ 'single character text',
42
+ ]);
43
43
 
44
- itChecksScreenshots(browserContext, '03_error_box_graphic/localization', [
45
- 'default'
46
- ]);
44
+ itChecksScreenshots(browserContext, '03_error_box_graphic/localization', [
45
+ 'default'
46
+ ]);
47
47
 
48
48
  });
@@ -27,37 +27,37 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Icons graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '04_icons_graphic/marker', [
31
-
32
- 'default square',
33
- 'colorized square',
34
- 'wrapped square',
35
- 'invalid square size',
36
-
37
- 'default text',
38
- 'colorized text',
39
- 'wrapped text',
40
- 'colorized symbol',
41
- 'wrapped symbol',
42
- 'invalid text size',
43
- 'invalid symbol',
44
-
45
- 'default arrow',
46
- 'colorized arrow',
47
- 'wrapped arrow',
48
- 'invalid arrow size',
49
- ]);
50
-
51
- itChecksScreenshots(browserContext, '04_icons_graphic/chess_piece', [
52
-
53
- 'single piece',
54
- 'multiple pieces',
55
- 'customized pieceset',
56
-
57
- 'invalid size',
58
- 'invalid single piece',
59
- 'invalid multiple pieces',
60
- 'invalid pieceset',
61
- ]);
30
+ itChecksScreenshots(browserContext, '04_icons_graphic/marker', [
31
+
32
+ 'default square',
33
+ 'colorized square',
34
+ 'wrapped square',
35
+ 'invalid square size',
36
+
37
+ 'default text',
38
+ 'colorized text',
39
+ 'wrapped text',
40
+ 'colorized symbol',
41
+ 'wrapped symbol',
42
+ 'invalid text size',
43
+ 'invalid symbol',
44
+
45
+ 'default arrow',
46
+ 'colorized arrow',
47
+ 'wrapped arrow',
48
+ 'invalid arrow size',
49
+ ]);
50
+
51
+ itChecksScreenshots(browserContext, '04_icons_graphic/chess_piece', [
52
+
53
+ 'single piece',
54
+ 'multiple pieces',
55
+ 'customized pieceset',
56
+
57
+ 'invalid size',
58
+ 'invalid single piece',
59
+ 'invalid multiple pieces',
60
+ 'invalid pieceset',
61
+ ]);
62
62
 
63
63
  });
@@ -27,70 +27,70 @@ const { describeWithBrowser, itChecksScreenshots } = require('./common/graphic')
27
27
 
28
28
  describeWithBrowser('Chessboard graphic', browserContext => {
29
29
 
30
- itChecksScreenshots(browserContext, '05_chessboard_graphic/base', [
31
- 'default',
32
- 'empty',
33
- 'parsing error',
34
- 'from FEN',
35
- 'from Kokopu object',
36
- 'wrong position type',
37
- ]);
30
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/base', [
31
+ 'default',
32
+ 'empty',
33
+ 'parsing error',
34
+ 'from FEN',
35
+ 'from Kokopu object',
36
+ 'wrong position type',
37
+ ]);
38
38
 
39
- itChecksScreenshots(browserContext, '05_chessboard_graphic/flipped', [
40
- 'default',
41
- 'empty',
42
- 'parsing error',
43
- 'from FEN',
44
- 'from Kokopu object',
45
- ]);
39
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/flipped', [
40
+ 'default',
41
+ 'empty',
42
+ 'parsing error',
43
+ 'from FEN',
44
+ 'from Kokopu object',
45
+ ]);
46
46
 
47
- itChecksScreenshots(browserContext, '05_chessboard_graphic/annotations', [
48
- 'with coordinates',
49
- 'with coordinates and flip',
50
- 'without coordinates',
51
- 'without coordinates and flip',
52
- 'overlap',
53
- 'overlap and flip',
54
- ]);
47
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/annotations', [
48
+ 'with coordinates',
49
+ 'with coordinates and flip',
50
+ 'without coordinates',
51
+ 'without coordinates and flip',
52
+ 'overlap',
53
+ 'overlap and flip',
54
+ ]);
55
55
 
56
- itChecksScreenshots(browserContext, '05_chessboard_graphic/move', [
57
- 'default',
58
- 'no move arrow',
59
- 'parsing error',
60
- 'with forced move arrow and flip',
61
- 'capture',
62
- 'castling move',
63
- 'en-passant',
64
- 'promotion',
65
- 'wrong move type',
66
- 'wrong move arrow color type',
67
- 'null-move',
68
- 'illegal null-move',
69
- ]);
56
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/move', [
57
+ 'default',
58
+ 'no move arrow',
59
+ 'parsing error',
60
+ 'with forced move arrow and flip',
61
+ 'capture',
62
+ 'castling move',
63
+ 'en-passant',
64
+ 'promotion',
65
+ 'wrong move type',
66
+ 'wrong move arrow color type',
67
+ 'null-move',
68
+ 'illegal null-move',
69
+ ]);
70
70
 
71
- itChecksScreenshots(browserContext, '05_chessboard_graphic/theme', [
72
- 'default',
73
- 'large',
74
- 'small',
75
- 'custom 1',
76
- 'custom 2',
77
- 'custom 3',
78
- 'custom 4',
79
- 'custom 5',
80
- 'custom 6',
81
- 'wrong square size type',
82
- 'wrong colorset',
83
- 'wrong pieceset',
84
- ]);
71
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/theme', [
72
+ 'default',
73
+ 'large',
74
+ 'small',
75
+ 'custom 1',
76
+ 'custom 2',
77
+ 'custom 3',
78
+ 'custom 4',
79
+ 'custom 5',
80
+ 'custom 6',
81
+ 'wrong square size type',
82
+ 'wrong colorset',
83
+ 'wrong pieceset',
84
+ ]);
85
85
 
86
- itChecksScreenshots(browserContext, '05_chessboard_graphic/chess_variants', [
87
- 'chess960',
88
- 'chess960 with move',
89
- 'variant without std initial position',
90
- 'variant with std initial position',
91
- 'special code',
92
- 'invalid variant',
93
- 'invalid variant with FEN',
94
- ]);
86
+ itChecksScreenshots(browserContext, '05_chessboard_graphic/chess_variants', [
87
+ 'chess960',
88
+ 'chess960 with move',
89
+ 'variant without std initial position',
90
+ 'variant with std initial position',
91
+ 'special code',
92
+ 'invalid variant',
93
+ 'invalid variant with FEN',
94
+ ]);
95
95
 
96
96
  });