7 changed files with 262 additions and 0 deletions
@ -0,0 +1,83 @@ |
|||||||
|
<!doctype html> |
||||||
|
|
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8"> |
||||||
|
|
||||||
|
<title>{{.Name}}</title> |
||||||
|
<meta name="description" content="{{.Summary}}"> |
||||||
|
|
||||||
|
<meta property="og:title" content="{{.Name}}"> |
||||||
|
<meta property="og:site_name" content="{{.Name}}"> |
||||||
|
<meta property="og:url" content="{{.RequestedURL}}"> |
||||||
|
<meta property="og:description" content="{{.Summary}}"> |
||||||
|
<meta property="og:type" content="video.other"> |
||||||
|
<meta property="video:tag" content="{{.TagsString}}"> |
||||||
|
|
||||||
|
<meta property="og:image" content="{{.Thumbnail}}"> |
||||||
|
<meta property="og:image:url" content="{{.Thumbnail}}"> |
||||||
|
<meta property="og:image:alt" content="{{.Image}}"> |
||||||
|
|
||||||
|
<meta property="og:video" content='{{.RequestedURL}}embed/video' /> |
||||||
|
<meta property="og:video:secure_url" content='{{.RequestedURL}}embed/video' /> |
||||||
|
<meta property="og:video:height" content="315" /> |
||||||
|
<meta property="og:video:width" content="560" /> |
||||||
|
<meta property="og:video:type" content="text/html" /> |
||||||
|
<meta property="og:video:actor" content="{{.Name}}" /> |
||||||
|
|
||||||
|
<meta property="twitter:title" content="{{.Name}}"> |
||||||
|
<meta property="twitter:url" content="{{.RequestedURL}}"> |
||||||
|
<meta property="twitter:description" content="{{.Summary}}"> |
||||||
|
<meta property="twitter:image" content="{{.Image}}"> |
||||||
|
<meta property="twitter:card" content="player" /> |
||||||
|
<meta property="twitter:player" content='{{.RequestedURL}}embed/video' /> |
||||||
|
<meta property="twitter:player:width" content="560" /> |
||||||
|
<meta property="twitter:player:height" content="315" /> |
||||||
|
|
||||||
|
<link rel="apple-touch-icon" sizes="57x57" href="/img/favicon/apple-icon-57x57.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="60x60" href="/img/favicon/apple-icon-60x60.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="72x72" href="/img/favicon/apple-icon-72x72.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="76x76" href="/img/favicon/apple-icon-76x76.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="114x114" href="/img/favicon/apple-icon-114x114.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="120x120" href="/img/favicon/apple-icon-120x120.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="144x144" href="/img/favicon/apple-icon-144x144.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="152x152" href="/img/favicon/apple-icon-152x152.png"> |
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-icon-180x180.png"> |
||||||
|
<link rel="icon" type="image/png" sizes="192x192" href="/img/favicon/android-icon-192x192.png"> |
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png"> |
||||||
|
<link rel="icon" type="image/png" sizes="96x96" href="/img/favicon/favicon-96x96.png"> |
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png"> |
||||||
|
<link rel="manifest" href="/manifest.json"> |
||||||
|
|
||||||
|
<link rel="authorization_endpoint" href="/api/auth/provider/indieauth"> |
||||||
|
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff"> |
||||||
|
<meta name="msapplication-TileImage" content="/img/favicon/ms-icon-144x144.png"> |
||||||
|
<meta name="theme-color" content="#ffffff"> |
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
<h1>{{.Name}}</h1> |
||||||
|
|
||||||
|
<center> |
||||||
|
<img src="{{.Thumbnail}}" width=10% /> |
||||||
|
</center> |
||||||
|
|
||||||
|
<h3>{{.Summary}}</h3> |
||||||
|
|
||||||
|
{{range .Tags}} |
||||||
|
<li>{{.}}</li> |
||||||
|
{{end}} |
||||||
|
|
||||||
|
<br/> |
||||||
|
|
||||||
|
<h3>Links for {{.Name}}:</h3> |
||||||
|
|
||||||
|
{{range .SocialHandles}} |
||||||
|
<li><a href="{{.URL}}">{{.Platform}}</a></li> |
||||||
|
{{end}} |
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,48 @@ |
|||||||
|
const listenForErrors = require('./lib/errors.js').listenForErrors; |
||||||
|
|
||||||
|
describe('Video embed page', () => { |
||||||
|
|
||||||
|
async function getMetaTagContent(property) { |
||||||
|
const selector = `meta[property="${property}"]`; |
||||||
|
|
||||||
|
const tag = await page.evaluate((selector) => { |
||||||
|
return document.head.querySelector(selector).getAttribute("content"); |
||||||
|
}, selector); |
||||||
|
return tag; |
||||||
|
} |
||||||
|
|
||||||
|
beforeAll(async () => { |
||||||
|
await page.setViewport({ width: 1080, height: 720 }); |
||||||
|
listenForErrors(browser, page); |
||||||
|
page.setUserAgent( |
||||||
|
"Mastodon" |
||||||
|
); |
||||||
|
await page.goto('http://localhost:5309'); |
||||||
|
}); |
||||||
|
|
||||||
|
afterAll(async () => { |
||||||
|
await page.waitForTimeout(3000); |
||||||
|
await page.screenshot({ path: 'screenshots/screenshot_bots_share_search_scrapers.png', fullPage: true }); |
||||||
|
}); |
||||||
|
|
||||||
|
it('should have rendered the simple bot accessible html page', async () => { |
||||||
|
await page.waitForSelector('h1'); |
||||||
|
await page.waitForSelector('h3'); |
||||||
|
|
||||||
|
const ogVideo = await getMetaTagContent('og:video'); |
||||||
|
expect(ogVideo).toBe('http://localhost:5309/embed/video'); |
||||||
|
|
||||||
|
const ogVideoType = await getMetaTagContent('og:video:type'); |
||||||
|
expect(ogVideoType).toBe('text/html'); |
||||||
|
|
||||||
|
// When stream is live the thumbnail is provided as the image.
|
||||||
|
const ogImage = await getMetaTagContent('og:image'); |
||||||
|
expect(ogImage).toBe('http://localhost:5309/thumbnail.jpg'); |
||||||
|
|
||||||
|
const twitterUrl = await getMetaTagContent('twitter:url'); |
||||||
|
expect(twitterUrl).toBe('http://localhost:5309/'); |
||||||
|
|
||||||
|
const twitterImage = await getMetaTagContent('twitter:image'); |
||||||
|
expect(twitterImage).toBe('http://localhost:5309/logo/external'); |
||||||
|
}); |
||||||
|
}); |
Loading…
Reference in new issue