@wordpress/e2e-tests 7.24.0 → 7.26.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 (79) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +9 -9
  3. package/plugins/delete-installed-fonts.php +68 -0
  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 +0 -2
  16. package/plugins/interactive-blocks/directive-context/view.asset.php +9 -0
  17. package/plugins/interactive-blocks/directive-each/block.json +1 -1
  18. package/plugins/interactive-blocks/directive-each/render.php +0 -2
  19. package/plugins/interactive-blocks/directive-each/view.asset.php +9 -0
  20. package/plugins/interactive-blocks/directive-init/block.json +1 -1
  21. package/plugins/interactive-blocks/directive-init/render.php +0 -2
  22. package/plugins/interactive-blocks/directive-init/view.asset.php +1 -0
  23. package/plugins/interactive-blocks/directive-key/block.json +1 -1
  24. package/plugins/interactive-blocks/directive-key/render.php +0 -2
  25. package/plugins/interactive-blocks/directive-key/view.asset.php +9 -0
  26. package/plugins/interactive-blocks/directive-on/block.json +1 -1
  27. package/plugins/interactive-blocks/directive-on/render.php +0 -2
  28. package/plugins/interactive-blocks/directive-on/view.asset.php +1 -0
  29. package/plugins/interactive-blocks/directive-on-document/block.json +1 -1
  30. package/plugins/interactive-blocks/directive-on-document/render.php +0 -2
  31. package/plugins/interactive-blocks/directive-on-document/view.asset.php +1 -0
  32. package/plugins/interactive-blocks/directive-on-window/block.json +1 -1
  33. package/plugins/interactive-blocks/directive-on-window/render.php +0 -2
  34. package/plugins/interactive-blocks/directive-on-window/view.asset.php +1 -0
  35. package/plugins/interactive-blocks/directive-priorities/block.json +1 -1
  36. package/plugins/interactive-blocks/directive-priorities/render.php +0 -2
  37. package/plugins/interactive-blocks/directive-priorities/view.asset.php +1 -0
  38. package/plugins/interactive-blocks/directive-run/block.json +1 -1
  39. package/plugins/interactive-blocks/directive-run/render.php +0 -2
  40. package/plugins/interactive-blocks/directive-run/view.asset.php +9 -0
  41. package/plugins/interactive-blocks/directive-style/block.json +1 -1
  42. package/plugins/interactive-blocks/directive-style/render.php +0 -2
  43. package/plugins/interactive-blocks/directive-style/view.asset.php +1 -0
  44. package/plugins/interactive-blocks/directive-text/block.json +1 -1
  45. package/plugins/interactive-blocks/directive-text/render.php +0 -2
  46. package/plugins/interactive-blocks/directive-text/view.asset.php +1 -0
  47. package/plugins/interactive-blocks/directive-watch/block.json +1 -1
  48. package/plugins/interactive-blocks/directive-watch/render.php +0 -2
  49. package/plugins/interactive-blocks/directive-watch/view.asset.php +1 -0
  50. package/plugins/interactive-blocks/generator-scope/block.json +15 -0
  51. package/plugins/interactive-blocks/generator-scope/render.php +16 -0
  52. package/plugins/interactive-blocks/generator-scope/view.asset.php +1 -0
  53. package/plugins/interactive-blocks/generator-scope/view.js +23 -0
  54. package/plugins/interactive-blocks/negation-operator/block.json +1 -1
  55. package/plugins/interactive-blocks/negation-operator/render.php +0 -2
  56. package/plugins/interactive-blocks/negation-operator/view.asset.php +1 -0
  57. package/plugins/interactive-blocks/router-navigate/block.json +1 -1
  58. package/plugins/interactive-blocks/router-navigate/render.php +0 -2
  59. package/plugins/interactive-blocks/router-navigate/view.asset.php +9 -0
  60. package/plugins/interactive-blocks/router-regions/block.json +1 -1
  61. package/plugins/interactive-blocks/router-regions/render.php +0 -2
  62. package/plugins/interactive-blocks/router-regions/view.asset.php +9 -0
  63. package/plugins/interactive-blocks/store/block.json +1 -1
  64. package/plugins/interactive-blocks/store/render.php +2 -3
  65. package/plugins/interactive-blocks/store/view.asset.php +1 -0
  66. package/plugins/interactive-blocks/store/view.js +7 -4
  67. package/plugins/interactive-blocks/store-tag/block.json +1 -1
  68. package/plugins/interactive-blocks/store-tag/render.php +0 -2
  69. package/plugins/interactive-blocks/store-tag/view.asset.php +1 -0
  70. package/plugins/interactive-blocks/tovdom/block.json +1 -1
  71. package/plugins/interactive-blocks/tovdom/render.php +0 -2
  72. package/plugins/interactive-blocks/tovdom/view.asset.php +1 -0
  73. package/plugins/interactive-blocks/tovdom-islands/block.json +1 -1
  74. package/plugins/interactive-blocks/tovdom-islands/render.php +0 -2
  75. package/plugins/interactive-blocks/tovdom-islands/view.asset.php +1 -0
  76. package/plugins/interactive-blocks/with-scope/block.json +1 -1
  77. package/plugins/interactive-blocks/with-scope/render.php +0 -2
  78. package/plugins/interactive-blocks/with-scope/view.asset.php +1 -0
  79. package/plugins/interactive-blocks.php +4 -21
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 7.26.0 (2024-04-03)
6
+
7
+ ## 7.25.0 (2024-03-21)
8
+
5
9
  ## 7.24.0 (2024-03-06)
6
10
 
7
11
  ## 7.23.0 (2024-02-21)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/e2e-tests",
3
- "version": "7.24.0",
3
+ "version": "7.26.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,13 +23,13 @@
23
23
  "node": ">=14"
24
24
  },
25
25
  "dependencies": {
26
- "@wordpress/e2e-test-utils": "^10.24.0",
27
- "@wordpress/interactivity": "^5.2.0",
28
- "@wordpress/interactivity-router": "^1.3.0",
29
- "@wordpress/jest-console": "^7.24.0",
30
- "@wordpress/jest-puppeteer-axe": "^6.24.0",
31
- "@wordpress/scripts": "^27.4.0",
32
- "@wordpress/url": "^3.54.0",
26
+ "@wordpress/e2e-test-utils": "^10.26.0",
27
+ "@wordpress/interactivity": "^5.4.0",
28
+ "@wordpress/interactivity-router": "^1.5.0",
29
+ "@wordpress/jest-console": "^7.26.0",
30
+ "@wordpress/jest-puppeteer-axe": "^6.26.0",
31
+ "@wordpress/scripts": "^27.6.0",
32
+ "@wordpress/url": "^3.56.0",
33
33
  "chalk": "^4.0.0",
34
34
  "expect-puppeteer": "^4.4.0",
35
35
  "filenamify": "^4.2.0",
@@ -46,5 +46,5 @@
46
46
  "publishConfig": {
47
47
  "access": "public"
48
48
  },
49
- "gitHead": "ac3c3e465a083081a86a4da6ee6fb817b41e5130"
49
+ "gitHead": "ac2b13783c28f959770cf029a797a712f59e1958"
50
50
  }
@@ -0,0 +1,68 @@
1
+ <?php
2
+ /**
3
+ * Plugin Name: Gutenberg Test Delete Installed Fonts
4
+ * Plugin URI: https://github.com/WordPress/gutenberg
5
+ * Author: Gutenberg Team
6
+ *
7
+ * @package gutenberg-test-delete-installed-fonts
8
+ */
9
+
10
+ /**
11
+ * Saves a randomly generated temporary font directory to use for e2e tests.
12
+ */
13
+ function gutenberg_e2e_set_temp_font_dir() {
14
+ update_option( 'gutenberg_e2e_font_dir', '/e2e_fonts_' . wp_generate_uuid4() );
15
+ }
16
+ register_activation_hook( __FILE__, 'gutenberg_e2e_set_temp_font_dir' );
17
+
18
+ /**
19
+ * Uses the randomly generated font directory for the duration of the font tests.
20
+ */
21
+ function gutenberg_filter_e2e_font_dir( $font_dir ) {
22
+ $subdir = get_option( 'gutenberg_e2e_font_dir' );
23
+
24
+ $font_dir['path'] .= $subdir;
25
+ $font_dir['url'] .= $subdir;
26
+ $font_dir['basedir'] .= $subdir;
27
+ $font_dir['baseurl'] .= $subdir;
28
+
29
+ return $font_dir;
30
+ }
31
+ add_filter( 'font_dir', 'gutenberg_filter_e2e_font_dir' );
32
+
33
+ /**
34
+ * Deletes all user installed fonts, associated font files, the fonts directory, and user global styles typography
35
+ * setings for the current theme so that we can test uploading/installing fonts in a clean environment.
36
+ */
37
+ function gutenberg_delete_installed_fonts() {
38
+ $font_family_ids = new WP_Query(
39
+ array(
40
+ 'post_type' => 'wp_font_family',
41
+ 'posts_per_page' => -1,
42
+ 'fields' => 'ids',
43
+ )
44
+ );
45
+
46
+ // Delete all font families, their child font faces, and associated font files.
47
+ foreach ( $font_family_ids->posts as $font_family_id ) {
48
+ wp_delete_post( $font_family_id, true );
49
+ }
50
+
51
+ // Delete the font directory, which should now be empty.
52
+ $font_path = wp_get_font_dir()['path'];
53
+
54
+ if ( is_dir( $font_path ) ) {
55
+ rmdir( $font_path );
56
+ }
57
+
58
+ // Delete any installed fonts from global styles.
59
+ $global_styles_post_id = WP_Theme_JSON_Resolver::get_user_global_styles_post_id();
60
+ $request = new WP_REST_Request( 'POST', '/wp/v2/global-styles/' . $global_styles_post_id );
61
+ $request->set_body_params( array( 'settings' => array( 'typography' => array( 'fontFamilies' => array() ) ) ) );
62
+
63
+ rest_do_request( $request );
64
+ }
65
+
66
+ // Clean up fonts on plugin activation and deactivation.
67
+ register_activation_hook( __FILE__, 'gutenberg_delete_installed_fonts' );
68
+ register_deactivation_hook( __FILE__, 'gutenberg_delete_installed_fonts' );
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://schemas.wp.org/trunk/block.json",
3
+ "apiVersion": 2,
4
+ "name": "test/deferred-store",
5
+ "title": "E2E Interactivity tests - deferred store",
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,15 @@
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/deferred-store"
11
+ <?php echo wp_interactivity_data_wp_context( array( 'text' => '!dlrow ,olleH' ) ); ?>
12
+ >
13
+ <span data-wp-text="state.reversedText" data-testid="result"></span>
14
+ <span data-wp-text="state.reversedTextGetter" data-testid="result-getter"></span>
15
+ </div>
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -0,0 +1,20 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store, getContext } from '@wordpress/interactivity';
5
+
6
+ document.addEventListener( 'DOMContentLoaded', () => {
7
+ setTimeout( () => {
8
+ store( 'test/deferred-store', {
9
+ state: {
10
+ reversedText() {
11
+ return [ ...getContext().text ].reverse().join( '' );
12
+ },
13
+
14
+ get reversedTextGetter() {
15
+ return [ ...getContext().text ].reverse().join( '' );
16
+ },
17
+ },
18
+ } );
19
+ }, 50 );
20
+ } );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "directive-bind-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-bind-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-bind">
@@ -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-class-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-class-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive='{"namespace": "directive-class"}'>
@@ -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-context-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-context-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive='{"namespace": "directive-context"}'>
@@ -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": "directive-each-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-each-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-each">
@@ -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": "directive-init-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-init-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-init">
@@ -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-key-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-key-view' );
9
7
  ?>
10
8
 
11
9
  <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
+ );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "directive-on-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-on-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-on">
@@ -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-on-document-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-on-document-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-on-document">
@@ -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-on-window-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-on-window-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-on-window">
@@ -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-priorities-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-priorities-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-priorities">
@@ -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-run-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-run-view' );
9
7
  ?>
10
8
 
11
9
  <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
+ );
@@ -10,6 +10,6 @@
10
10
  "interactivity": true
11
11
  },
12
12
  "textdomain": "e2e-interactivity",
13
- "viewScript": "directive-style-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-style-view' );
9
7
  ?>
10
8
 
11
9
  <div data-wp-interactive="directive-style">
@@ -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-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,8 +7,6 @@
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',
@@ -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": "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
  }