Sitecore Test Image Previews Not Displaying: What to Do

When you try to create a new Sitecore content test and preview by opening a test dialog window, you may see a screen in which previews are not displaying. But why?

Sitecore-test-image-previews-absent-photo

I asked myself this question when I faced such an issue while working on one of our client projects.

In this article, I would like to explain the root cause of this bug and tell you which Sitecore tool I utilized to generate screenshots for test previews. For this purpose, I simulated the problem on my local Sitecore Habitat instance. The following is my step-by-step instruction.

Step 1

First of all, I opened the Chrome DevTool Console panel and checked that no errors had been detected.

Sitecore-test-Chrome-dev-tool-console-photo

Step 2

Then, I had to check Sitecore logs that are critical for diagnosing issues with Sitecore solutions. On my local Habitat instance, the log files are located in:

Sitecore-habitat-local-photo

In a while, I found the following output messages:


ManagedPoolThread #2 22:14:53 INFO  Job started: Generate screenshots

22:14:53 ERROR [Content Testing]: Cannot find PhantomJS executable at 'C:\inetpub\wwwroot\habitat.dev.local\App_Data/tools/phantomjs/phantomjs.exe'. Aborting screenshot generation.

...

ManagedPoolThread #2 22:14:53 INFO  Job ended: Generate screenshots (units processed: 6)

Hmmm… Just thinking out loud: there is a Sitecore job that tries to handle executable PhantomJS tool that generates screenshots, and this tool was not found at

~/App_Data/tools/phantomjs/phantomjs.exe

What kind of monster is PhantomJS that plays the main role there? I started googling and was navigated to the official doc.sitecore.com portal. There, I discovered the following information:

Sitecore uses PhantomJS to generate screenshots of pages for use in the Sitecore clients. It is an external executable (.exe) file that ships with Sitecore in the $(dataFolder)\tools\phantomjs folder. Sitecore references this file through the ContentTesting.PhantomJS.ExecutablePath setting in the \App_Config\Sitecore\ContentTesting\Sitecore.ContentTesting.config patch file.

Ok. Now we know what a PhantomJS is. Let’s jump back to our issue.

Step 3

The following thing that I checked was the data folder (C:\inetpub\wwwroot\habitat.dev.local\App_Data). I figured out that there had indeed been no tools folder inside:

Sitecore-test-data-folder-photo

Step 4

So, where can I take the PhantomJS tool to put it into my Habitat instance? Of course, I can download the appropriate Sitecore package from the official download portal, where this tool should be located. Let’s check this guess!

My local Sitecore instance is based on Sitecore 9.1. Update-1. Therefore, I can download the appropriate package (XP0, XP1, XM1, etc. — depending on the Sitecore role deployed).

Sitecore-download-options-image

In my case, I downloaded the On-Premises XP Single (XP0) package.

Sitecore 9.1.1 rev. 002459 (WDP XP0 packages).zip

Sitecore-package-downloaded-image

Inside the archive, I found the target tools folder that contains PhantomJS files:

Tools-folder-PhantomJS-photo

The full archive path is:

Sitecore 9.1.1 rev. 002459 (WDP XP0 packages).zip\Sitecore 9.1.1 rev. 002459 (OnPrem)_single.scwdp.zip\Content\Website\App_Data\tools\phantomjs

Then, I copied tools folder into C:\inetpub\wwwroot\habitat.dev.local\App_Data\

PhantomJS-tools-folder-photo

Step 5

It seemed I could test my fix. I did the following:

  • Navigated to local Habitat Content Editor
  • Selected a Home item to create a content test

Sitecore-habitat-content-editor-photo

  • I clicked “Create a test” link. I chose preview, and the start test modal window appeared with all the displayed previews! Wow, this is a real victory!
    Sitecore-preview-test-photo

Some Facts I Have Learned about the PhantomJS Tool

  • By default, generated screenshots are stored into the temp/screenshots folder. You should check this folder if you have similar problems.

Sitecore-test-screenshots-photo

  • PhantomJS settings are configured in the \App_Config\Sitecore\ContentTesting\Sitecore.ContentTesting.config patch file, e.g. you can set up a folder where this tool will be located.

PhantomJS-settings-photo

Important Note from Sitecore

If you want to put restrictions on access to the PhantomJS executable file, you should place a data folder outside the root folder, creating a patch for the tempFolder variable.

Example:

<sitecore database=“SqlServer” xmlns:patch=“http://www.sitecore.net/xmlconfig/
xmlns:role=“http://www.sitecore.net/xmlconfig/role/”
xmlns:security=“http://www.sitecore.net/xmlconfig/security/”>  
<sc.variable name=“tempFolder” value=“/data” /></sitecore>

What Concerns Security

Generated screenshots are used in the UI and emails, thus this functionality is not required on content delivery servers. To disable this functionality, you should do the following:

  • Remove the $(dataFolder)\tools\phantomjs folder, including the phantomjs.exe executable file.
  • Disable the getScreenshotForUrl pipeline that launches thePhantomJS process. To disable thegetScreenshotForUrl pipeline, create a patch file that disables it in the Sitecore.ContentTesting.config configuration file.

Hope this blog post helps you! That is all for today — happy coding, dear Sitecorians!

Rating: 5.0/5. From 3 votes. Show votes.
Please wait...

About the author

Vadzim Papko
Vadzim Papko

Vadzim Papko is a Sitecore enthusiast, a senior Sitecore and .Net developer at SaM Solutions. Adhering to the principles of non-stop self-development, he devotes himself to Sitecore innovation and popularization. A certified Sitecore 9 and Xamarin developer. Find him on twitter: @knopikmag.