7 changed files with 262 additions and 0 deletions
@ -0,0 +1,83 @@
@@ -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 @@
@@ -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