@wordpress/e2e-tests 7.20.0 → 7.21.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 (52) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/package.json +9 -8
  3. package/plugins/interactive-blocks/directive-bind/render.php +1 -1
  4. package/plugins/interactive-blocks/directive-body/render.php +1 -1
  5. package/plugins/interactive-blocks/directive-class/render.php +1 -1
  6. package/plugins/interactive-blocks/directive-context/render.php +2 -2
  7. package/plugins/interactive-blocks/directive-context/view.js +10 -6
  8. package/plugins/interactive-blocks/{directive-slots → directive-each}/block.json +3 -3
  9. package/plugins/interactive-blocks/directive-each/render.php +226 -0
  10. package/plugins/interactive-blocks/directive-each/view.js +192 -0
  11. package/plugins/interactive-blocks/directive-init/render.php +1 -1
  12. package/plugins/interactive-blocks/directive-key/render.php +2 -2
  13. package/plugins/interactive-blocks/directive-key/view.js +7 -4
  14. package/plugins/interactive-blocks/directive-on/render.php +1 -1
  15. package/plugins/interactive-blocks/directive-on-document/block.json +15 -0
  16. package/plugins/interactive-blocks/directive-on-document/render.php +29 -0
  17. package/plugins/interactive-blocks/directive-on-document/view.js +39 -0
  18. package/plugins/interactive-blocks/directive-on-window/block.json +15 -0
  19. package/plugins/interactive-blocks/directive-on-window/render.php +26 -0
  20. package/plugins/interactive-blocks/directive-on-window/view.js +39 -0
  21. package/plugins/interactive-blocks/directive-priorities/render.php +1 -1
  22. package/plugins/interactive-blocks/directive-run/block.json +15 -0
  23. package/plugins/interactive-blocks/directive-run/render.php +54 -0
  24. package/plugins/interactive-blocks/directive-run/view.js +110 -0
  25. package/plugins/interactive-blocks/directive-style/render.php +1 -1
  26. package/plugins/interactive-blocks/directive-text/render.php +15 -1
  27. package/plugins/interactive-blocks/directive-text/view.js +4 -1
  28. package/plugins/interactive-blocks/directive-watch/render.php +1 -1
  29. package/plugins/interactive-blocks/negation-operator/render.php +1 -1
  30. package/plugins/interactive-blocks/router-navigate/render.php +2 -2
  31. package/plugins/interactive-blocks/router-navigate/view.js +5 -2
  32. package/plugins/interactive-blocks/router-regions/render.php +4 -4
  33. package/plugins/interactive-blocks/router-regions/view.js +5 -2
  34. package/plugins/interactive-blocks/store-tag/render.php +3 -3
  35. package/plugins/interactive-blocks/tovdom/render.php +1 -1
  36. package/plugins/interactive-blocks/tovdom-islands/render.php +1 -1
  37. package/plugins/interactive-blocks/with-scope/block.json +15 -0
  38. package/plugins/interactive-blocks/with-scope/render.php +14 -0
  39. package/plugins/interactive-blocks/with-scope/view.js +20 -0
  40. package/plugins/interactive-blocks.php +19 -10
  41. package/specs/editor/various/__snapshots__/pattern-blocks.test.js.snap +0 -6
  42. package/specs/editor/various/pattern-blocks.test.js +8 -117
  43. package/plugins/dataviews.php +0 -25
  44. package/plugins/interactive-blocks/directive-slots/render.php +0 -69
  45. package/plugins/interactive-blocks/directive-slots/view.js +0 -20
  46. package/specs/editor/fixtures/menu-items-request-fixture.json +0 -84
  47. package/specs/editor/fixtures/menu-items-response-fixture.json +0 -1261
  48. package/specs/editor/various/__snapshots__/block-grouping.test.js.snap +0 -115
  49. package/specs/editor/various/__snapshots__/embedding.test.js.snap +0 -67
  50. package/specs/editor/various/block-grouping.test.js +0 -283
  51. package/specs/editor/various/embedding.test.js +0 -303
  52. package/specs/editor/various/typewriter.test.js +0 -260
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 7.21.0 (2024-01-24)
6
+
5
7
  ## 7.20.0 (2024-01-10)
6
8
 
7
9
  ## 7.19.0 (2023-12-13)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/e2e-tests",
3
- "version": "7.20.0",
3
+ "version": "7.21.0",
4
4
  "description": "End-To-End (E2E) tests for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -23,12 +23,13 @@
23
23
  "node": ">=14"
24
24
  },
25
25
  "dependencies": {
26
- "@wordpress/e2e-test-utils": "^10.20.0",
27
- "@wordpress/interactivity": "^3.2.0",
28
- "@wordpress/jest-console": "^7.20.0",
29
- "@wordpress/jest-puppeteer-axe": "^6.20.0",
30
- "@wordpress/scripts": "^27.0.0",
31
- "@wordpress/url": "^3.50.0",
26
+ "@wordpress/e2e-test-utils": "^10.21.0",
27
+ "@wordpress/interactivity": "^4.0.0",
28
+ "@wordpress/interactivity-router": "^1.0.0",
29
+ "@wordpress/jest-console": "^7.21.0",
30
+ "@wordpress/jest-puppeteer-axe": "^6.21.0",
31
+ "@wordpress/scripts": "^27.1.0",
32
+ "@wordpress/url": "^3.51.0",
32
33
  "chalk": "^4.0.0",
33
34
  "expect-puppeteer": "^4.4.0",
34
35
  "filenamify": "^4.2.0",
@@ -45,5 +46,5 @@
45
46
  "publishConfig": {
46
47
  "access": "public"
47
48
  },
48
- "gitHead": "5e6f9caa205d3bfdbac131952b7bf9c6ec60569b"
49
+ "gitHead": "45de2cb4212fed7f2763e95f10300d1ff9d0ec08"
49
50
  }
@@ -5,7 +5,7 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-bind-view' );
8
+ wp_enqueue_script_module( 'directive-bind-view' );
9
9
  ?>
10
10
 
11
11
  <div data-wp-interactive='{ "namespace": "directive-bind" }'>
@@ -5,7 +5,7 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-body-view' );
8
+ wp_enqueue_script_module( 'directive-body-view' );
9
9
  ?>
10
10
 
11
11
  <div
@@ -5,7 +5,7 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-class-view' );
8
+ wp_enqueue_script_module( 'directive-class-view' );
9
9
  ?>
10
10
 
11
11
  <div data-wp-interactive='{"namespace": "directive-class"}'>
@@ -5,7 +5,7 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-context-view' );
8
+ wp_enqueue_script_module( 'directive-context-view' );
9
9
  ?>
10
10
 
11
11
  <div data-wp-interactive='{"namespace": "directive-context"}'>
@@ -124,7 +124,7 @@ gutenberg_enqueue_module( 'directive-context-view' );
124
124
 
125
125
  <div
126
126
  data-wp-interactive='{"namespace": "directive-context-navigate"}'
127
- data-wp-navigation-id="navigation"
127
+ data-wp-router-region="navigation"
128
128
  data-wp-context='{ "text": "first page" }'
129
129
  >
130
130
  <div data-testid="navigation text" data-wp-text="context.text"></div>
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { store, navigate, getContext } from '@wordpress/interactivity';
4
+ import { store, getContext } from '@wordpress/interactivity';
5
5
 
6
6
  store( 'directive-context', {
7
7
  state: {
@@ -28,7 +28,7 @@ store( 'directive-context', {
28
28
  const html = `
29
29
  <div
30
30
  data-wp-interactive='{ "namespace": "directive-context-navigate" }'
31
- data-wp-navigation-id="navigation"
31
+ data-wp-router-region="navigation"
32
32
  data-wp-context='{ "text": "second page" }'
33
33
  >
34
34
  <div data-testid="navigation text" data-wp-text="context.text"></div>
@@ -50,10 +50,14 @@ const { actions } = store( 'directive-context-navigate', {
50
50
  ctx.newText = 'some new text';
51
51
  },
52
52
  navigate() {
53
- return navigate( window.location, {
54
- force: true,
55
- html,
56
- } );
53
+ return import( '@wordpress/interactivity-router' ).then(
54
+ ( { actions: routerActions } ) =>
55
+ routerActions.navigate(
56
+ window.location,
57
+ { force: true, html },
58
+ )
59
+ );
60
+
57
61
  },
58
62
  *asyncNavigate() {
59
63
  yield actions.navigate();
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://schemas.wp.org/trunk/block.json",
3
3
  "apiVersion": 2,
4
- "name": "test/directive-slots",
5
- "title": "E2E Interactivity tests - directive slots",
4
+ "name": "test/directive-each",
5
+ "title": "E2E Interactivity tests - directive each",
6
6
  "category": "text",
7
7
  "icon": "heart",
8
8
  "description": "",
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "directive-slots-view",
13
+ "viewScript": "directive-each-view",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -0,0 +1,226 @@
1
+ <?php
2
+ /**
3
+ * HTML for testing the directive `data-wp-each`.
4
+ *
5
+ * @package gutenberg-test-interactive-blocks
6
+ */
7
+
8
+ wp_enqueue_script_module( 'directive-each-view' );
9
+ ?>
10
+
11
+ <div data-wp-interactive='{ "namespace": "directive-each" }'>
12
+ <div data-testid="letters">
13
+ <template data-wp-each="state.letters">
14
+ <p data-wp-text="context.item" data-testid="item"></p>
15
+ </template>
16
+ <!-- SSRed elements; they should be removed on hydration -->
17
+ <p data-testid="item" data-wp-each-child>A</p>
18
+ <p data-testid="item" data-wp-each-child>B</p>
19
+ <p data-testid="item" data-wp-each-child>C</p>
20
+ </div>
21
+
22
+ <hr>
23
+
24
+ <div data-testid="fruits">
25
+ <button
26
+ data-testid="rotate" data-wp-on--click="actions.rotateFruits"
27
+ >Rotate</button>
28
+ <button
29
+ data-testid="add" data-wp-on--click="actions.addFruit"
30
+ >Add</button>
31
+ <button
32
+ data-testid="replace" data-wp-on--click="actions.replaceFruit"
33
+ >Replace</button>
34
+ <template data-wp-each--fruit="state.fruits">
35
+ <p
36
+ data-testid="item"
37
+ data-wp-text="context.fruit"
38
+ data-wp-on--click="actions.removeFruit"
39
+ ></p>
40
+ </template>
41
+ <!-- SSRed elements; they should be removed on hydration -->
42
+ <p data-testid="item" data-wp-each-child>avocado</p>
43
+ <p data-testid="item" data-wp-each-child>banana</p>
44
+ <p data-testid="item" data-wp-each-child>cherimoya</p>
45
+ </div>
46
+
47
+ <hr>
48
+
49
+ <div data-testid="books">
50
+ <button
51
+ data-testid="rotate" data-wp-on--click="actions.rotateBooks"
52
+ >Rotate</button>
53
+ <button
54
+ data-testid="add" data-wp-on--click="actions.addBook"
55
+ >Add</button>
56
+ <button
57
+ data-testid="replace" data-wp-on--click="actions.replaceBook"
58
+ >Replace</button>
59
+ <button
60
+ data-testid="modify" data-wp-on--click="actions.modifyBook"
61
+ >Modify</button>
62
+ <template
63
+ data-wp-each--book="state.books"
64
+ data-wp-each-key="context.book.isbn"
65
+ >
66
+ <p
67
+ data-testid="item"
68
+ data-wp-text="context.book.title"
69
+ data-wp-on--click="actions.removeBook"
70
+ ></p>
71
+ </template>
72
+ <!-- SSRed elements; they should be removed on hydration -->
73
+ <p data-testid="item" data-wp-each-child>A Game of Thrones</p>
74
+ <p data-testid="item" data-wp-each-child>A Clash of Kings</p>
75
+ <p data-testid="item" data-wp-each-child>A Storm of Swords</p>
76
+ </div>
77
+
78
+ <hr>
79
+
80
+ <div data-testid="numbers">
81
+ <button
82
+ data-testid="shift" data-wp-on--click="actions.shiftNumber"
83
+ >Shift</button>
84
+ <button
85
+ data-testid="unshift" data-wp-on--click="actions.unshiftNumber"
86
+ >Unshift</button>
87
+ <template data-wp-each="state.numbers">
88
+ <p data-wp-text="context.item" data-testid="item"></p>
89
+ </template>
90
+ <p data-testid="item" data-wp-each-child>1</p>
91
+ <p data-testid="item" data-wp-each-child>2</p>
92
+ <p data-testid="item" data-wp-each-child>3</p>
93
+ <p data-testid="item">4</p>
94
+ </div>
95
+
96
+ <hr>
97
+
98
+ <div data-testid="empty">
99
+ <button
100
+ data-testid="add" data-wp-on--click="actions.addItem"
101
+ >Add</button>
102
+ <template data-wp-each="state.emptyList">
103
+ <p data-wp-text="context.item" data-testid="item"></p>
104
+ </template>
105
+ <p data-testid="item">item X</p>
106
+ </div>
107
+
108
+ <div data-testid="siblings">
109
+ <button
110
+ data-testid="unshift"
111
+ data-wp-on--click="actions.unshiftNumberAndName"
112
+ >Unshift</button>
113
+ <template
114
+ data-wp-each="state.numbersAndNames"
115
+ data-wp-each-key="context.item.value"
116
+ >
117
+ <p data-wp-text="context.item.name" data-testid="item"></p>
118
+ <p data-wp-text="context.item.value" data-testid="item"></p>
119
+ </template>
120
+ <p data-testid="item" data-wp-each-child>two</p>
121
+ <p data-testid="item" data-wp-each-child>2</p>
122
+ <p data-testid="item" data-wp-each-child>three</p>
123
+ <p data-testid="item" data-wp-each-child>3</p>
124
+ <p data-testid="item">four</p>
125
+ <p data-testid="item">4</p>
126
+ </div>
127
+
128
+ <div data-testid="nested">
129
+ <button
130
+ data-testid="add animal"
131
+ data-wp-on--click="actions.addAnimal"
132
+ >Add animal</button>
133
+ <button
134
+ data-testid="add breeds"
135
+ data-wp-on--click="actions.addBreeds"
136
+ >Add breeds</button>
137
+
138
+ <ul>
139
+ <template
140
+ data-wp-each--animal="state.animalBreeds"
141
+ data-wp-each-key="context.animal.name"
142
+ >
143
+ <li data-testid="animal">
144
+ <span
145
+ data-testid="name"
146
+ data-wp-text="context.animal.name"
147
+ ></span>
148
+ <ul>
149
+ <template data-wp-each--breed="context.animal.breeds">
150
+ <li data-wp-text="context.breed"></li>
151
+ </template>
152
+ </ul>
153
+ </li>
154
+ </template>
155
+ <!-- SSRed elements; they should be removed on hydration -->
156
+ <li data-testid="animal" data-wp-each-child>
157
+ <span data-testid="name">Dog</span>
158
+ <ul>
159
+ <template data-wp-each--breed="context.animal.breeds">
160
+ <li data-wp-text="context.breed"></li>
161
+ </template>
162
+ <li data-wp-each-child>Chihuahua</li>
163
+ <li data-wp-each-child>Rottweiler</li>
164
+ </ul>
165
+ </li>
166
+ <li data-testid="animal" data-wp-each-child>
167
+ <span data-testid="name">Cat</span>
168
+ <ul>
169
+ <template data-wp-each--breed="context.animal.breeds">
170
+ <li data-wp-text="context.breed"></li>
171
+ </template>
172
+ <li data-wp-each-child>Sphynx</li>
173
+ <li data-wp-each-child>Siamese</li>
174
+ </ul>
175
+ </li>
176
+ </ul>
177
+ </div>
178
+
179
+ <div data-testid="invalid tag">
180
+ <div data-wp-each="state.letters">
181
+ <p data-wp-text="context.item" data-testid="item"></p>
182
+ </div>
183
+ </div>
184
+
185
+
186
+ <div data-testid="derived state">
187
+ <button
188
+ data-testid="rotate" data-wp-on--click="actions.rotateFruits"
189
+ >Rotate</button>
190
+ <template
191
+ data-wp-context='{ "idPrefix": "fruit-" }'
192
+ data-wp-each--fruit="state.fruits"
193
+ data-wp-each-key="state.fruitId"
194
+ >
195
+ <p
196
+ data-testid="item"
197
+ data-wp-text="context.fruit"
198
+ data-wp-bind--data-fruit-id="state.fruitId"
199
+ ></p>
200
+ </template>
201
+ <!-- SSRed elements; they should be removed on hydration -->
202
+ <p data-testid="item" data-wp-each-child>avocado</p>
203
+ <p data-testid="item" data-wp-each-child>banana</p>
204
+ <p data-testid="item" data-wp-each-child>cherimoya</p>
205
+ </div>
206
+ </div>
207
+
208
+ <hr>
209
+
210
+ <div
211
+ data-wp-interactive='{ "namespace": "directive-each" }'
212
+ data-wp-router-region="navigation-updated list"
213
+ data-wp-context='{ "list": [ "beta", "gamma", "delta" ] }'
214
+ data-testid="navigation-updated list"
215
+ >
216
+ <button
217
+ data-testid="navigate"
218
+ data-wp-on--click="actions.navigate"
219
+ >Navigate</button>
220
+ <template data-wp-each="context.list">
221
+ <p data-wp-text="context.item" data-testid="item"></p>
222
+ </template>
223
+ <p data-testid="item" data-wp-each-child>beta</p>
224
+ <p data-testid="item" data-wp-each-child>gamma</p>
225
+ <p data-testid="item" data-wp-each-child>delta</p>
226
+ </div>
@@ -0,0 +1,192 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store, getContext } from '@wordpress/interactivity';
5
+
6
+ const { state } = store( 'directive-each' );
7
+
8
+ store( 'directive-each', {
9
+ state: {
10
+ letters: [ 'A', 'B', 'C' ],
11
+ },
12
+ } );
13
+
14
+ store( 'directive-each', {
15
+ state: {
16
+ fruits: [ 'avocado', 'banana', 'cherimoya' ],
17
+ get fruitId() {
18
+ const { idPrefix, fruit } = getContext();
19
+ return `${idPrefix}${fruit}`;
20
+ }
21
+ },
22
+ actions: {
23
+ removeFruit() {
24
+ const { fruit } = getContext();
25
+ state.fruits.splice( state.fruits.indexOf( fruit ), 1 );
26
+ },
27
+ rotateFruits() {
28
+ const fruit = state.fruits.pop();
29
+ state.fruits.splice( 0, 0, fruit );
30
+ },
31
+ addFruit() {
32
+ state.fruits.splice( 0, 0, 'ananas' );
33
+ },
34
+ replaceFruit() {
35
+ state.fruits.splice( 0, 1, 'ananas' );
36
+ },
37
+ },
38
+ } );
39
+
40
+ store( 'directive-each', {
41
+ state: {
42
+ books: [
43
+ {
44
+ title: 'A Game of Thrones',
45
+ author: 'George R.R. Martin',
46
+ isbn: "9780553588484",
47
+ },
48
+ {
49
+ title: 'A Clash of Kings',
50
+ author: 'George R.R. Martin',
51
+ isbn: "9780553381696",
52
+ },
53
+ {
54
+ title: 'A Storm of Swords',
55
+ author: 'George R.R. Martin',
56
+ isbn: "9780553573428",
57
+ },
58
+ ],
59
+ },
60
+ actions: {
61
+ removeBook() {
62
+ const { book } = getContext();
63
+ state.books.splice( state.books.indexOf( book ), 1 );
64
+ },
65
+ rotateBooks() {
66
+ const book = state.books.pop();
67
+ state.books.splice( 0, 0, book );
68
+ },
69
+ addBook() {
70
+ const book = {
71
+ title: 'A Feast for Crows',
72
+ author: 'George R.R. Martin',
73
+ isbn: "9780553582024",
74
+ };
75
+ state.books.splice( 0, 0, book );
76
+ },
77
+ replaceBook() {
78
+ const book = {
79
+ title: 'A Feast for Crows',
80
+ author: 'George R.R. Martin',
81
+ isbn: "9780553582024",
82
+ };
83
+ state.books.splice( 0, 1, book );
84
+ },
85
+ modifyBook() {
86
+ const [ book ] = state.books;
87
+ book.title = book.title.toUpperCase();
88
+ },
89
+ },
90
+ } );
91
+
92
+ store( 'directive-each', {
93
+ state: {
94
+ numbers: [ 1, 2, 3 ],
95
+ },
96
+ actions: {
97
+ shiftNumber() {
98
+ state.numbers.shift();
99
+ },
100
+ unshiftNumber() {
101
+ if ( state.numbers.length > 0 ) {
102
+ state.numbers.unshift( state.numbers[ 0 ] - 1 );
103
+ }
104
+ }
105
+ },
106
+ } );
107
+
108
+ store( 'directive-each', {
109
+ state: {
110
+ emptyList: []
111
+ },
112
+ actions: {
113
+ addItem() {
114
+ state.emptyList.push( `item ${ state.emptyList.length }` );
115
+ }
116
+ },
117
+ } );
118
+
119
+ store( 'directive-each', {
120
+ state: {
121
+ numbersAndNames: [
122
+ { name: "two", value: 2 },
123
+ { name: "three", value: 3 },
124
+ ],
125
+ },
126
+ actions: {
127
+ unshiftNumberAndName() {
128
+ state.numbersAndNames.unshift( { name: "one", value: 1 } );
129
+ }
130
+ },
131
+ } );
132
+
133
+ store( 'directive-each', {
134
+ state: {
135
+ animalBreeds: [
136
+ { name: "Dog", breeds: [ 'chihuahua', 'rottweiler' ] },
137
+ { name: "Cat", breeds: [ 'sphynx', 'siamese' ] },
138
+ ],
139
+ },
140
+ actions: {
141
+ addAnimal() {
142
+ state.animalBreeds.unshift( {
143
+ name: "Rat", breeds: [ 'dumbo', 'rex' ]
144
+ } );
145
+ },
146
+ addBreeds() {
147
+ state
148
+ .animalBreeds
149
+ .forEach( ( { name, breeds } ) => {
150
+ if ( name === 'Dog') breeds.unshift( 'german shepherd' );
151
+ if ( name === 'Cat') breeds.unshift( 'maine coon' );
152
+ if ( name === 'Rat') breeds.unshift( 'satin' );
153
+ } );
154
+ }
155
+ }
156
+ } );
157
+
158
+ const html = `
159
+ <div
160
+ data-wp-interactive='{ "namespace": "directive-each" }'
161
+ data-wp-router-region="navigation-updated list"
162
+ data-wp-context='{ "list": [ "alpha", "beta", "gamma", "delta" ] }'
163
+ data-testid="navigation-updated list"
164
+ >
165
+ <button
166
+ data-testid="navigate"
167
+ data-wp-on--click="actions.navigate"
168
+ >Navigate</button>
169
+ <template data-wp-each="context.list">
170
+ <p data-wp-text="context.item" data-testid="item"></p>
171
+ </template>
172
+ <p data-testid="item" data-wp-each-child>alpha</p>
173
+ <p data-testid="item" data-wp-each-child>beta</p>
174
+ <p data-testid="item" data-wp-each-child>gamma</p>
175
+ <p data-testid="item" data-wp-each-child>delta</p>
176
+ </div>
177
+ `;
178
+
179
+ store( 'directive-each', {
180
+ actions: {
181
+ *navigate() {
182
+ const { actions } = yield import(
183
+ "@wordpress/interactivity-router"
184
+ );
185
+ return actions.navigate( window.location, {
186
+ force: true,
187
+ html,
188
+ } );
189
+ },
190
+ }
191
+ } );
192
+
@@ -5,7 +5,7 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-init-view' );
8
+ wp_enqueue_script_module( 'directive-init-view' );
9
9
  ?>
10
10
 
11
11
  <div data-wp-interactive='{ "namespace": "directive-init" }'>
@@ -5,12 +5,12 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-key-view' );
8
+ wp_enqueue_script_module( 'directive-key-view' );
9
9
  ?>
10
10
 
11
11
  <div
12
12
  data-wp-interactive='{ "namespace": "directive-key" }'
13
- data-wp-navigation-id="some-id"
13
+ data-wp-router-region="some-id"
14
14
  >
15
15
  <ul>
16
16
  <li data-wp-key="id-2" data-testid="first-item">2</li>
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { store, navigate } from '@wordpress/interactivity';
4
+ import { store } from '@wordpress/interactivity';
5
5
 
6
6
  const html = `
7
7
  <div
8
8
  data-wp-interactive='{ "namespace": "directive-key" }'
9
- data-wp-navigation-id="some-id"
9
+ data-wp-router-region="some-id"
10
10
  >
11
11
  <ul>
12
12
  <li data-wp-key="id-1">1</li>
@@ -17,8 +17,11 @@ const html = `
17
17
 
18
18
  store( 'directive-key', {
19
19
  actions: {
20
- navigate() {
21
- navigate( window.location, {
20
+ *navigate() {
21
+ const { actions } = yield import(
22
+ "@wordpress/interactivity-router"
23
+ );
24
+ return actions.navigate( window.location, {
22
25
  force: true,
23
26
  html,
24
27
  } );
@@ -5,7 +5,7 @@
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
7
 
8
- gutenberg_enqueue_module( 'directive-on-view' );
8
+ wp_enqueue_script_module( 'directive-on-view' );
9
9
  ?>
10
10
 
11
11
  <div data-wp-interactive='{ "namespace": "directive-on" }'>
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://schemas.wp.org/trunk/block.json",
3
+ "apiVersion": 2,
4
+ "name": "test/directive-on-document",
5
+ "title": "E2E Interactivity tests - directive on document",
6
+ "category": "text",
7
+ "icon": "heart",
8
+ "description": "",
9
+ "supports": {
10
+ "interactivity": true
11
+ },
12
+ "textdomain": "e2e-interactivity",
13
+ "viewScript": "directive-on-document-view",
14
+ "render": "file:./render.php"
15
+ }
@@ -0,0 +1,29 @@
1
+ <?php
2
+ /**
3
+ * HTML for testing the directive `data-wp-on`.
4
+ *
5
+ * @package gutenberg-test-interactive-blocks
6
+ */
7
+
8
+ wp_enqueue_script_module( 'directive-on-document-view' );
9
+ ?>
10
+
11
+ <div data-wp-interactive='{ "namespace": "directive-on-document" }'>
12
+ <button
13
+ data-testid="visibility"
14
+ data-wp-on--click="actions.visibilityHandler"
15
+ >
16
+ Switch visibility
17
+ </button>
18
+
19
+ <div data-wp-text="state.isEventAttached" data-testid="isEventAttached">no</div>
20
+
21
+ <div data-wp-show-mock="state.isVisible">
22
+ <div
23
+ data-wp-on-document--keydown="callbacks.keydownHandler"
24
+ data-wp-init="callbacks.init"
25
+ >
26
+ <p data-wp-text="state.counter" data-testid="counter">0</p>
27
+ </div>
28
+ </div>
29
+ </div>