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.
- package/.eslintrc.yml +1 -1
- package/CHANGELOG.md +13 -1
- package/dist/lib/chessboard/BoardProperties.d.ts +91 -0
- package/dist/lib/chessboard/BoardProperties.js +43 -0
- package/dist/lib/chessboard/BoardProperties.js.map +1 -0
- package/dist/lib/chessboard/Chessboard.css +13 -13
- package/dist/lib/chessboard/Chessboard.d.ts +14 -58
- package/dist/lib/chessboard/Chessboard.js +26 -92
- package/dist/lib/chessboard/Chessboard.js.map +1 -1
- package/dist/lib/chessboard/ChessboardImpl.js.map +1 -1
- package/dist/lib/chessboard/Draggable.js.map +1 -1
- package/dist/lib/chessboard/Motion.js.map +1 -1
- package/dist/lib/chessboard/colorsets.js.map +1 -1
- package/dist/lib/chessboard/piecesets.js.map +1 -1
- package/dist/lib/errorbox/ErrorBox.css +18 -18
- package/dist/lib/errorbox/ErrorBox.js.map +1 -1
- package/dist/lib/errorbox/parsing.d.ts +57 -0
- package/dist/lib/errorbox/parsing.js +140 -0
- package/dist/lib/errorbox/parsing.js.map +1 -0
- package/dist/lib/exception.js.map +1 -1
- package/dist/lib/i18n.d.ts +6 -0
- package/dist/lib/i18n.js +7 -0
- package/dist/lib/i18n.js.map +1 -1
- package/dist/lib/icons/AnnotationSymbolShape.css +6 -6
- package/dist/lib/icons/AnnotationSymbolShape.js.map +1 -1
- package/dist/lib/icons/ArrowMarkerIcon.js.map +1 -1
- package/dist/lib/icons/ArrowTip.js.map +1 -1
- package/dist/lib/icons/ChessPieceIcon.js.map +1 -1
- package/dist/lib/icons/SquareMarkerIcon.js.map +1 -1
- package/dist/lib/icons/TextMarkerIcon.js.map +1 -1
- package/dist/lib/icons/arrow.css +1 -1
- package/dist/lib/index.d.ts +5 -1
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/movetext/Movetext.css +27 -40
- package/dist/lib/movetext/Movetext.d.ts +9 -43
- package/dist/lib/movetext/Movetext.js +15 -67
- package/dist/lib/movetext/Movetext.js.map +1 -1
- package/dist/lib/movetext/MovetextImpl.d.ts +7 -28
- package/dist/lib/movetext/MovetextImpl.js +15 -94
- package/dist/lib/movetext/MovetextImpl.js.map +1 -1
- package/dist/lib/movetext/fonts.css +7 -7
- package/dist/lib/movetext/htmlFilter.js.map +1 -1
- package/dist/lib/movetext/moveFormatter.js.map +1 -1
- package/dist/lib/navigationboard/NavigationBoard.d.ts +156 -0
- package/dist/lib/navigationboard/NavigationBoard.js +195 -0
- package/dist/lib/navigationboard/NavigationBoard.js.map +1 -0
- package/dist/lib/navigationboard/NavigationButton.d.ts +54 -0
- package/dist/lib/navigationboard/NavigationButton.js +35 -0
- package/dist/lib/navigationboard/NavigationButton.js.map +1 -0
- package/dist/lib/navigationboard/NavigationField.css +36 -0
- package/dist/lib/navigationboard/NavigationField.d.ts +81 -0
- package/dist/lib/navigationboard/NavigationField.js +154 -0
- package/dist/lib/navigationboard/NavigationField.js.map +1 -0
- package/dist/lib/navigationboard/NavigationToolbar.css +54 -0
- package/dist/lib/navigationboard/NavigationToolbar.d.ts +34 -0
- package/dist/lib/navigationboard/NavigationToolbar.js +73 -0
- package/dist/lib/navigationboard/NavigationToolbar.js.map +1 -0
- package/dist/lib/navigationboard/iconPaths.d.ts +29 -0
- package/dist/lib/navigationboard/iconPaths.js +91 -0
- package/dist/lib/navigationboard/iconPaths.js.map +1 -0
- package/dist/lib/sanitization.js.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/util.js.map +1 -1
- package/doc_src/demo/PageChessboardBase.tsx +115 -115
- package/doc_src/demo/PageChessboardInteraction.tsx +303 -303
- package/doc_src/demo/PageChessboardMove.tsx +173 -156
- package/doc_src/demo/PageChessboardSmallScreens.tsx +94 -94
- package/doc_src/demo/PageMovetextBase.tsx +180 -180
- package/doc_src/demo/PageMovetextInteraction.tsx +123 -123
- package/doc_src/demo/PageNavigationBoardBase.tsx +201 -0
- package/doc_src/demo/PageNavigationBoardUncontrolledVsControlled.tsx +114 -0
- package/doc_src/demo/decs.d.ts +4 -4
- package/doc_src/demo/demo.css +12 -12
- package/doc_src/demo/game-3.pgn +10 -0
- package/doc_src/demo/util.ts +1 -1
- package/doc_src/examples/Movetext.md +1 -1
- package/doc_src/examples/NavigationBoard.md +15 -0
- package/doc_src/theming/LogoRenderer.js +13 -13
- package/doc_src/theming/theming.css +5 -5
- package/package.json +95 -95
- package/scripts/doc.styleguide.config.js +133 -123
- package/scripts/doc.tsconfig.json +5 -5
- package/scripts/docker-compose.yml +1 -1
- package/scripts/test-graphic.tsconfig.json +5 -5
- package/scripts/test-graphic.webpack.config.js +57 -57
- package/scripts/test-headless.webpack.config.js +29 -29
- package/src/chessboard/BoardProperties.ts +131 -0
- package/src/chessboard/Chessboard.css +13 -13
- package/src/chessboard/Chessboard.tsx +389 -518
- package/src/chessboard/ChessboardImpl.tsx +557 -557
- package/src/chessboard/Draggable.tsx +185 -185
- package/src/chessboard/Motion.tsx +67 -67
- package/src/chessboard/colorsets.ts +66 -66
- package/src/chessboard/piecesets.ts +84 -84
- package/src/decs.d.ts +2 -2
- package/src/errorbox/ErrorBox.css +18 -18
- package/src/errorbox/ErrorBox.tsx +75 -75
- package/src/errorbox/parsing.tsx +158 -0
- package/src/exception.ts +17 -17
- package/src/i18n.ts +8 -0
- package/src/icons/AnnotationSymbolShape.css +6 -6
- package/src/icons/AnnotationSymbolShape.tsx +31 -31
- package/src/icons/ArrowMarkerIcon.tsx +34 -34
- package/src/icons/ArrowTip.tsx +14 -14
- package/src/icons/ChessPieceIcon.tsx +45 -45
- package/src/icons/SquareMarkerIcon.tsx +20 -20
- package/src/icons/TextMarkerIcon.tsx +29 -29
- package/src/icons/arrow.css +1 -1
- package/src/index.ts +8 -3
- package/src/movetext/Movetext.css +27 -40
- package/src/movetext/Movetext.tsx +163 -228
- package/src/movetext/MovetextImpl.tsx +351 -438
- package/src/movetext/fonts.css +7 -7
- package/src/movetext/htmlFilter.tsx +129 -129
- package/src/movetext/moveFormatter.tsx +37 -37
- package/src/navigationboard/NavigationBoard.tsx +350 -0
- package/src/navigationboard/NavigationButton.ts +72 -0
- package/src/navigationboard/NavigationField.css +36 -0
- package/src/navigationboard/NavigationField.tsx +185 -0
- package/src/navigationboard/NavigationToolbar.css +54 -0
- package/src/navigationboard/NavigationToolbar.tsx +117 -0
- package/src/navigationboard/iconPaths.ts +98 -0
- package/src/sanitization.ts +17 -17
- package/src/types.ts +116 -116
- package/src/util.ts +11 -11
- package/test/01_types.js +167 -167
- package/test/02_chessboard_util.js +114 -114
- package/test/03_error_box_graphic.js +16 -16
- package/test/04_icons_graphic.js +32 -32
- package/test/05_chessboard_graphic.js +60 -58
- package/test/06_chessboard_animation.js +36 -36
- package/test/07_chessboard_interaction.js +101 -101
- package/test/08_chessboard_play_moves.js +62 -62
- package/test/09_chessboard_small_screens.js +42 -21
- package/test/10_movetext_graphic.js +36 -31
- package/test/11_movetext_interaction.js +100 -96
- package/test/12_navigation_board_base.js +151 -0
- package/test/13_navigation_board_graphic.js +68 -0
- package/test/14_navigation_board_autoplay.js +100 -0
- package/test/common/graphic.js +106 -97
- package/test/graphic_references/05_chessboard_graphic/move/illegal_null-move.png +0 -0
- package/test/graphic_references/05_chessboard_graphic/move/null-move.png +0 -0
- package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_bottom_component.png +0 -0
- package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/default_top_component.png +0 -0
- package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_bottom_component.png +0 -0
- package/test/graphic_references/09_chessboard_small_screens/top_bottom_components/reduced_top_component.png +0 -0
- package/test/graphic_references/10_movetext_graphic/format_move/format_text.png +0 -0
- package/test/graphic_references/10_movetext_graphic/options/wrong_piece_symbol_value.png +0 -0
- package/test/graphic_references/11_movetext_interaction/select_moves/click_on_unselected_without_callback.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/default.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/forbidden_navigation_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/invalid_node_id.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/no_callback_defined_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/overriding_initial_node_id.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_2.png +0 -0
- package/test/graphic_references/12_navigation_board_base/controlled/regular_navigation_3.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_beginning_2.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/forbidden_navigation_at_end_2.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_end.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_at_specific_id.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_default_with_game_index.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/initial_state_on_null-move.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_2.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_3.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/navigation_with_keys_4.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_flipping_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_0.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_1.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_2.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_3.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_4.png +0 -0
- package/test/graphic_references/12_navigation_board_base/uncontrolled/regular_navigation_5.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_1.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/additional_buttons/error_2.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/additional_buttons/multiple_buttons.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/additional_buttons/single_button.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/error/pgn_parsing_error.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/error/wrong_game_type.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/theme/custom_1.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/theme/custom_2.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/theme/large.png +0 -0
- package/test/graphic_references/13_navigation_board_graphic/theme/small.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_acknowledging_is-playing_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/after_1_move_not_acknowledging_is-playing_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_acknowledging_node_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/after_2_moves_not_acknowledging_node_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/after_reaching_the_end.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/already_at_the_end.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_is-playing_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_acknowledging_node_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_at_the_end.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_close_to_end.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_is-playing_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/controlled/initial_state_not_acknowledging_node_changes.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_after_stop.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_2_moves_from_beginning_before_stop.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_after_stop.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/after_reaching_the_end_before_stop.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_close_to_end.png +0 -0
- package/test/graphic_references/14_navigation_board_autoplay/uncontrolled/initial_state_default.png +0 -0
- package/test/graphic_test_app/03_error_box_graphic/base.tsx +14 -14
- package/test/graphic_test_app/03_error_box_graphic/localization.tsx +1 -1
- package/test/graphic_test_app/04_icons_graphic/chess_piece.tsx +7 -7
- package/test/graphic_test_app/04_icons_graphic/marker.tsx +15 -15
- package/test/graphic_test_app/05_chessboard_graphic/annotations.tsx +7 -7
- package/test/graphic_test_app/05_chessboard_graphic/base.tsx +6 -6
- package/test/graphic_test_app/05_chessboard_graphic/chess_variants.tsx +7 -7
- package/test/graphic_test_app/05_chessboard_graphic/flipped.tsx +5 -5
- package/test/graphic_test_app/05_chessboard_graphic/move.tsx +12 -10
- package/test/graphic_test_app/05_chessboard_graphic/theme.tsx +12 -12
- package/test/graphic_test_app/06_chessboard_animation/base_1.tsx +6 -6
- package/test/graphic_test_app/06_chessboard_animation/base_2.tsx +6 -6
- package/test/graphic_test_app/06_chessboard_animation/base_3.tsx +6 -6
- package/test/graphic_test_app/06_chessboard_animation/on_redraw.tsx +16 -16
- package/test/graphic_test_app/07_chessboard_interaction/click_squares.tsx +5 -5
- package/test/graphic_test_app/07_chessboard_interaction/edit_arrows.tsx +4 -4
- package/test/graphic_test_app/07_chessboard_interaction/error.tsx +2 -2
- package/test/graphic_test_app/07_chessboard_interaction/move_pieces.tsx +5 -5
- package/test/graphic_test_app/08_chessboard_play_moves/base.tsx +8 -8
- package/test/graphic_test_app/08_chessboard_play_moves/promotions.tsx +4 -4
- package/test/graphic_test_app/09_chessboard_small_screens/base.tsx +9 -9
- package/test/graphic_test_app/09_chessboard_small_screens/top_bottom_components.tsx +48 -0
- package/test/graphic_test_app/10_movetext_graphic/base.tsx +4 -4
- package/test/graphic_test_app/10_movetext_graphic/error.tsx +6 -6
- package/test/graphic_test_app/10_movetext_graphic/format_move.tsx +31 -0
- package/test/graphic_test_app/10_movetext_graphic/html.tsx +5 -5
- package/test/graphic_test_app/10_movetext_graphic/options.tsx +10 -9
- package/test/graphic_test_app/11_movetext_interaction/error.tsx +1 -1
- package/test/graphic_test_app/11_movetext_interaction/select_moves.tsx +11 -10
- package/test/graphic_test_app/12_navigation_board_base/controlled.tsx +43 -0
- package/test/graphic_test_app/12_navigation_board_base/uncontrolled.tsx +56 -0
- package/test/graphic_test_app/13_navigation_board_graphic/additional_buttons.tsx +49 -0
- package/test/graphic_test_app/13_navigation_board_graphic/error.tsx +34 -0
- package/test/graphic_test_app/13_navigation_board_graphic/theme.tsx +38 -0
- package/test/graphic_test_app/14_navigation_board_autoplay/controlled.tsx +73 -0
- package/test/graphic_test_app/14_navigation_board_autoplay/uncontrolled.tsx +34 -0
- package/test/graphic_test_app/common/decs.d.ts +2 -2
- package/test/graphic_test_app/common/test_app.css +15 -15
- package/test/graphic_test_app/common/test_app.tsx +48 -48
- 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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
});
|