The test array
When you retrieve scan results, the response includes a tests array. Each entry in that array corresponds to one of the tests documented below, with a name, value, result, and attributes.
Display tests
Section titled “Display tests”This section lists every display test that Advalidation can run against a creative. Each test checks one aspect of the creative and returns pass, fail, or warn.
Test_Display_AdDimensions
Section titled “Test_Display_AdDimensions”Checks if the creative’s pixel dimensions match one of the accepted ad unit sizes defined in the ad specification.
| Result | Condition |
|---|---|
| pass | Dimensions match an accepted size |
| fail | Dimensions do not match any accepted size |
Example response
Test_Display_AdVerificationTags
Section titled “Test_Display_AdVerificationTags”Detects ad verification vendor tags (DoubleVerify, IAS, MOAT, etc.) and checks whether they are set to monitor or block delivery. Blocking tags can cause impression discrepancies between your ad server and the advertiser’s reporting.
| Result | Condition |
|---|---|
| pass | Only monitoring tags detected, or tags match the ad spec policy |
Example response
Test_Display_AnimationLength
Section titled “Test_Display_AnimationLength”Checks if the ad’s animation stops within the allowed duration. Long-running animations distract visitors and violate most publisher specifications.
| Result | Condition |
|---|---|
| pass | Animation stops within the threshold (e.g., 15 seconds) |
| fail | Animation runs longer than allowed |
Example response
Test_Display_Audio
Section titled “Test_Display_Audio”Checks if the creative plays audio before user interaction. Most publisher specs prohibit auto-playing audio.
| Result | Condition |
|---|---|
| pass | No audio detected before hover |
| fail | Audio plays automatically |
Example response
Test_Display_Border
Section titled “Test_Display_Border”Checks if the creative has a distinct border that visually separates it from page content. This is a common publisher requirement to prevent ads from blending into editorial content.
| Result | Condition |
|---|---|
| pass | Distinct border detected |
| warn | No distinct border detected |
Example response
Test_Display_ClickRedirects
Section titled “Test_Display_ClickRedirects”Counts the number of redirects between clicking the ad and reaching the landing page. Excessive redirects cause visitors to drop off before arriving.
| Result | Condition |
|---|---|
| pass | Redirect count within limit (e.g., 6 max) |
| fail | Too many redirects |
Example response
Test_Display_CodeRules
Section titled “Test_Display_CodeRules”Validates the creative’s source code against custom rules defined in the ad specification. These rules can check for prohibited code patterns, required scripts, or other code-level requirements.
| Result | Condition |
|---|---|
| pass | Code passes all custom validation rules |
| fail | Code violates one or more rules |
Example response
Test_Display_Connections
Section titled “Test_Display_Connections”Checks the creative’s external connections against an approved vendor list defined in the ad specification. Connections to unapproved domains are flagged.
| Result | Condition |
|---|---|
| pass | All connections match approved vendors |
| fail | One or more connections violate the rules |
Example response
Test_Display_Cookies
Section titled “Test_Display_Cookies”Counts the number of cookies set by the creative and checks against the allowed limit.
| Result | Condition |
|---|---|
| pass | Cookie count within limit |
| fail | Too many cookies |
Example response
Test_Display_Cpu
Section titled “Test_Display_Cpu”Measures the creative’s CPU usage as average and peak percentages. High CPU usage drains battery life and degrades the browsing experience, especially on mobile devices.
| Result | Condition |
|---|---|
| pass | Both average and peak within limits |
| fail | Average or peak exceeds the threshold |
Example response
Test_Display_ExternalRequests
Section titled “Test_Display_ExternalRequests”Counts the total number of HTTP requests the creative makes and checks against the allowed limit. Fewer requests means faster load times and better viewability.
| Result | Condition |
|---|---|
| pass | Request count within limit |
| fail | Too many requests |
Example response
Test_Display_Filesize
Section titled “Test_Display_Filesize”Checks the total hosted file size of the creative’s assets against the allowed limit. Oversized creatives hurt viewability and user experience.
| Result | Condition |
|---|---|
| pass | File size within limit |
| fail | File size exceeds limit |
Example response
Test_Display_FlashLso
Section titled “Test_Display_FlashLso”Checks if the creative uses Flash local shared objects (Flash cookies). These persist after clearing browser cookies and are generally prohibited.
| Result | Condition |
|---|---|
| pass | No Flash cookies detected |
| fail | Flash cookies detected |
Example response
Test_Display_GdprConsent
Section titled “Test_Display_GdprConsent”Checks if the creative’s source code contains the GDPR consent macro, which is required for GDPR-compliant ad delivery in applicable regions.
| Result | Condition |
|---|---|
| pass | GDPR consent macro detected |
| fail | Macro not found |
Example response
Test_Display_HeavyAdInterventions
Section titled “Test_Display_HeavyAdInterventions”Checks if the creative would trigger Chrome’s heavy ad intervention, which removes ads that consume excessive CPU or network resources. Chrome considers an ad “heavy” if it uses more than 4 MB of network, more than 15 seconds of CPU in any 30-second window, or more than 60 seconds of CPU total.
| Result | Condition |
|---|---|
| pass | Resource usage within Chrome’s limits |
| fail | One or more thresholds exceeded |
Example response
Test_Display_LandingPage
Section titled “Test_Display_LandingPage”Verifies that the ad’s landing page URL resolves to a working page. Catches broken URLs, malformed click macros, and redirect failures before launch.
| Result | Condition |
|---|---|
| pass | Landing page returns HTTP 200 |
| fail | Landing page returns an error or does not resolve |
Example response
Test_Display_LocalStorage
Section titled “Test_Display_LocalStorage”Checks if the creative uses browser local storage. Local storage persists data that cannot be cleared through standard cookie controls, making it a privacy concern.
| Result | Condition |
|---|---|
| pass | No local storage usage detected |
| fail | Local storage objects detected |
Example response
Test_Display_MouseClick
Section titled “Test_Display_MouseClick”Verifies that click tracking works via the click macro. This ensures the publisher can count clicks and attribute conversions.
| Result | Condition |
|---|---|
| pass | Click tracking via macro is working |
| fail | Click tracking is not functioning |
Example response
Test_Display_Ssl
Section titled “Test_Display_Ssl”Checks that all network requests made by the creative use HTTPS. Non-HTTPS requests can trigger mixed content warnings and be blocked by browsers.
| Result | Condition |
|---|---|
| pass | All requests use HTTPS |
| fail | One or more non-HTTPS requests detected |
Example response
Test_Display_TagLoadInitial
Section titled “Test_Display_TagLoadInitial”Measures the total file size of assets loaded during the initial load phase (before the browser’s load event). Keeping initial load lightweight ensures the ad doesn’t compete with page content for bandwidth.
| Result | Condition |
|---|---|
| pass | Initial load size within limit |
| fail | Initial load size exceeds limit |
Example response
Test_Display_TagLoadSubload
Section titled “Test_Display_TagLoadSubload”Measures the total file size of assets loaded during the subload phase (after the browser’s load event). Subload has a higher budget than initial load since the page has already rendered.
| Result | Condition |
|---|---|
| pass | Subload size within limit |
| fail | Subload size exceeds limit |
Example response
Test_Display_VisualStart
Section titled “Test_Display_VisualStart”Measures how quickly the creative renders visible content. Slow-loading ads get scrolled past before they are seen, directly impacting viewability metrics and campaign performance.
| Result | Condition |
|---|---|
| pass | Renders within the threshold (e.g., 0.8 seconds) |
| fail | Takes longer than the threshold |
Example response
Video tests
Section titled “Video tests”This section lists every video test that Advalidation can run against a creative. Each test checks one aspect of the video or VAST tag and returns pass or fail.
Mutually exclusive tests
Section titled “Mutually exclusive tests”Some video tests come in pairs — the ad specification determines which variant is active. You will only see one from each pair in a scan response.
| Either | Or | Setting |
|---|---|---|
Test_Video_Resolution | Test_Video_AspectRatio | Dimensions: exact resolution vs. aspect ratio |
Test_Video_TotalBitrate | Test_Video_AudioBitrate + Test_Video_VideoBitrate | Bitrate: total container vs. separate audio/video tracks |
Video file tests
Section titled “Video file tests”These tests check the properties of video media files. They appear on hosted video scans and VAST child media file scans.
Test_Video_AspectRatio
Section titled “Test_Video_AspectRatio”Checks if the video’s aspect ratio matches one of the accepted ratios defined in the ad specification.
| Result | Condition |
|---|---|
| pass | Aspect ratio matches an accepted value |
| fail | Aspect ratio does not match any accepted value |
Example response
Test_Video_AudioAverage
Section titled “Test_Video_AudioAverage”Checks if the average audio loudness is within the allowed range. Uses the R128/LKFS loudness standard.
| Result | Condition |
|---|---|
| pass | Average loudness within the specified range |
| fail | Average loudness outside the allowed range |
Example response
Test_Video_AudioBitrate
Section titled “Test_Video_AudioBitrate”Checks if the audio track bitrate is within the allowed range.
| Result | Condition |
|---|---|
| pass | Audio bitrate within the specified range |
| fail | Audio bitrate outside the allowed range |
Example response
Test_Video_AudioChannels
Section titled “Test_Video_AudioChannels”Checks the number of audio channels in the video file.
| Result | Condition |
|---|---|
| pass | Channel count matches an accepted value |
| fail | Channel count does not match any accepted value |
Example response
Test_Video_AudioCodec
Section titled “Test_Video_AudioCodec”Checks if the audio track codec matches one of the accepted codecs.
| Result | Condition |
|---|---|
| pass | Audio codec matches an accepted value |
| fail | Audio codec does not match any accepted value |
Example response
Test_Video_AudioPeak
Section titled “Test_Video_AudioPeak”Checks if the true peak audio level is within the allowed maximum.
| Result | Condition |
|---|---|
| pass | Peak level within the allowed maximum |
| fail | Peak level exceeds the allowed maximum |
Example response
Test_Video_AudioSampleRate
Section titled “Test_Video_AudioSampleRate”Checks if the audio sample rate matches one of the accepted values.
| Result | Condition |
|---|---|
| pass | Sample rate matches an accepted value |
| fail | Sample rate does not match any accepted value |
Example response
Test_Video_Boxing
Section titled “Test_Video_Boxing”Detects letterboxing (black bars top/bottom) or pillarboxing (black bars left/right) in the video. Boxing indicates the video content doesn’t fill the declared resolution.
| Result | Condition |
|---|---|
| pass | No boxing detected |
| fail | Letterboxing or pillarboxing detected |
Example response
Test_Video_ChromaSubsampling
Section titled “Test_Video_ChromaSubsampling”Checks if the chroma subsampling format matches one of the accepted values.
| Result | Condition |
|---|---|
| pass | Chroma subsampling matches an accepted value |
| fail | Chroma subsampling does not match any accepted value |
Example response
Test_Video_Codec
Section titled “Test_Video_Codec”Checks if the video codec matches one of the accepted codecs.
| Result | Condition |
|---|---|
| pass | Video codec matches an accepted value |
| fail | Video codec does not match any accepted value |
Example response
Test_Video_ContainerFormat
Section titled “Test_Video_ContainerFormat”Checks if the video container format matches one of the accepted formats.
| Result | Condition |
|---|---|
| pass | Container format matches an accepted value |
| fail | Container format does not match any accepted value |
Example response
Test_Video_DuplicateFrames
Section titled “Test_Video_DuplicateFrames”Detects repeated duplicate frames in the video, which can indicate encoding issues or artificially inflated duration.
| Result | Condition |
|---|---|
| pass | No repeated duplicate frames detected |
| fail | Repeated duplicate frames detected |
Example response
Test_Video_Duration
Section titled “Test_Video_Duration”Checks if the video duration is within the allowed range. Reports both video track and audio track durations.
| Result | Condition |
|---|---|
| pass | Duration within the allowed range |
| fail | Duration outside the allowed range |
Example response
Test_Video_Filesize
Section titled “Test_Video_Filesize”Checks if the video file size is within the allowed range.
| Result | Condition |
|---|---|
| pass | File size within the allowed range |
| fail | File size outside the allowed range |
Example response
Test_Video_Fps
Section titled “Test_Video_Fps”Checks if the video frame rate matches one of the accepted values.
| Result | Condition |
|---|---|
| pass | Frame rate matches an accepted value |
| fail | Frame rate does not match any accepted value |
Example response
Test_Video_Interlace
Section titled “Test_Video_Interlace”Detects interlaced frames in the video by analyzing the interlace frame ratio. Interlaced content causes visual artifacts on progressive displays.
| Result | Condition |
|---|---|
| pass | Interlace ratio within allowed limits |
| fail | Interlace ratio exceeds the threshold |
Example response
Test_Video_Resolution
Section titled “Test_Video_Resolution”Checks if the video resolution matches one of the accepted resolutions defined in the ad specification.
| Result | Condition |
|---|---|
| pass | Resolution matches an accepted value |
| fail | Resolution does not match any accepted value |
Example response
Test_Video_ScanType
Section titled “Test_Video_ScanType”Checks if the video scan type (progressive or interlaced) matches one of the accepted values.
| Result | Condition |
|---|---|
| pass | Scan type matches an accepted value |
| fail | Scan type does not match any accepted value |
Example response
Test_Video_Timecode
Section titled “Test_Video_Timecode”Checks if the video contains timecode information and whether it matches accepted formats.
| Result | Condition |
|---|---|
| pass | Timecode matches an accepted format, or any format is accepted |
| fail | Timecode does not match any accepted format |
Example response
Test_Video_TotalBitrate
Section titled “Test_Video_TotalBitrate”Checks if the total container bitrate (audio + video combined) is within the allowed range.
| Result | Condition |
|---|---|
| pass | Total bitrate within the allowed range |
| fail | Total bitrate outside the allowed range |
Example response
Test_Video_VastPropertyDiscrepancy
Section titled “Test_Video_VastPropertyDiscrepancy”Compares properties declared in the VAST XML (such as codec, dimensions, and bitrate) against the actual properties of the downloaded video file. Discrepancies between declared and actual values are flagged.
| Result | Condition |
|---|---|
| pass | No discrepancies between declared and actual properties |
| fail | One or more discrepancies detected |
Example response
Test_Video_VideoBitrate
Section titled “Test_Video_VideoBitrate”Checks if the video track bitrate is within the allowed range.
| Result | Condition |
|---|---|
| pass | Video bitrate within the allowed range |
| fail | Video bitrate outside the allowed range |
Example response
VAST tag tests
Section titled “VAST tag tests”These tests validate the VAST XML structure and tag behavior. They appear on VAST parent scans and variation scans.
Test_Video_AdVerificationTags
Section titled “Test_Video_AdVerificationTags”Detects ad verification vendor tags in the VAST response and checks whether they comply with the ad specification policy.
| Result | Condition |
|---|---|
| pass | Tags comply with the policy, or no tags detected when none are allowed |
| fail | Tags violate the ad specification policy |
Example response
Test_Video_VastApiProperties
Section titled “Test_Video_VastApiProperties”Checks for VPAID or other API frameworks in the VAST response and validates against the ad specification’s framework policy.
| Result | Condition |
|---|---|
| pass | Detected frameworks match the policy, or none detected when none are required |
| fail | Framework requirements not met |
Example response
Test_Video_VastConnectionRules
Section titled “Test_Video_VastConnectionRules”Validates the VAST tag’s external connections against an approved vendor list defined in the ad specification. All URLs referenced in the VAST XML are checked.
| Result | Condition |
|---|---|
| pass | All connections match approved vendors |
| fail | One or more connections violate the rules |
Example response
Test_Video_VastCreativeCount
Section titled “Test_Video_VastCreativeCount”Counts the number of <Creative> elements in the VAST XML. Multi-creative VAST responses can cause unexpected ad behavior.
| Result | Condition |
|---|---|
| pass | Creative count within the allowed limit |
| fail | Too many creatives in the VAST response |
Example response
Test_Video_VastDurationDiscrepancy
Section titled “Test_Video_VastDurationDiscrepancy”Checks whether the duration declared in the VAST XML matches the actual duration of the media files. Discrepancies can cause player issues.
| Result | Condition |
|---|---|
| pass | No duration discrepancies detected |
| fail | Duration discrepancies found between XML and media files |
Example response
Test_Video_VastNonHttps
Section titled “Test_Video_VastNonHttps”Checks if the VAST XML contains any non-HTTPS URLs. Mixed content can be blocked by browsers and cause tracking failures.
| Result | Condition |
|---|---|
| pass | All URLs use HTTPS |
| fail | One or more non-HTTPS URLs detected |
Example response
Test_Video_VastRequiredMediaFiles
Section titled “Test_Video_VastRequiredMediaFiles”Checks if the VAST XML contains all required media file definitions as specified in the ad specification. Media file definitions match on codec, dimensions, and bitrate.
| Result | Condition |
|---|---|
| pass | All required media file definitions matched |
| fail | One or more required definitions not matched |
Example response
Test_Video_VastSkipDetection
Section titled “Test_Video_VastSkipDetection”Checks if the VAST tag includes skip functionality and whether it matches the ad specification’s skip policy.
| Result | Condition |
|---|---|
| pass | Skip behavior matches the policy |
| fail | Skip behavior does not match the policy |
Example response
Test_Video_VastValidateXml
Section titled “Test_Video_VastValidateXml”Validates the VAST XML against the VAST schema. Catches syntax errors, missing required elements, and structural issues.
| Result | Condition |
|---|---|
| pass | VAST XML is valid |
| fail | VAST XML contains validation errors |
Example response
Test_Video_VastVariations
Section titled “Test_Video_VastVariations”Detects whether a VAST URL returns different content on subsequent loads. Variations indicate the tag serves rotating or dynamic content.
| Result | Condition |
|---|---|
| pass | Variation count within the allowed limit |
| fail | Variation count exceeds the allowed limit |
Example response
Test_Video_VastVersion
Section titled “Test_Video_VastVersion”Checks if the VAST version matches one of the accepted versions.
| Result | Condition |
|---|---|
| pass | VAST version matches an accepted value |
| fail | VAST version does not match any accepted value |