'use strict'; const assert = require('node:assert/strict'); const { execFileSync } = require('node:child_process'); const path = require('node:path'); const test = require('node:test'); const cases = JSON.parse(execFileSync(process.env.PHP_BINARY || 'php', [ path.join(__dirname, 'tab-posts-render-harness.php'), ], { encoding: 'utf8' })).cases; for (const style of ['list', 'card', 'mini']) { test(`article ${style} widget renders its saved layout directly`, () => { const html = cases[`posts_${style}_detail`]; assert.match(html, new RegExp(`class="widget-main-post mb20 style-${style}"`)); assert.match(html, /data-widget="posts" data-instance="jio_widget_posts-3"/); assert.match(html, /data-loaded="1" aria-live="polite" aria-busy="false"/); assert.equal((html.match(/