Skip to content

Commit 6a8db95

Browse files
committed
Overhaul playground preview links
Updates for latest query arguments and easier PR previews
1 parent 318da0b commit 6a8db95

File tree

3 files changed

+79
-52
lines changed

3 files changed

+79
-52
lines changed

html-api-debugger/interactivity.php

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,17 +177,37 @@ class="html-api-debugger-container html-api-debugger--grid"
177177
<label>
178178
<select id="htmlapi-wp-version">
179179
<option value="latest">latest</option>
180-
<option value="beta">beta</option>
181180
<option value="nightly">nightly</option>
181+
<option value="beta">beta</option>
182+
<option value="6.7">6.7</option>
183+
<option value="6.6">6.6</option>
184+
<option value="6.5">6.5</option>
182185
</select>
183186
</label>
184187
<button <?php wp_on_directive( 'click', 'handleCopyClick' ); ?> type="button">Copy shareable playground link</button><br>
185188
<label>
186-
<code>wordpress/develop</code> PR number:
187-
<input type="number" min="1" <?php wp_on_directive( 'input', 'handleCopyPrInput' ); ?>>
189+
<code>WordPress/develop</code> PR number:
190+
<input type="number" min="1" <?php wp_on_directive( 'input', 'handleCopyCorePrInput' ); ?>>
191+
</label>
192+
<label>
193+
<code>WordPress/gutenberg</code> PR number:
194+
<input type="number" min="1" <?php wp_on_directive( 'input', 'handleCopyGbPrInput' ); ?>>
188195
</label>
189196
<button <?php wp_on_directive( 'click', 'handleCopyPrClick' ); ?>>Copy shareable playground link to PR</button>
190-
<button <?php wp_on_directive( 'click', 'handleCheckPrClick' ); ?> data-wp-bind--disabled="state.checkingForPRPlaygroundLink">Check PR</button>
197+
<span data-wp-bind--hidden="!state.previewCoreLink">
198+
<a
199+
data-wp-bind--href="state.previewCoreLink.href"
200+
data-wp-text="state.previewCoreLink.text"
201+
rel="noopener noreferrer"
202+
></a>
203+
</span>
204+
<span data-wp-bind--hidden="!state.previewGutenbergLink">
205+
<a
206+
data-wp-bind--href="state.previewGutenbergLink.href"
207+
data-wp-text="state.previewGutenbergLink.text"
208+
rel="noopener noreferrer"
209+
></a>
210+
</span>
191211
</p>
192212
<details>
193213
<summary>debug response</summary>

html-api-debugger/readme.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Add a page to wp-admin for debugging the HTML API.
1212
== Changelog ==
1313

1414
= 1.9 =
15+
* Update WordPress Playground links to use current query args.
1516

1617
= 1.8 =
1718
* Highlight spans in HTML input on hover.

html-api-debugger/view.js

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ let debounceInputAbortController = null;
2222
let mutationObserver = null;
2323

2424
/**
25+
* @typedef Link
26+
* @property {string} href
27+
* @property {string} text
28+
*
2529
* @typedef DOM
2630
* @property {string|undefined} renderingMode
2731
* @property {string|undefined} doctypeName
@@ -65,7 +69,10 @@ let mutationObserver = null;
6569
* @property {boolean} showVirtual
6670
* @property {boolean} quirksMode
6771
* @property {boolean} fullParser
68-
* @property {number} previewPrNumber
72+
* @property {number|null} previewCorePrNumber
73+
* @property {number|null} previewGutenbergPrNumber
74+
* @property {Link|null} previewCoreLink
75+
* @property {Link|null} previewGutenbergLink
6976
* @property {boolean} checkingForPRPlaygroundLink
7077
*
7178
* @property {'breadcrumbs'|'insertionMode'} hoverInfo
@@ -113,6 +120,31 @@ const store = createStore(NS, {
113120
quirksMode: Boolean(localStorage.getItem(`${NS}-quirksMode`)),
114121
fullParser: Boolean(localStorage.getItem(`${NS}-fullParser`)),
115122

123+
previewCorePrNumber: null,
124+
previewGutenbergPrNumber: null,
125+
126+
/** @type {Link|null} */
127+
get previewCoreLink() {
128+
if (!store.state.previewCorePrNumber) {
129+
return null;
130+
}
131+
return {
132+
href: `https://github.com/WordPress/wordpress-develop/pull/${store.state.previewCorePrNumber}`,
133+
text: `wordpress-develop #${store.state.previewCorePrNumber}`,
134+
};
135+
},
136+
137+
/** @type {Link|null} */
138+
get previewGutenbergLink() {
139+
if (!store.state.previewGutenbergPrNumber) {
140+
return null;
141+
}
142+
return {
143+
href: `https://github.com/WordPress/gutenberg/pull/${store.state.previewGutenbergPrNumber}`,
144+
text: `Gutenberg #${store.state.previewGutenbergPrNumber}`,
145+
};
146+
},
147+
116148
hoverInfo: /** @type {typeof store.state.hoverInfo} */ (
117149
localStorage.getItem(`${NS}-hoverInfo`)
118150
),
@@ -516,67 +548,41 @@ const store = createStore(NS, {
516548
},
517549

518550
/** @param {InputEvent} e */
519-
handleCopyPrInput(e) {
551+
handleCopyCorePrInput(e) {
520552
const val = /** @type {HTMLInputElement} */ (e.target).valueAsNumber;
521553
if (Number.isFinite(val) && val > 0) {
522-
store.state.previewPrNumber = val;
554+
store.state.previewCorePrNumber = val;
523555
return;
524556
}
525-
store.state.previewPrNumber = val;
557+
store.state.previewCorePrNumber = null;
526558
},
527559

528-
handleCopyPrClick: function* () {
529-
const prNumber = store.state.previewPrNumber;
530-
const playgroundLink = new URL(store.state.playgroundLink);
531-
if (!prNumber) {
532-
alert('Please enter a PR number.');
560+
/** @param {InputEvent} e */
561+
handleCopyGbPrInput(e) {
562+
const val = /** @type {HTMLInputElement} */ (e.target).valueAsNumber;
563+
if (Number.isFinite(val) && val > 0) {
564+
store.state.previewGutenbergPrNumber = val;
533565
return;
534566
}
535-
const url = new URL(
536-
'https://playground.wordpress.net/plugin-proxy.php?org=WordPress&repo=wordpress-develop&workflow=Test%20Build%20Processes',
537-
);
538-
url.searchParams.set('artifact', `wordpress-build-${prNumber}`);
539-
url.searchParams.set('pr', prNumber.toString(10));
540-
541-
try {
542-
playgroundLink.searchParams.set('wp', url.href);
543-
yield navigator.clipboard.writeText(playgroundLink.href);
544-
} catch {
545-
alert('Copy failed, make sure the browser window is focused.');
546-
}
567+
store.state.previewGutenbergPrNumber = null;
547568
},
548569

549-
handleCheckPrClick: function* () {
550-
if (store.state.checkingForPRPlaygroundLink) {
551-
return;
552-
}
570+
handleCopyPrClick: function* () {
571+
const corePrNumber = store.state.previewCorePrNumber;
572+
const gbPrNumber = store.state.previewGutenbergPrNumber;
553573

554-
const prNumber = store.state.previewPrNumber;
555-
if (!prNumber) {
556-
alert('Please enter a PR number.');
557-
return;
574+
const playgroundLink = new URL(store.state.playgroundLink);
575+
if (corePrNumber) {
576+
playgroundLink.searchParams.set('core-pr', String(corePrNumber));
577+
}
578+
if (gbPrNumber) {
579+
playgroundLink.searchParams.set('gutenberg-pr', String(gbPrNumber));
558580
}
559581

560582
try {
561-
store.state.checkingForPRPlaygroundLink = true;
562-
563-
const url = new URL(
564-
'https://playground.wordpress.net/plugin-proxy.php?org=WordPress&repo=wordpress-develop&workflow=Test%20Build%20Processes',
565-
);
566-
url.searchParams.set('artifact', `wordpress-build-${prNumber}`);
567-
url.searchParams.set('pr', prNumber.toString(10));
568-
url.searchParams.set('verify_only', 'true');
569-
/** @type {Response} */
570-
const response = yield fetch(url.href, {
571-
method: 'GET',
572-
});
573-
if (!response.ok) {
574-
alert('The PR number is not valid or has not been built yet.');
575-
return;
576-
}
577-
alert('The PR number looks good!');
578-
} finally {
579-
store.state.checkingForPRPlaygroundLink = false;
583+
yield navigator.clipboard.writeText(playgroundLink.href);
584+
} catch {
585+
alert('Copy failed, make sure the browser window is focused.');
580586
}
581587
},
582588
});

0 commit comments

Comments
 (0)