diff --git a/helpers/config-node.js b/helpers/config-node.js
index 3d0b05a..6f87148 100644
--- a/helpers/config-node.js
+++ b/helpers/config-node.js
@@ -3,6 +3,7 @@ import fs from 'fs-extra'
import pkg from '~/package.json'
import { getSiteUrl } from '~/helpers/url.js'
+import { getRouteType } from '~/helpers/app-derived.js'
export const siteUrl = getSiteUrl()
@@ -232,6 +233,10 @@ export class PageHead {
return this.pageUrl.toString()
}
+ get routeType () {
+ return getRouteType( this.pathname )
+ }
+
get defaultMeta () {
return nuxtHead.meta
}
@@ -310,14 +315,22 @@ export class PageHead {
].join('')
}
+
get structuredDataMarkup () {
- // console.log( 'this.structuredData', this.structuredData )
+ // console.log( 'this.routeType', this.routeType, this.pathname )
- if ( this.structuredData === null ) return ''
+ const hasStructuredData = this.structuredData !== null
+ // Route is primarily for video
+ const videoRouteType = [ 'tv', 'benchmarks' ].includes( this.routeType )
- const structuredDataJson = JSON.stringify( this.structuredData )
+ if ( hasStructuredData && videoRouteType ) {
+ const structuredDataJson = JSON.stringify( this.structuredData )
- return ``
+ return ``
+ }
+
+
+ return ''
}
get allHeadMarkup () {
diff --git a/helpers/listing-page.js b/helpers/listing-page.js
index 30f5935..16baf07 100644
--- a/helpers/listing-page.js
+++ b/helpers/listing-page.js
@@ -183,10 +183,22 @@ export class ListingDetails {
}
get structuredData () {
+ // Normal video page with app links
if ( this.type === 'video' ) {
return buildVideoStructuredData( this.api, this.api.appLinks )
}
+ // Benchmark page
+ if ( this.hasInitialVideo ) {
+ // Build app links with just the current app
+ const appLinks = [ {
+ name: this.api.name,
+ endpoint: this.api.endpoint
+ } ]
+
+ return buildVideoStructuredData( this.initialVideo, appLinks )
+ }
+
return null
}
diff --git a/test/listings/index.js b/test/listings/index.js
index 942fff6..9b7cdb3 100644
--- a/test/listings/index.js
+++ b/test/listings/index.js
@@ -40,7 +40,7 @@ const listingsCases = {
endpoint: '/app/expressvpn/benchmarks/',
apiEndpointPath: '/api/app/expressvpn.json',
expectInitialVideo: true,
- shouldHaveVideoStucturedData: false
+ shouldHaveVideoStucturedData: true
},
// Express VPN Benchmarks
@@ -193,11 +193,21 @@ test( 'Listings with videos have structured data', async t => {
for ( const [ caseEndpoint, listingCase ] of listingCaseEntries ) {
const listingDetails = listingsDetails[ caseEndpoint ]
+ const listingPageHead = new PageHead( {
+ ...listingDetails.headOptions,
+ pathname: caseEndpoint
+ })
// Stop here if we're not expecting Video Structured Data
- if ( !listingCase.shouldHaveVideoStucturedData ) continue
+ if ( !listingCase.shouldHaveVideoStucturedData ) {
+
+ // Check that the non-video listing doesn't have video structured data
+ t.assert( !listingPageHead.structuredDataMarkup.includes('VideoObject'), `${ caseEndpoint } has video structured data` )
+
+ continue
+ }
+
- const listingPageHead = new PageHead( listingDetails.headOptions )
// t.log('listingDetails.initialVideo', listingDetails.initialVideo)
// t.log( 'caseEndpoint', caseEndpoint )