@wordpress/e2e-tests 7.27.0 → 7.29.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/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 7.29.0 (2024-05-16)
6
+
7
+ ## 7.28.0 (2024-05-02)
8
+
5
9
  ## 7.27.0 (2024-04-19)
6
10
 
7
11
  ## 7.26.0 (2024-04-03)
@@ -0,0 +1,91 @@
1
+ <?php
2
+
3
+ add_filter(
4
+ 'template_include',
5
+ static function ( $template ) {
6
+
7
+ global $timestart, $wpdb;
8
+
9
+ $server_timing_values = array();
10
+ $template_start = microtime( true );
11
+
12
+ $server_timing_values['wpBeforeTemplate'] = $template_start - $timestart;
13
+
14
+ ob_start();
15
+
16
+ add_action(
17
+ 'shutdown',
18
+ static function () use ( $server_timing_values, $template_start, $wpdb ) {
19
+ $output = ob_get_clean();
20
+
21
+ $server_timing_values['wpTemplate'] = microtime( true ) - $template_start;
22
+
23
+ $server_timing_values['wpTotal'] = $server_timing_values['wpBeforeTemplate'] + $server_timing_values['wpTemplate'];
24
+
25
+ /*
26
+ * While values passed via Server-Timing are intended to be durations,
27
+ * any numeric value can actually be passed.
28
+ * This is a nice little trick as it allows to easily get this information in JS.
29
+ */
30
+ $server_timing_values['wpMemoryUsage'] = memory_get_usage();
31
+ $server_timing_values['wpDbQueries'] = $wpdb->num_queries;
32
+
33
+ $header_values = array();
34
+ foreach ( $server_timing_values as $slug => $value ) {
35
+ if ( is_float( $value ) ) {
36
+ $value = round( $value * 1000.0, 2 );
37
+ }
38
+ $header_values[] = sprintf( '%1$s;dur=%2$s', $slug, $value );
39
+ }
40
+ header( 'Server-Timing: ' . implode( ', ', $header_values ) );
41
+
42
+ echo $output;
43
+ },
44
+ PHP_INT_MIN
45
+ );
46
+
47
+ return $template;
48
+ },
49
+ PHP_INT_MAX
50
+ );
51
+
52
+ add_action(
53
+ 'admin_init',
54
+ static function () {
55
+ global $timestart, $wpdb;
56
+
57
+ ob_start();
58
+
59
+ add_action(
60
+ 'shutdown',
61
+ static function () use ( $wpdb, $timestart ) {
62
+ $output = ob_get_clean();
63
+
64
+ $server_timing_values = array();
65
+
66
+ $server_timing_values['wpTotal'] = microtime( true ) - $timestart;
67
+
68
+ /*
69
+ * While values passed via Server-Timing are intended to be durations,
70
+ * any numeric value can actually be passed.
71
+ * This is a nice little trick as it allows to easily get this information in JS.
72
+ */
73
+ $server_timing_values['wpMemoryUsage'] = memory_get_usage();
74
+ $server_timing_values['wpDbQueries'] = $wpdb->num_queries;
75
+
76
+ $header_values = array();
77
+ foreach ( $server_timing_values as $slug => $value ) {
78
+ if ( is_float( $value ) ) {
79
+ $value = round( $value * 1000.0, 2 );
80
+ }
81
+ $header_values[] = sprintf( '%1$s;dur=%2$s', $slug, $value );
82
+ }
83
+ header( 'Server-Timing: ' . implode( ', ', $header_values ) );
84
+
85
+ echo $output;
86
+ },
87
+ PHP_INT_MIN
88
+ );
89
+ },
90
+ PHP_INT_MAX
91
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/e2e-tests",
3
- "version": "7.27.0",
3
+ "version": "7.29.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.27.0",
27
- "@wordpress/interactivity": "^5.5.0",
28
- "@wordpress/interactivity-router": "^1.6.0",
29
- "@wordpress/jest-console": "^7.27.0",
30
- "@wordpress/jest-puppeteer-axe": "^6.27.0",
31
- "@wordpress/scripts": "^27.7.0",
32
- "@wordpress/url": "^3.57.0",
26
+ "@wordpress/e2e-test-utils": "^10.29.0",
27
+ "@wordpress/interactivity": "^5.7.0",
28
+ "@wordpress/interactivity-router": "^1.8.0",
29
+ "@wordpress/jest-console": "^7.29.0",
30
+ "@wordpress/jest-puppeteer-axe": "^6.29.0",
31
+ "@wordpress/scripts": "^27.9.0",
32
+ "@wordpress/url": "^3.59.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": "280403b4c1cf6cc2c55a6c4d56f9ef91145e4191"
49
+ "gitHead": "42f38f287506a6b3ed8ccba839b18ad066821044"
50
50
  }
@@ -16,5 +16,5 @@ document.addEventListener( 'DOMContentLoaded', () => {
16
16
  },
17
17
  },
18
18
  } );
19
- }, 50 );
19
+ }, 100 );
20
20
  } );
@@ -93,6 +93,7 @@
93
93
  <button
94
94
  data-testid="toggle value"
95
95
  data-wp-on--click="actions.toggleValue"
96
+ data-wp-bind--data-toggle-count="context.count"
96
97
  >Toggle</button>
97
98
  </div>
98
99
  <?php endforeach; ?>
@@ -32,6 +32,7 @@ const { state, foo } = store( 'directive-bind', {
32
32
 
33
33
  context.previousValue = context.value;
34
34
  context.value = previousValue;
35
+ context.count = ( context.count ?? 0 ) + 1;
35
36
  },
36
37
  },
37
38
  } );
@@ -147,9 +147,9 @@ store( 'directive-each', {
147
147
  state
148
148
  .animalBreeds
149
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' );
150
+ if ( name === 'Dog') {breeds.unshift( 'german shepherd' );}
151
+ if ( name === 'Cat') {breeds.unshift( 'maine coon' );}
152
+ if ( name === 'Rat') {breeds.unshift( 'satin' );}
153
153
  } );
154
154
  }
155
155
  }
@@ -6,7 +6,8 @@
6
6
  */
7
7
  ?>
8
8
 
9
- <div data-wp-interactive="directive-on">
9
+ <?php // A wrong directive name like "data-wp-on--" should not kill the interactivity. ?>
10
+ <div data-wp-interactive="directive-on" data-wp-on--="">
10
11
  <div>
11
12
  <p data-wp-text="state.counter" data-testid="counter">0</p>
12
13
  <button
@@ -24,4 +24,8 @@
24
24
  <p data-wp-text="state.counter" data-testid="counter">0</p>
25
25
  </div>
26
26
  </div>
27
+ <div data-wp-on-document--keydown="actions.keydownHandler" data-wp-on-document--keydown--second="actions.keydownSecondHandler">
28
+ <p data-wp-text="state.keydownHandler" data-testid="keydownHandler">no</p>
29
+ <p data-wp-text="state.keydownSecondHandler" data-testid="keydownSecondHandler">no</p>
30
+ </div>
27
31
  </div>
@@ -25,6 +25,8 @@ const { state } = store( 'directive-on-document', {
25
25
  counter: 0,
26
26
  isVisible: true,
27
27
  isEventAttached: 'no',
28
+ keydownHandler: 'no',
29
+ keydownSecondHandler: 'no',
28
30
  },
29
31
  callbacks: {
30
32
  keydownHandler() {
@@ -39,5 +41,11 @@ const { state } = store( 'directive-on-document', {
39
41
  state.isEventAttached = 'no';
40
42
  state.isVisible = ! state.isVisible;
41
43
  },
44
+ keydownHandler: () => {
45
+ state.keydownHandler = 'yes';
46
+ },
47
+ keydownSecondHandler: () => {
48
+ state.keydownSecondHandler = 'yes';
49
+ }
42
50
  }
43
51
  } );
@@ -21,4 +21,8 @@
21
21
  <p data-wp-text="state.counter" data-testid="counter">0</p>
22
22
  </div>
23
23
  </div>
24
+ <div data-wp-on-window--resize="actions.resizeHandler" data-wp-on-window--resize--second="actions.resizeSecondHandler">
25
+ <p data-wp-text="state.resizeHandler" data-testid="resizeHandler">no</p>
26
+ <p data-wp-text="state.resizeSecondHandler" data-testid="resizeSecondHandler">no</p>
27
+ </div>
24
28
  </div>
@@ -25,6 +25,8 @@ const { state } = store( 'directive-on-window', {
25
25
  counter: 0,
26
26
  isVisible: true,
27
27
  isEventAttached: 'no',
28
+ resizeHandler: 'no',
29
+ resizeSecondHandler: 'no',
28
30
  },
29
31
  callbacks: {
30
32
  resizeHandler() {
@@ -39,5 +41,11 @@ const { state } = store( 'directive-on-window', {
39
41
  state.isEventAttached = 'no';
40
42
  state.isVisible = ! state.isVisible;
41
43
  },
44
+ resizeHandler: () => {
45
+ state.resizeHandler = 'yes';
46
+ },
47
+ resizeSecondHandler: () => {
48
+ state.resizeSecondHandler = 'yes';
49
+ }
42
50
  }
43
51
  } );
@@ -24,8 +24,8 @@ const namespace = 'directive-priorities';
24
24
  */
25
25
  const executionProof = ( n ) => {
26
26
  const el = document.querySelector( '[data-testid="execution order"]' );
27
- if ( ! el.textContent ) el.textContent = n;
28
- else el.textContent += `, ${ n }`;
27
+ if ( ! el.textContent ) {el.textContent = n;}
28
+ else {el.textContent += `, ${ n }`;}
29
29
  };
30
30
 
31
31
  /**
@@ -13,7 +13,7 @@ directive(
13
13
  'show-mock',
14
14
  ( { directives: { 'show-mock': showMock }, element, evaluate } ) => {
15
15
  const entry = showMock.find( ( { suffix } ) => suffix === 'default' );
16
- if ( ! evaluate( entry ) ) return null;
16
+ if ( ! evaluate( entry ) ) {return null;}
17
17
  return element;
18
18
  }
19
19
  );
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://schemas.wp.org/trunk/block.json",
3
+ "apiVersion": 2,
4
+ "name": "test-namespace/directive-bind",
5
+ "title": "E2E Interactivity tests - directive bind",
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,23 @@
1
+ <?php
2
+ /**
3
+ * HTML for testing the directive `data-wp-bind`.
4
+ *
5
+ * @package gutenberg-test-interactive-blocks
6
+ */
7
+ ?>
8
+
9
+ <div data-wp-interactive="">
10
+ <a data-wp-bind--href="state.url" data-testid="empty namespace"></a>
11
+ </div>
12
+
13
+ <div data-wp-interactive="namespace">
14
+ <a data-wp-bind--href="state.url" data-testid="correct namespace"></a>
15
+ </div>
16
+
17
+ <div data-wp-interactive="{}">
18
+ <a data-wp-bind--href="state.url" data-testid="object namespace"></a>
19
+ </div>
20
+
21
+ <div data-wp-interactive>
22
+ <a data-wp-bind--href="other::state.url" data-testid="other namespace"></a>
23
+ </div>
@@ -0,0 +1 @@
1
+ <?php return array( 'dependencies' => array( '@wordpress/interactivity' ) );
@@ -0,0 +1,16 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store } from '@wordpress/interactivity';
5
+
6
+ store( 'namespace', {
7
+ state: {
8
+ url: '/some-url',
9
+ },
10
+ } );
11
+
12
+ store( 'other', {
13
+ state: {
14
+ url: '/other-store-url',
15
+ },
16
+ } );
@@ -0,0 +1,26 @@
1
+ <?php
2
+ /**
3
+ * Plugin Name: Lightbox Allow Editing False Enabled False
4
+ * Plugin URI: https://github.com/WordPress/gutenberg
5
+ * Author: Gutenberg Team
6
+ *
7
+ * @package gutenberg-lightbox-allow-editing-false-enabled-false
8
+ */
9
+
10
+ function filter_theme_json_theme( $theme_json ) {
11
+ $new_data = array(
12
+ 'version' => 2,
13
+ 'settings' => array(
14
+ 'blocks' => array(
15
+ 'core/image' => array(
16
+ 'lightbox' => array(
17
+ 'allowEditing' => false,
18
+ 'enabled' => false,
19
+ ),
20
+ ),
21
+ ),
22
+ ),
23
+ );
24
+ return $theme_json->update_with( $new_data );
25
+ }
26
+ add_filter( 'wp_theme_json_data_theme', 'filter_theme_json_theme' );