@wordpress/e2e-tests 7.23.0 → 7.25.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 (82) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +9 -9
  3. package/plugins/block-bindings.php +19 -1
  4. package/plugins/interactive-blocks/deferred-store/block.json +15 -0
  5. package/plugins/interactive-blocks/deferred-store/render.php +15 -0
  6. package/plugins/interactive-blocks/deferred-store/view.asset.php +1 -0
  7. package/plugins/interactive-blocks/deferred-store/view.js +20 -0
  8. package/plugins/interactive-blocks/directive-bind/block.json +1 -1
  9. package/plugins/interactive-blocks/directive-bind/render.php +0 -2
  10. package/plugins/interactive-blocks/directive-bind/view.asset.php +1 -0
  11. package/plugins/interactive-blocks/directive-class/block.json +1 -1
  12. package/plugins/interactive-blocks/directive-class/render.php +0 -2
  13. package/plugins/interactive-blocks/directive-class/view.asset.php +1 -0
  14. package/plugins/interactive-blocks/directive-context/block.json +1 -1
  15. package/plugins/interactive-blocks/directive-context/render.php +71 -2
  16. package/plugins/interactive-blocks/directive-context/view.asset.php +9 -0
  17. package/plugins/interactive-blocks/directive-context/view.js +60 -7
  18. package/plugins/interactive-blocks/directive-each/block.json +1 -1
  19. package/plugins/interactive-blocks/directive-each/render.php +0 -2
  20. package/plugins/interactive-blocks/directive-each/view.asset.php +9 -0
  21. package/plugins/interactive-blocks/directive-init/block.json +1 -1
  22. package/plugins/interactive-blocks/directive-init/render.php +0 -2
  23. package/plugins/interactive-blocks/directive-init/view.asset.php +1 -0
  24. package/plugins/interactive-blocks/directive-key/block.json +1 -1
  25. package/plugins/interactive-blocks/directive-key/render.php +0 -2
  26. package/plugins/interactive-blocks/directive-key/view.asset.php +9 -0
  27. package/plugins/interactive-blocks/directive-on/block.json +1 -1
  28. package/plugins/interactive-blocks/directive-on/render.php +0 -2
  29. package/plugins/interactive-blocks/directive-on/view.asset.php +1 -0
  30. package/plugins/interactive-blocks/directive-on-document/block.json +1 -1
  31. package/plugins/interactive-blocks/directive-on-document/render.php +0 -2
  32. package/plugins/interactive-blocks/directive-on-document/view.asset.php +1 -0
  33. package/plugins/interactive-blocks/directive-on-window/block.json +1 -1
  34. package/plugins/interactive-blocks/directive-on-window/render.php +0 -2
  35. package/plugins/interactive-blocks/directive-on-window/view.asset.php +1 -0
  36. package/plugins/interactive-blocks/directive-priorities/block.json +1 -1
  37. package/plugins/interactive-blocks/directive-priorities/render.php +0 -2
  38. package/plugins/interactive-blocks/directive-priorities/view.asset.php +1 -0
  39. package/plugins/interactive-blocks/directive-run/block.json +1 -1
  40. package/plugins/interactive-blocks/directive-run/render.php +0 -2
  41. package/plugins/interactive-blocks/directive-run/view.asset.php +9 -0
  42. package/plugins/interactive-blocks/directive-style/block.json +1 -1
  43. package/plugins/interactive-blocks/directive-style/render.php +0 -2
  44. package/plugins/interactive-blocks/directive-style/view.asset.php +1 -0
  45. package/plugins/interactive-blocks/directive-text/block.json +1 -1
  46. package/plugins/interactive-blocks/directive-text/render.php +0 -2
  47. package/plugins/interactive-blocks/directive-text/view.asset.php +1 -0
  48. package/plugins/interactive-blocks/directive-watch/block.json +1 -1
  49. package/plugins/interactive-blocks/directive-watch/render.php +0 -2
  50. package/plugins/interactive-blocks/directive-watch/view.asset.php +1 -0
  51. package/plugins/interactive-blocks/generator-scope/block.json +15 -0
  52. package/plugins/interactive-blocks/generator-scope/render.php +16 -0
  53. package/plugins/interactive-blocks/generator-scope/view.asset.php +1 -0
  54. package/plugins/interactive-blocks/generator-scope/view.js +23 -0
  55. package/plugins/interactive-blocks/negation-operator/block.json +1 -1
  56. package/plugins/interactive-blocks/negation-operator/render.php +0 -2
  57. package/plugins/interactive-blocks/negation-operator/view.asset.php +1 -0
  58. package/plugins/interactive-blocks/router-navigate/block.json +1 -1
  59. package/plugins/interactive-blocks/router-navigate/render.php +37 -22
  60. package/plugins/interactive-blocks/router-navigate/view.asset.php +9 -0
  61. package/plugins/interactive-blocks/router-navigate/view.js +13 -4
  62. package/plugins/interactive-blocks/router-regions/block.json +1 -1
  63. package/plugins/interactive-blocks/router-regions/render.php +0 -2
  64. package/plugins/interactive-blocks/router-regions/view.asset.php +9 -0
  65. package/plugins/interactive-blocks/store/block.json +1 -1
  66. package/plugins/interactive-blocks/store/render.php +2 -3
  67. package/plugins/interactive-blocks/store/view.asset.php +1 -0
  68. package/plugins/interactive-blocks/store/view.js +7 -4
  69. package/plugins/interactive-blocks/store-tag/block.json +1 -1
  70. package/plugins/interactive-blocks/store-tag/render.php +0 -2
  71. package/plugins/interactive-blocks/store-tag/view.asset.php +1 -0
  72. package/plugins/interactive-blocks/tovdom/block.json +1 -1
  73. package/plugins/interactive-blocks/tovdom/render.php +0 -2
  74. package/plugins/interactive-blocks/tovdom/view.asset.php +1 -0
  75. package/plugins/interactive-blocks/tovdom-islands/block.json +1 -1
  76. package/plugins/interactive-blocks/tovdom-islands/render.php +0 -2
  77. package/plugins/interactive-blocks/tovdom-islands/view.asset.php +1 -0
  78. package/plugins/interactive-blocks/with-scope/block.json +1 -1
  79. package/plugins/interactive-blocks/with-scope/render.php +0 -2
  80. package/plugins/interactive-blocks/with-scope/view.asset.php +1 -0
  81. package/plugins/interactive-blocks.php +4 -21
  82. package/specs/editor/various/autosave.test.js +0 -346
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "directive-text-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -4,8 +4,6 @@
4
4
  *
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
-
8
- wp_enqueue_script_module( 'directive-text-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-context">
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "directive-watch-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -4,8 +4,6 @@
4
4
  *
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
-
8
- wp_enqueue_script_module( 'directive-watch-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-watch">
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://schemas.wp.org/trunk/block.json",
3
+ "apiVersion": 2,
4
+ "name": "test/generator-scope",
5
+ "title": "E2E Interactivity tests - generator scope",
6
+ "category": "text",
7
+ "icon": "heart",
8
+ "description": "",
9
+ "supports": {
10
+ "interactivity": true
11
+ },
12
+ "textdomain": "e2e-interactivity",
13
+ "viewScriptModule": "file:./view.js",
14
+ "render": "file:./render.php"
15
+ }
@@ -0,0 +1,16 @@
1
+ <?php
2
+ /**
3
+ * HTML for testing scope restoration with generators.
4
+ *
5
+ * @package gutenberg-test-interactive-blocks
6
+ */
7
+ ?>
8
+
9
+ <div
10
+ data-wp-interactive="test/generator-scope"
11
+ <?php echo wp_interactivity_data_wp_context( array( 'result' => '' ) ); ?>
12
+ >
13
+ <input readonly data-wp-bind--value="context.result" data-testid="result" />
14
+ <button type="button" data-wp-on--click="callbacks.resolve" data-testid="resolve">Async resolve</button>
15
+ <button type="button" data-wp-on--click="callbacks.reject" data-testid="reject">Async reject</button>
16
+ </div>
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store, getContext } from '@wordpress/interactivity';
5
+
6
+ store( 'test/generator-scope', {
7
+ callbacks: {
8
+ *resolve() {
9
+ try {
10
+ getContext().result = yield Promise.resolve( 'ok' );
11
+ } catch ( err ) {
12
+ getContext().result = err.toString();
13
+ }
14
+ },
15
+ *reject() {
16
+ try {
17
+ getContext().result = yield Promise.reject( new Error( '😘' ) );
18
+ } catch ( err ) {
19
+ getContext().result = err.toString();
20
+ }
21
+ },
22
+ },
23
+ } );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "negation-operator-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -4,8 +4,6 @@
4
4
  *
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
-
8
- wp_enqueue_script_module( 'negation-operator-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="negation-operator">
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "router-navigate-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -7,14 +7,19 @@
7
7
  * @phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
8
8
  */
9
9
 
10
- wp_enqueue_script_module( 'router-navigate-view' );
11
-
12
10
  if ( $attributes['disableNavigation'] ) {
13
11
  wp_interactivity_config(
14
12
  'core/router',
15
13
  array( 'clientNavigationDisabled' => true )
16
14
  );
17
15
  }
16
+
17
+ if ( isset( $attributes['data'] ) ) {
18
+ wp_interactivity_state(
19
+ 'router',
20
+ array( 'data' => $attributes['data'] )
21
+ );
22
+ }
18
23
  ?>
19
24
 
20
25
  <div
@@ -24,8 +29,12 @@ if ( $attributes['disableNavigation'] ) {
24
29
  <h2 data-testid="title"><?php echo $attributes['title']; ?></h2>
25
30
 
26
31
  <output
27
- data-testid="router navigations"
28
- data-wp-text="state.navigations"
32
+ data-testid="router navigations pending"
33
+ data-wp-text="state.navigations.pending"
34
+ >NaN</output>
35
+ <output
36
+ data-testid="router navigations count"
37
+ data-wp-text="state.navigations.count"
29
38
  >NaN</output>
30
39
  <output
31
40
  data-testid="router status"
@@ -39,24 +48,30 @@ if ( $attributes['disableNavigation'] ) {
39
48
  Timeout <span data-wp-text="state.timeout">NaN</span>
40
49
  </button>
41
50
 
42
- <?php
43
- if ( isset( $attributes['links'] ) ) {
44
- foreach ( $attributes['links'] as $key => $link ) {
45
- $i = $key += 1;
46
- echo <<<HTML
47
- <a
48
- data-testid="link $i"
49
- data-wp-on--click="actions.navigate"
50
- href="$link"
51
- >link $i</a>
52
- <a
53
- data-testid="link $i with hash"
54
- data-wp-on--click="actions.navigate"
55
- data-force-navigation="true"
56
- href="$link#link-$i-with-hash"
57
- >link $i with hash</a>
51
+ <nav>
52
+ <?php
53
+ if ( isset( $attributes['links'] ) ) {
54
+ foreach ( $attributes['links'] as $key => $link ) {
55
+ $i = $key += 1;
56
+ echo <<<HTML
57
+ <a
58
+ data-testid="link $i"
59
+ data-wp-on--click="actions.navigate"
60
+ href="$link"
61
+ >link $i</a>
62
+ <a
63
+ data-testid="link $i with hash"
64
+ data-wp-on--click="actions.navigate"
65
+ data-force-navigation="true"
66
+ href="$link#link-$i-with-hash"
67
+ >link $i with hash</a>
58
68
  HTML;
69
+ }
59
70
  }
60
- }
61
- ?>
71
+ ?>
72
+ </nav>
73
+ <div data-testid="getterProp" data-wp-text="state.data.getterProp"></div>
74
+ <div data-testid="prop1" data-wp-text="state.data.prop1"></div>
75
+ <div data-testid="prop2" data-wp-text="state.data.prop2"></div>
76
+ <div data-testid="prop3" data-wp-text="state.data.prop3"></div>
62
77
  </div>
@@ -0,0 +1,9 @@
1
+ <?php return array(
2
+ 'dependencies' => array(
3
+ '@wordpress/interactivity',
4
+ array(
5
+ 'id' => '@wordpress/interactivity-router',
6
+ 'import' => 'dynamic',
7
+ ),
8
+ ),
9
+ );
@@ -6,14 +6,23 @@ import { store } from '@wordpress/interactivity';
6
6
  const { state } = store( 'router', {
7
7
  state: {
8
8
  status: 'idle',
9
- navigations: 0,
9
+ navigations: {
10
+ pending: 0,
11
+ count: 0,
12
+ },
10
13
  timeout: 10000,
14
+ data: {
15
+ get getterProp() {
16
+ return `value from getter (${ state.data.prop1 })`;
17
+ }
18
+ }
11
19
  },
12
20
  actions: {
13
21
  *navigate( e ) {
14
22
  e.preventDefault();
15
23
 
16
- state.navigations += 1;
24
+ state.navigations.count += 1;
25
+ state.navigations.pending += 1;
17
26
  state.status = 'busy';
18
27
 
19
28
  const force = e.target.dataset.forceNavigation === 'true';
@@ -24,9 +33,9 @@ const { state } = store( 'router', {
24
33
  );
25
34
  yield actions.navigate( e.target.href, { force, timeout } );
26
35
 
27
- state.navigations -= 1;
36
+ state.navigations.pending -= 1;
28
37
 
29
- if ( state.navigations === 0 ) {
38
+ if ( state.navigations.pending === 0 ) {
30
39
  state.status = 'idle';
31
40
  }
32
41
  },
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "router-regions-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -6,8 +6,6 @@
6
6
  *
7
7
  * @phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
8
8
  */
9
-
10
- wp_enqueue_script_module( 'router-regions-view' );
11
9
  ?>
12
10
 
13
11
  <section>
@@ -0,0 +1,9 @@
1
+ <?php return array(
2
+ 'dependencies' => array(
3
+ '@wordpress/interactivity',
4
+ array(
5
+ 'id' => '@wordpress/interactivity-router',
6
+ 'import' => 'dynamic',
7
+ ),
8
+ ),
9
+ );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "store-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -1,14 +1,13 @@
1
1
  <?php
2
2
  /**
3
- * HTML for testing the directive `data-wp-bind`.
3
+ * HTML for testing the `store` function.
4
4
  *
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
-
8
- wp_enqueue_script_module( 'store-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="test/store">
10
+ <div data-wp-text="state.0" data-testid="state-0"></div>
12
11
  <div
13
12
  data-testid="non-plain object"
14
13
  data-wp-text="state.isNotProxified"
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -3,18 +3,21 @@
3
3
  */
4
4
  import { store, getElement } from '@wordpress/interactivity';
5
5
 
6
+ // A non-object state should never be allowed.
7
+ store( 'test/store', { state: [ 'wrong' ] } );
6
8
 
7
9
  const { state } = store( 'test/store', {
8
10
  state: {
11
+ 0: 'right',
9
12
  get isNotProxified() {
10
13
  const { ref } = getElement();
11
14
  return state.elementRef === ref;
12
- }
15
+ },
13
16
  },
14
17
  callbacks: {
15
18
  init() {
16
19
  const { ref } = getElement();
17
20
  state.elementRef = ref; // HTMLElement
18
- }
19
- }
20
- } )
21
+ },
22
+ },
23
+ } );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "store-tag-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -7,8 +7,6 @@
7
7
  * @phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
8
8
  */
9
9
 
10
- wp_enqueue_script_module( 'store-tag-view' );
11
-
12
10
  // These variables simulates SSR.
13
11
  $test_store_tag_counter = 'ok' === $attributes['condition'] ? 3 : 0;
14
12
  $test_store_tag_double = $test_store_tag_counter * 2;
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "tovdom-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -8,8 +8,6 @@
8
8
  $plugin_url = plugin_dir_url( __DIR__ );
9
9
  $src_proc_ins = $plugin_url . 'tovdom/processing-instructions.js';
10
10
  $src_cdata = $plugin_url . 'tovdom/cdata.js';
11
-
12
- wp_enqueue_script_module( 'tovdom-view' );
13
11
  ?>
14
12
 
15
13
  <div data-wp-interactive="tovdom">
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "tovdom-islands-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -4,8 +4,6 @@
4
4
  *
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
-
8
- wp_enqueue_script_module( 'tovdom-islands-view' );
9
7
  ?>
10
8
 
11
9
  <div>
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "with-scope-view",
13
+ "viewScriptModule": "file:./view.js",
14
14
  "render": "file:./render.php"
15
15
  }
@@ -4,8 +4,6 @@
4
4
  *
5
5
  * @package gutenberg-test-interactive-blocks
6
6
  */
7
-
8
- wp_enqueue_script_module( 'with-scope-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="with-scope" data-wp-context='{"asyncCounter": 0, "syncCounter": 0}' data-wp-init--a='callbacks.asyncInit' data-wp-init--b='callbacks.syncInit'>
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -15,26 +15,8 @@ add_action(
15
15
  $block_json_files = glob( __DIR__ . '/interactive-blocks/**/block.json' );
16
16
 
17
17
  // Auto register all blocks that were found.
18
- foreach ( $block_json_files as $filename ) {
19
- $block_folder = dirname( $filename );
20
- $name = basename( $block_folder );
21
-
22
- $view_file = plugin_dir_url( $block_folder ) . $name . '/' . 'view.js';
23
-
24
- wp_register_script_module(
25
- $name . '-view',
26
- $view_file,
27
- array(
28
- '@wordpress/interactivity',
29
- array(
30
- 'id' => '@wordpress/interactivity-router',
31
- 'import' => 'dynamic',
32
- ),
33
- ),
34
- filemtime( $view_file )
35
- );
36
-
37
- register_block_type_from_metadata( $block_folder );
18
+ foreach ( $block_json_files as $block_json_file ) {
19
+ register_block_type( $block_json_file );
38
20
  }
39
21
  }
40
22
 
@@ -49,7 +31,8 @@ add_action(
49
31
  // But remove the server directive processing.
50
32
  remove_filter(
51
33
  'render_block_data',
52
- 'wp_interactivity_process_directives_of_interactive_blocks'
34
+ 'wp_interactivity_process_directives_of_interactive_blocks',
35
+ 100
53
36
  );
54
37
  }
55
38
  }