This is the third blog post aiming to test and compare various VAST implementations and document our finds. We will focus on VAST Wrapper options that control various behaviors in a Wrapper chain.
For the complete battery tests we highly recommend reading: part 1, part 2, part 4.
Quick reminder. A VAST response can return:
- VAST Inline response that contains all the necessary media files and tracking URIs to display and track the ad
- VAST Wrapper response. Basically, a redirect to another URL/third party ad server to serve a VAST. A VAST wrapper might as well point to another VAST wrapper, creating a chain of VAST wrappers that, ultimately, should return a VAST Inline ad
A Wrapper in a chain may instruct the video player:
- to prevent subsequent Wrappers from being served
- what to do with the ads in subsequent Wrappers
- how to fill the empty opportunity placement when a Wrapper represents an Ad in a Pod of ads that will result in a no-ad response
Three attributes (and their associated IAB VAST 3.0 definitions) are of major importance:
- fallbackOnNoAd: a Boolean value that provides instruction for using an available Ad when the requested VAST response returns no ads. If true, the video player should select from any stand-alone ads available. If false and the Wrapper represents an Ad in a Pod, the video player should move on to the next Ad in a Pod; otherwise, the video player can follow through at its own discretion where no-ad responses are concerned.
- allowMultipleAds: a Boolean value that identifies whether multiple ads are allowed in the requested VAST response. If true, both Pods and stand-alone ads are allowed. If false, only the first stand-alone Ad (i.e. no sequence value for the Ad) in the requested VAST response is allowed.
- followAdditionalWrappers: a Boolean (True/False) value that identifies whether subsequent wrappers after a requested VAST response is allowed. If false, any Wrappers received (i.e. not an Inline VAST response) should be ignored. Otherwise, VAST Wrappers received should be accepted.
Wrappers have various tracking events fired through tracking pixels. Video players should store all the tracking pixels contained within each VAST Wrapper response, and trigger them on the appropriate time, during the Vast Inline Ad display.
Now, let’s create several VAST 3.0 tests to showcase Wrapper options expected behaviors. JW Player documentation states support for VAST 3.0.
1. fallbackOnNoAd
If true, fallbackOnNoAd attribute on a Wrapper inside and Ad Pod, specifies that, in the case of a no-ad response, its place in the Ad Pod may be filled by any standalone ads available.
Example VAST resource:
Inline Ad standalone
Wrapper Ad sequence = 1 (fallbackOnNoAd=”true”)
Empty vast
Inline Ad sequence = 2
Expected behavior: Video players, upon receiving no ad response on first Pod Ad slot, should use the standalone ad for fill.
Upon testing this VAST resource, JW Player:
- completely ignores fallbackOnNoAd = true attribute on Wrapper
- plays only the last ad in the Ad Pod
- ignores the standalone Ad and does not use it for Ad Pod fill
Same test, Varrando Player:
- correctly behaves on fallbackOnNoAd = true attribute on Wrapper
- fills Ad Pod with standalone ad
- plays Ad Pod
Conclusion: JW Player fails to take into account the fallbackOnNoAd attribute.
2. allowMultipleAds
The option allowMultipleAds, if false, dictates that only the first standalone ad in the Inline Ad should be considered for playback.
VAST Wrapper Chain:
- Wrapper Ad (allowMultipleAds=”false”)
- Inline Ad
– Ad sequence = 1
– Ad sequence = 2
– Ad standalone
Expected behavior: We have in the Inline Ad response an Ad-Pod followed by an individual Ad. According to the VAST specs, video players should ignore the Ad Pod and consider only the standalone Ad.
Upon testing this VAST resource, JW Player:
- completely ignores allowMultipleAds = false attribute on Wrapper
- plays the Ad Pod (incorrect behavior)
- ignores the standalone Ad
Same test, Varrando Player:
- correctly behaves on allowMultipleAds = false attribute on Wrapper
- plays the standalone Ad (expected behavior)
Conclusion: JW Player completely ignores IAB specs regarding VAST Wrapper attribute allowMultipleAds.
3. followAdditionalWrappers
Let us consider the next VAST Wrapper chain:
- Wrapper Ad 1 (followAdditionalWrappers=”false”)
- Wrapper Ad 2 (followAdditionalWrappers=”false”)
- Inline Ad
Expected behavior: Video players should ignore any subsequent Wrappers after Wrapper 1.
Upon testing this VAST resource, JW Player:
- completely ignores followAdditionalWrappers = false attribute on both Wrapper 1 and 2
- runs the inline ad (incorrect behavior)
- tracks Wrapper2 creative events (incorrect behavior)
Same test, Varrando Player:
- correctly behaves on followAdditonalWrappers = false attribute on Wrapper 1
- does not follow any Wrappers after Wrapper 1
Conclusion: JW Player completely ignores IAB specs regarding VAST Wrapper attribute followAdditionalWrappers.