Uso programático do Playground CLI
O Playground CLI também pode ser controlado de forma programática no seu código JavaScript/TypeScript usando a função runCLI. Isso dá acesso direto a todas as funcionalidades do CLI no seu código, o que é útil para automatizar testes de ponta a ponta. As opções que você passa para runCLI correspondem diretamente às opções do CLI.
Executando uma instância WordPress com uma versão específica
Usando a função runCLI, você pode especificar opções como as versões do PHP e do WordPress. No exemplo abaixo, solicitamos PHP 8.3, a versão mais recente do WordPress e login automático. Todos os argumentos suportados estão definidos no tipo RunCLIArgs.
import { runCLI } from "@wp-playground/cli";
const cliServer = await runCLI({
command: 'server',
php: '8.3',
wp: 'latest',
login: true,
});
Execute o código acima usando seu runtime TypeScript preferido, por exemplo tsx:
npx tsx my-script.ts
Definindo um blueprint
Você pode fornecer um blueprint de duas formas: como um objeto literal passado diretamente à propriedade blueprint, ou como uma string com o caminho para um arquivo .json externo.
import { runCLI, RunCLIServer } from "@wp-playground/cli";
const cliServer: RunCLIServer = await runCLI({
command: 'server',
wp: 'latest',
blueprint: {
steps: [
{
"step": "setSiteOptions",
"options": {
"blogname": "Blueprint Title",
"blogdescription": "A great blog description"
}
}
],
},
});
Para segurança total de tipos ao definir seu objeto de blueprint, você pode importar e usar o tipo BlueprintDeclaration do pacote @wp-playground/blueprints:
import type { BlueprintDeclaration } from '@wp-playground/blueprints';
const myBlueprint: BlueprintDeclaration = {
landingPage: "/wp-admin/",
steps: [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "twentytwentyone"
},
"options": {
"activate": true
}
}
]
};
Montando um plugin de forma programática
Você pode montar diretórios locais de forma programática usando runCLI. As opções mount e mount-before-install estão disponíveis. A propriedade hostPath espera um caminho para um diretório na sua máquina local. Esse caminho deve ser relativo ao local de onde seu script está sendo executado.
import { runCLI } from "@wp-playground/cli";
cliServer = await runCLI({
command: 'server',
login: true,
'mount-before-install': [
{
hostPath: './[my-plugin-local-path]',
vfsPath: '/wordpress/wp-content/plugins/my-plugin',
},
],
});
Combinando montagens com blueprints
Você pode combinar a montagem de partes do projeto com blueprints, por exemplo:
import { runCLI, RunCLIServer } from "@wp-playground/cli";
const cliServer: RunCLIServer;
cliServer = await runCLI({
command: 'server',
php: '8.3',
wp: 'latest',
login: true,
mount: [
{
"hostPath": "./plugin/",
"vfsPath": "/wordpress/wp-content/plugins/playwright-test"
}
],
blueprint: {
steps: [
{
"step": "activatePlugin",
"pluginPath": "/wordpress/wp-content/plugins/playwright-test/plugin-playwright.php"
}
]
}
});