2024-05-09 05:30:35 +00:00
const https = require ( 'https' ) ;
const generateWordpressPlaygroundBlueprint = ( runId , prNumber ) => {
const defaultSchema = {
landingPage : '/wp-admin/admin.php?page=wc-admin' ,
preferredVersions : {
php : '8.0' ,
wp : 'latest' ,
} ,
phpExtensionBundles : [ 'kitchen-sink' ] ,
features : { networking : true } ,
steps : [
{
step : 'installPlugin' ,
pluginZipFile : {
resource : 'url' ,
url : ` https://playground.wordpress.net/plugin-proxy.php?org=woocommerce&repo=woocommerce&workflow=Build%20Live%20Branch&artifact=plugins- ${ runId } &pr= ${ prNumber } ` ,
} ,
options : {
activate : true ,
} ,
} ,
2024-05-27 17:19:56 +00:00
{
step : 'installPlugin' ,
pluginZipFile : {
resource : 'url' ,
url : ` https://github-proxy.com/https://github.com/woocommerce/woocommerce/releases/download/wc-beta-tester-2.3.1/woocommerce-beta-tester.zip ` ,
} ,
options : {
activate : true ,
} ,
} ,
2024-05-09 05:30:35 +00:00
{
step : 'login' ,
username : 'admin' ,
password : 'password' ,
} ,
] ,
plugins : [ ] ,
} ;
return defaultSchema ;
} ;
async function run ( { github , context , core } ) {
const commentInfo = {
owner : context . repo . owner ,
repo : context . repo . repo ,
issue _number : context . issue . number ,
} ;
const comments = ( await github . rest . issues . listComments ( commentInfo ) )
. data ;
let existingCommentId = null ;
for ( const currentComment of comments ) {
if (
currentComment . user . type === 'Bot' &&
currentComment . body . includes ( 'Test using WordPress Playground' )
) {
existingCommentId = currentComment . id ;
break ;
}
}
const defaultSchema = generateWordpressPlaygroundBlueprint (
context . runId ,
context . issue . number
) ;
const url = ` https://playground.wordpress.net/# ${ JSON . stringify (
defaultSchema
) } ` ;
const body = `
# # Test using WordPress Playground
The changes in this pull request can be previewed and tested using a [ WordPress Playground ] ( https : //developer.wordpress.org/playground/) instance.
[ WordPress Playground ] ( https : //developer.wordpress.org/playground/) is an experimental project that creates a full WordPress instance entirely within the browser.
[ Test this pull request with WordPress Playground ] ( $ { url } ) .
Note that this URL is valid for 30 days from when this comment was last updated . You can update it by closing / reopening the PR or pushing a new commit .
` ;
if ( existingCommentId ) {
await github . rest . issues . updateComment ( {
owner : commentInfo . owner ,
repo : commentInfo . repo ,
comment _id : existingCommentId ,
body : body ,
} ) ;
} else {
commentInfo . body = body ;
await github . rest . issues . createComment ( commentInfo ) ;
}
}
module . exports = { run } ;