Skip to content

Commit 36fc18f

Browse files
Add person and talks (update theme)
1 parent 9fcbf18 commit 36fc18f

4 files changed

Lines changed: 128 additions & 1 deletion

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,6 @@ test-results/
137137
playwright-report/
138138
test-results/
139139
playwright-report/
140+
141+
tests/*.json
142+
tests/results.xml

tests/person.spec.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Import the required dependencies
2+
import fs from 'fs';
3+
import { test, expect } from '@playwright/test';
4+
5+
let rawData = fs.readFileSync('tests/person-tests.json');
6+
let testData = JSON.parse(rawData);
7+
8+
for (const record of testData) {
9+
test(`${record.filename} - Person Metadata Check`, async ({ page }) => {
10+
// Arrange
11+
// N/A
12+
const baseUrl = record.url.replace(record.filename, "")
13+
14+
// Act
15+
/* Tak */
16+
await page.goto(record.url);
17+
const personMetadata = await page.locator('id=meta-person');
18+
const personObject = await personMetadata.evaluate(node => JSON.parse(node.innerHTML));
19+
20+
/* Organization */
21+
const organizationMetadata = await page.locator('id=meta-organisation');
22+
const organizationObject = await organizationMetadata.evaluate(node => JSON.parse(node.innerHTML));
23+
24+
/* Website */
25+
const websiteMetadata = await page.locator('id=meta-website');
26+
const websiteObject = await websiteMetadata.evaluate(node => JSON.parse(node.innerHTML));
27+
28+
/* Breadcrumbs */
29+
const breadcrumbsMetadata = await page.locator('id=meta-breadcrumbs');
30+
const breadcrumbsObject = await breadcrumbsMetadata.evaluate(node => JSON.parse(node.innerHTML));
31+
32+
// Assert
33+
/* Talk */
34+
expect(personObject["@context"]).toBe("http://schema.org");
35+
expect(personObject["@type"]).toBe("Person");
36+
expect(personObject["name"]).toBe(record.title);
37+
expect(personObject["url"]).toBe(record.url);
38+
expect(personObject["description"]).toBe(record.description);
39+
40+
/* Organization */
41+
expect(organizationObject["@context"]).toBe("https://schema.org");
42+
expect(organizationObject["@type"]).toBe("Organization");
43+
expect(organizationObject["url"]).toBe(baseUrl);
44+
45+
// Add an assertion on the logo here
46+
47+
/* Website */
48+
expect(websiteObject["@context"]).toBe("http://schema.org");
49+
expect(websiteObject["@type"]).toBe("WebSite");
50+
expect(websiteObject["name"]).toBe(record.title);
51+
expect(websiteObject["sameAs"][0]).toBe("https://twitter.com/reddobowen");
52+
expect(websiteObject["sameAs"][1]).toBe("https://github.com/CloudWithChris");
53+
54+
/* Breadcrumbs */
55+
expect(breadcrumbsObject["@context"]).toBe("https://schema.org");
56+
expect(breadcrumbsObject["@type"]).toBe("BreadcrumbList");
57+
expect(breadcrumbsObject["itemListElement"][0]["item"]).toBe(baseUrl);
58+
expect(breadcrumbsObject["itemListElement"][0]["item"]).toBe(baseUrl);
59+
expect(breadcrumbsObject["itemListElement"][1]["name"]).toBe("People");
60+
expect(breadcrumbsObject["itemListElement"][2]["name"]).toBe(record.title);
61+
});
62+
}

tests/talk.spec.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Import the required dependencies
2+
import fs from 'fs';
3+
import { test, expect } from '@playwright/test';
4+
5+
let rawData = fs.readFileSync('tests/talk-tests.json');
6+
let testData = JSON.parse(rawData);
7+
8+
for (const record of testData) {
9+
test(`${record.filename} - Talk Metadata Check`, async ({ page }) => {
10+
// Arrange
11+
// N/A
12+
const baseUrl = record.url.replace(record.filename, "")
13+
14+
// Act
15+
/* Tak */
16+
await page.goto(record.url);
17+
const talkMetadata = await page.locator('id=meta-talk');
18+
const talkObject = await talkMetadata.evaluate(node => JSON.parse(node.innerHTML));
19+
20+
/* Organization */
21+
const organizationMetadata = await page.locator('id=meta-organisation');
22+
const organizationObject = await organizationMetadata.evaluate(node => JSON.parse(node.innerHTML));
23+
24+
/* Website */
25+
const websiteMetadata = await page.locator('id=meta-website');
26+
const websiteObject = await websiteMetadata.evaluate(node => JSON.parse(node.innerHTML));
27+
28+
/* Breadcrumbs */
29+
const breadcrumbsMetadata = await page.locator('id=meta-breadcrumbs');
30+
const breadcrumbsObject = await breadcrumbsMetadata.evaluate(node => JSON.parse(node.innerHTML));
31+
32+
// Assert
33+
/* Talk */
34+
expect(talkObject["@context"]).toBe("http://schema.org");
35+
expect(talkObject["@type"]).toBe("Event");
36+
expect(talkObject["name"]).toBe(record.title);
37+
expect(talkObject["url"]).toBe(record.url);
38+
expect(talkObject["description"]).toBe(record.description);
39+
40+
/* Organization */
41+
expect(organizationObject["@context"]).toBe("https://schema.org");
42+
expect(organizationObject["@type"]).toBe("Organization");
43+
expect(organizationObject["url"]).toBe(baseUrl);
44+
45+
// Add an assertion on the logo here
46+
47+
/* Website */
48+
expect(websiteObject["@context"]).toBe("http://schema.org");
49+
expect(websiteObject["@type"]).toBe("WebSite");
50+
expect(websiteObject["name"]).toBe(record.title);
51+
expect(websiteObject["sameAs"][0]).toBe("https://twitter.com/reddobowen");
52+
expect(websiteObject["sameAs"][1]).toBe("https://github.com/CloudWithChris");
53+
54+
/* Breadcrumbs */
55+
expect(breadcrumbsObject["@context"]).toBe("https://schema.org");
56+
expect(breadcrumbsObject["@type"]).toBe("BreadcrumbList");
57+
expect(breadcrumbsObject["itemListElement"][0]["item"]).toBe(baseUrl);
58+
expect(breadcrumbsObject["itemListElement"][0]["item"]).toBe(baseUrl);
59+
expect(breadcrumbsObject["itemListElement"][1]["name"]).toBe("Talks");
60+
expect(breadcrumbsObject["itemListElement"][2]["name"]).toBe(record.title);
61+
});
62+
}

0 commit comments

Comments
 (0)