$styles =
[ 'default' => '//div[@class="views-row"]',
// Olivero does not use the 'views-col' class.
'grid' => '//div[contains(@class, "views-col") or contains(@class, "views-view-grid__item-inner")]',
'html_list' => '//div[@class="item-list"]//li',
];
$themes =
['olivero', 'stable9', 'stark', 'claro'
];
foreach ($themes as $theme) { \Drupal::
service('theme_installer'
)->
install([$theme]);
\Drupal::
theme()->
setActiveTheme(\Drupal::
service('theme.initialization'
)->
initTheme($theme));
foreach ($styles as $type =>
$xpath) { $view = Views::
getView('test_page_display'
);
$view->storage->
invalidateCaches();
$view->
initDisplay();
$view->
setDisplay('empty_row'
);
$view->displayHandlers->
get('empty_row'
)->default_display->options
['style'
]['type'
] =
$type;
$view->
initStyle();
$this->
executeView($view);
$output =
$view->
preview();
$output = \Drupal::
service('renderer'
)->
renderRoot($output);
$this->
setRawContent($output);